Recall Desk is for people who want to know when something they own has been recalled. It checks your purchases against US consumer product, food and drug recalls, emails you on a match, and drafts the claim for you to approve. Convex runs the backend, OpenAI reads receipts and judges matches, Firecrawl reads remedy pages, and AgentMail carries the email.
Why it exists
Tony built it solo for the Convex All Gas Hackathon, held August 25 to September 22, 2026. The brief asked for everyday apps, with the sponsors' tools doing real work. Every line was written for the event, starting August 30, with Claude Code as the coding agent.
The build log puts the aim in one line: forward your receipts once, and never miss a recall on something you own.
What it does
Anyone can open the public board without an account. It lists the newest recalls from CPSC, FDA and USDA-FSIS, with photos, a running count and search.

Signed-in users add what they own four ways: a receipt photo, pasted text, a typed-in item, or a receipt forwarded to their own Recall Desk address. OpenAI reads each receipt into items, down to model numbers, UPCs and the NDC on a pharmacy label. The extractor is told never to return patient or card details, and photos are deleted once read.
When a purchase matches, the app emails an alert. If the manufacturer has a remedy page, it becomes a checklist prefilled from the receipt. One click drafts the claim email, which the user edits and approves before anything is sent. The manufacturer's reply threads back onto the claim.

How it works
The interface began as a landing design Tony generated with ChatGPT, then was ported into React and wired to live data. Behind it, one Convex deployment runs the whole backend and hosts the app. A cron checks the feeds every two hours. USDA-FSIS answers the deployment with HTTP 403, so that feed comes in through Firecrawl.
Matching runs in two stages. Full-text search and UPC and NDC lookups pick at most six candidate recalls per item. One OpenAI call then judges them and writes a rationale with a confidence score. At 0.7 or higher, the user gets an email. A match scored below that shows on the desk as a possible match.
On a match, Firecrawl renders the remedy portal and OpenAI pulls out the steps and required fields. On the Louisville Ladder portal, a plain HTTP request gets 57 characters. Firecrawl gets 2,501, enough to extract four steps and eight required fields.
A link from that page becomes the checklist's main button only after three checks. It must be a web address, appear word for word in the scraped page, and share the portal's domain. The rule came out of a 22-agent adversarial code review. It keeps a model's guess or a planted link off the button.
if (parsed.protocol !== "https:" && parsed.protocol !== "http:") return "";
if (!markdown.includes(claimUrl)) return "";
if (baseDomain(parsed.hostname) !== baseDomain(page.hostname)) return "";
return claimUrl;Every OpenAI call checks a hard budget first: $5 a day, $70 in total. One item's full loop, from receipt photo to drafted claim, costs about $0.002 to $0.003.
Where it stands
Recall Desk is live at www.recalldesk.store. On November 6, 2026 the crons were still running and the board tracked 2,083 recalls. Sign-ups are open, capped at 1,000 accounts. The code is public under the MIT license.
