Changelog
- The admin queue gets quick-view tabs — All, Pending, Flagged, Duplicates, Failed, Archived — each with a live count
- Active filters show as removable chips
- The full filter panel folds away when you are not using it, and opens when filters are active
- Filters apply as soon as you change them; the Filter button stays for the old habit
- The checker now points out that flagged foods can get exceptions — check with the admin before you buy
- Order-page swap suggestions say the same, as a small footnote
- The "Check food" page now suggests a swap under every item it flags — something similar that would be covered
- Order pages answer "What could I have bought instead?" for the flagged items, just a click away
- Admins see the same suggestions, to help advise
- The changelog now shows the latest updates up front
- Older updates are tucked into an expandable archive at the bottom
- Opening a receipt no longer jumps to the conversation — the page stays where it is
- You're still taken to the newest message while you're asking, and when the answer lands
Older updates (23)
- Questions and answers now show who's talking: your name, "(admin)" for admins, and the answering AI model
- The conversation loads at its newest message, and the ask box sits at the bottom of the chat
- The first question on a receipt no longer reloads the page — it answers in place like the rest
- The admin queue is paged (50 per page) and archived receipts stay out of your way; tick "archived" to see them
- Buttons showed their colors only while you hovered or held them — at rest they looked grey and disabled. Fixed: Approve, Ask, Save amounts and friends look pressable again
- Admins can correct item amounts the receipt AI misread — the math check and reimbursement recompute on save
- Allowing an item keeps you where you were on the page instead of jumping to the top
- Buttons show a spinner while they work, so it's always clear when something is happening
- Sole-action buttons (Ask, Save notes, Filter, …) are now green; grey is reserved for disabled buttons
- Asking about an order answers right on the page — no waiting for a reload
- Conversations read top-to-bottom, oldest first
- "Check food" now checks a whole list at once: paste up to 30 items, one per line, and get a verdict for each
- Order lists show each order's reimbursable amount
- Asking about an order now shows the assistant the order's photos too, and keeps working when the primary LLM is down
- Admins can ask the assistant about any order from the admin order page
- Rejecting an order now requires a reason, and the reason is shown to the order's owner
- New "Check food" page: ask before you buy whether an item will be reimbursed
- The admin queue keeps your filters after approving or rejecting from an order page
- Orders whose analysis fail are marked "failed" with the error shown on the page, instead of waiting forever
- Fixed the photo viewer covering order pages with a dark overlay on load
- Styles and scripts reload when the app updates, so the new list thumbnails render small as intended instead of full size on devices with a cached stylesheet
- A re-analysis that could not match any document no longer leaves the order pending forever — the order keeps its record with a note for review instead
- Duplicate checks now rank claims by when each analysis happened, so a payment recovered from an older upload is still flagged as a duplicate of an order paid in between
- Admins can dismiss a duplicate warning after review (and undo), and the dismissal survives re-analysis
- Store names match for re-analysis ignoring decorations like "(Order #12345)"
- Order lists show a thumbnail of the first photo
- Order lists refresh themselves while one of their orders is still being analyzed
- Near-identical photos with different payment codes or stores are no longer rejected as duplicates — and every duplicate banner now shows which photo or code matched, with a link to the original order
- A photo containing store receipts AND a payment slip splits into one order per document, and each order shows only the photos its document was read from
- Re-analyzing a split order can no longer create duplicate sibling orders; stale ones are marked for review instead
- Split orders say which document of the photo they are and link to their siblings
- Photos open in an overlay with prev/next and a close button instead of a new tab
- The admin queue keeps your filters when you go into an order and come back
- Archive old orders from your home screen — they stay available to the admin queue
- A photo containing several payment slips — card approvals, M-Pesa messages — is now split into one order per payment
- Each split order keeps its own amount, payee and transaction code
- When two orders shared the same payment code and were analyzed together, both were rejected as duplicates of each other — now only the later one is
- A rejected order no longer blocks new orders that reuse its receipt photo or payment code
- A second backup AI provider now catches outages — receipts keep getting analyzed even when both the main and first backup providers are down
- Receipt analysis now automatically switches to a backup AI provider when the main one is unavailable — no more failed analyses during outages
- On the Payouts page, copy each person's total with one tap and paste it straight into your payment app
- Mark a single person as paid — no need to mark everyone at once
- In the order queue, tick multiple orders and approve them all in one action
- A photo already uploaded on another order is caught even after resizing or recompression — near-identical copies are auto-rejected like exact duplicates
- iPhone photos (.heic) now get real thumbnails and can be read by the receipt AI
- Orders left without a description get one written for you from the receipt analysis — your own words are never overwritten
- Upload Word documents (.docx) — they are converted to PDF automatically and the original stays downloadable from the order page
- PDFs and converted documents now show a thumbnail image of the first page instead of a placeholder
- Non-grocery items are allowed by default — only the restricted categories list and explicit admin rules get flagged
- Order pages now load small thumbnails instead of full-size photos — pages open much faster on the first visit
- Tap a photo to still see the original in full quality
- Receipt photos are read for printed M-Pesa codes, not just payment screenshots
- A receipt reusing a code from any earlier order is auto-rejected — even re-captured, resized, or cropped photos
- Faster page loads: photos and site files are kept in your browser's cache instead of re-downloading every visit
- Duplicate claims are unmistakable: a red banner on the order, automatic rejection, and a duplicate chip and filter in the admin queue
- New Payouts page: approved receipts totalled per person — pay everyone, then mark them all paid in one go
- Paid receipts are locked: no re-analysis or decision changes until you unmark them
- The same receipt photo uploaded on a second order is now flagged for review
- The same photo attached twice to one order is flagged too
- Admin Users page: add accounts and reset passwords right from the website
- One-time passwords are generated and shown once, or choose your own
- receipts-adduser command on pretzel for scripted user management
- Snap or upload receipts (camera, gallery, PDF) — AI reads the items and checks the math
- Paste M-Pesa messages as payment proofs (honor system)
- Non-reimbursable items flagged automatically; admin can allow per-item exceptions
- Reimbursement breakdown: products, prorated taxes, delivery
- Admin queue: review, approve/reject, notes, Q&A
- Restriction rules with a plain-language pattern generator
- Re-analyze applies new rules retroactively
- Installable on your home screen (PWA); share receipts straight into the app