-
-
Tagout: is anything you own recalled? 46 of 46 recalled units tagged Do not use, and no wrong red tag on 105 cases or 39 held out.
-
The home page replays a real check from its log: each tool call Nemotron made, the notices read, the code matched, the tag hung.
-
How Tagout is built: Nemotron reads and searches on Nebius Token Factory, Tavily covers the web, rules decide, a daily sweep watches.
-
A check as it runs. Nemotron 3 Ultra calls NHTSA, CPSC, FDA and Tavily as tools; every search is shown with how many results were new.
-
Anatomy of a red tag: Nemotron reads TYPE SRTH from CPSC's notice, the code is verified in its text, and a rule matches the plate.
-
Every red tag shows your code next to the recall's own line, the hazard, the remedy and who to call.
-
When it can't be sure, it says so. A car, or a recalled line without your model number, is Check the label, with where to look.
-
Held out: 39 new cases committed before a single run. No wrong red tag; without Tavily all 10 not-yet-listed recalls were cleared.
-
Watch a household. A daily sweep reads each new recall once; replayed here, the alerts a list dated Oct 13 would have received.
-
Caught on the web first: a Do not use and an allergy alert openFDA had no report of, and a USDA recall with no API.
-
On a phone: photograph the rating plate. NVIDIA Nemotron 3.5 Super VL reads the codes and the same check runs.
Built by Rohan Borade (design and build) and Aatmaja (recall research and testing). The demo video (2:43, recorded Oct 25) shows the current build: the replayed check, Tavily catching recalls ahead of the databases, the daily watch alerts and the held-out result.
Test it in one minute
- Open tagout-recalls.vercel.app (no account). The hero replays a real check. Tap A space heater and A medicine, then Check my things: in about 25 seconds both are tagged Do not use, each with the recall's own line next to your code.
- Open the eval: 105 cases and 39 held-out ones, every answer, including the wrong ones.
- Open three recalls caught before the databases: a gelato lot (Do not use, Listeria) and a sesame allergy alert on bread rolls, both from FDA company announcements openFDA had no report of (each tag says so), and a USDA hot-dog recall with no API, all found by Tavily. (These were held-out cases; the Kayem fix came after the held-out run.)
- Open a watched household (its feed and last sweep) and a replayed watch: a list dated Oct 13 and the three alerts the daily sweep would have sent it as those recalls came out, clearly labelled as a replay.
Inspiration
CPSC alone announced 490 recalls in the first ten months of 2026, covering about 53 million units by its own count, and the FDA, NHTSA and USDA add thousands more a year. Each recall lives in its own database, in its own words, and the detail that decides whether yours is covered (a model number, a lot, a date window) is buried in a paragraph. CPSC's own staff measured what that costs: recalls announced only by press release got 6% of consumers to act; recalls sent straight to owners got 50% (CPSC Recall Effectiveness Workshop, closed cases FY2013–2016). We wanted "is any of my stuff recalled?" to take two minutes, with proof, and without an AI guessing.
What it does

- Reads what you own. Type it, one thing per line, or photograph labels. Nemotron turns each line into an item: kind, brand, and the codes a recall turns on (model, lot, VIN, UPC, NDC). NVIDIA Nemotron 3.5 Super VL reads label photos. A code that isn't in what you gave is dropped; VINs are decoded with NHTSA's decoder.
- Searches like an investigator. For each item, an agent on NVIDIA Nemotron 3 Ultra calls six tools: NHTSA vehicle recalls, NHTSA child-seat recalls, CPSC, openFDA, Tavily search and Tavily extract. It searches again when the first try misses, and always searches the web, because the databases trail the agencies' newsrooms by one to six weeks.
- Reads every notice's list. Nemotron reads the affected models, lots, UPCs and date windows out of each notice. Every code is looked up in the notice's own text, as a whole word and outside any "not included" sentence, and struck if it isn't there.
- Decides by rules, not by a model. A deterministic matcher hangs one of three tags: Do not use (a code on your product is listed), Check the label (the line is recalled; yours isn't confirmed either way; cars always stop here), Checked (nothing lists it today, with the sources named). If no model answered, nothing is ever cleared green.
- Watches. Save a check as a watch. A daily sweep reads each new recall once (CPSC, openFDA, NHTSA, plus FDA company announcements and USDA FSIS through Tavily), matches it against every watched list by the same rules, and posts what it finds to the watch page and its Atom feed. Cost grows with the number of recalls, not households.
- Shows its work. Every check streams its searches, says which model did which job and what the check cost, Tavily included, and keeps a shareable link.
How we built it

- NVIDIA Nemotron on Nebius Token Factory (
api.tokenfactory.nebius.com/v1), every role by measurement:nvidia/Nemotron-3-Ultra-550b-a55breads the list (strictjson_schema), runs the search agent (OpenAI-style tools, parallel calls, up to six rounds,finishforced on the last) and reads each notice (strictjson_schema).nvidia/NVIDIA-Nemotron-3-Nano-30B-A3Breads the notices in the lite tier, after the demo's daily Ultra budget is spent.nvidia/Nemotron-3.5-Super-VLreads label photos (7 of 7 codes on our sample labels), with Qwen3.8-27B and Gemma 3 27B as fallbacks;nvidia/nemotron-3-super-120b-a12bis the text fallback.- Reasoning is turned off (
chat_template_kwargs: {enable_thinking: false}, measured to give 0 reasoning tokens) for the Nano notice reader and Super VL; a reply cut off at its token cap is retried once with more room and reasoning on.
- Tavily:
search, limited to cpsc.gov, nhtsa.gov, fda.gov, fsis.usda.gov, recalls.gov and foodsafety.gov plus a maker's domain;extractto read a recall page in full, batched and memoized per item. A cpsc.gov page the database also has is swapped for the database record; an announcement with no database record behind it is marked Ahead of the database. USDA FSIS meat recalls are reachable only this way. - The daily sweep: pulls 30 days of recalls, looks each one up in an inverted index of every watch's brands and codes, and sends only the ones that touch a watch to Nemotron. Readings are cached in Google Cloud Storage by source, id, text hash and model, so a recall is read once for everyone. Measured: 418 recalls from 9 sources checked in about 4 seconds with no model call when nothing touched a watch; one fresh Ultra reading costs 0.23¢. It runs as a Vercel cron and ships as a container for a Nebius Serverless Job.
- App: Next.js 15 and React 19, streaming each check as NDJSON; checks, watches and readings in Google Cloud Storage reached keylessly through Vercel's OIDC workload identity (no key exists anywhere); Vercel; GitHub Actions CI plus a daily Token Factory canary; 100 unit tests.
- Design: each item is drawn as its own identification label (an aluminium rating plate, a door-jamb sticker, a car-seat label, a medicine carton). The verdict is an industrial lockout tag in ANSI safety colours, hung on a steel lockout board.
Results
105 real cases (2025–26 recall records): 46 units whose code is printed in a CPSC, FDA or NHTSA notice, 27 near misses, 12 recalled lines with no code, 12 cars, 8 things no recall lists. A script checks every expected answer against the agency's own record, without any Tagout code.
| Setup (Oct 15 run) | Right | Wrongly red | Recalled unit cleared |
|---|---|---|---|
| Tagout (Nemotron 3 Ultra agent and readers, rules decide) | 104/105 | 0 | 0 |
| Lite tier (fixed plan, Nemotron Nano reads notices) | 98/105 | 1 | 0 |
| Rules with no model (the old fallback; today it never clears green) | 87/105 | 2 | 10 |
| Nemotron 3 Ultra reading the same Tavily results, no rules | 75/105 | 5 | 12 |
| Nemotron 3 Ultra from memory | 45/105 | 5 | 36 |
At today's code the same 105 cases give 105/105 for Tagout and 101/105 for the lite tier, with no recalled unit cleared by either.

Held out, run once. Those 105 cases shaped our fixes, so on Oct 25 we wrote 39 new cases from recalls published Oct 14–22, committed them before anything ran, and ran each setup once: Tagout got 31/39 right with 0 wrongly red. Four recalled units were cleared. Each was traced and fixed in code with a unit test (a lot printed in two parts, a brand glued to "USA", a USDA page whose text began after 28,000 characters of menus); re-run after the fixes, Tagout got 37/39 with none cleared and none wrongly red, and 105/105 on the tuned set. That re-run is no longer held out, so 31/39 stays the headline. Rules alone, with no model, get 24/39 and never clear a recall. Nemotron's reading of the notice decided 31 of the 46 red tags on the 105 and 15 of 19 held out; the rest came from the agency record's own list. The cases and all runs were committed locally on Oct 25 and pushed together at 20:47 UTC (commit times are local); a second held-out set is committed and will be run once before the deadline.
What Tavily adds, measured. Twelve held-out cases are recalls no agency database listed yet (FDA company announcements and a USDA meat recall). With Tavily off, Tagout cleared all 10 recalled ones green; with Tavily on, it flagged 8. Overall, Tavily took Tagout from 27/39 to 31/39 and its cleared recalls from 12 to 4.
Cost, all in: about 4.6¢ an item for a full check on the 105 cases (2.6¢ of Nemotron, 2.0¢ of Tavily) and 4.9¢ on the held-out set; the lite tier is 1.4¢ and 1.7¢.
Who pays
Households use it free. First customer: property managers and home-warranty firms. They already keep each unit's appliance list (brand, model, serial). Tagout watches that list, and a recall that names one of those models shows up as an alert on that unit's watch and feed, or a webhook into their own work-order system, with the agency's own sentence as proof. $1 per unit per month; our cost is about 37¢ once per unit (eight appliances), then a share of a daily sweep capped under 10¢ a day for everyone. Why now: since California's AB 628, a landlord has 30 days from notice to repair or replace a recalled stove or refrigerator (Civil Code 1941.1(c)(1), leases from Jan 1 2026); Tagout's alert is that notice, dated, with proof. No paying customer yet. Second: resale. Selling a recalled consumer product is unlawful in the U.S. (15 U.S.C. 2068); a seller photographs the label and Tagout red-tags a listing only when the item's own code is in a recall, so honest sellers aren't blocked. Details, costs and the API: /business.
Why not a recall search box or a chatbot
- CPSC's database never fills in its model-number field: it was empty in all 2,276 recalls since 2020, so matching on database fields misses most product recalls. Tagout reads the notice text and verifies every code against it.
- The databases lag the agencies by one to six weeks. Tavily finds those recalls first, and the held-out set shows it.
- A model alone invents recalls. Nemotron answering from memory wrongly tagged 5 things red, each time citing a recall that doesn't list the item. Tagout's tag is a rule you can check: your code next to the agency's line.
Already out there, and what Tagout adds
- Recall-alert apps such as RecallSentry send free alerts from the same four agencies, matched on the UPC, model, lot or VIN you enter. Tagout adds a published, held-out error rate and the agency's own sentence beside every red tag.
- Agency sites and email lists (recalls.gov, CPSC, SaferCar for per-VIN car lookups) are the source of truth. Tagout reads their prose for the codes and finds recalls on the web before their databases list them.
- Retailer and maker notices reach the buyers they know. Tagout covers what a building owns, whoever sold it, with an open API and a feed per list.
Limits
- U.S. recalls only; cars stop at "Check the label" because there's no public per-VIN recall API.
- Green means nothing listed the item on the day of the check, not that it is safe.
- Two held-out web-only recalls stay orange where red is right: the announcement's text doesn't print the lot.
- The demo runs on a shared credit balance with daily caps, so busy days fall back to the lite tier.
Challenges we ran into
- Codes with spaces and two-part lots. The held-out set caught a Gatorade lot printed as
091026 DLthat our verifier split in two; now multi-part codes are verified and matched as one. - The model's list can be shorter than the notice. An FDA lot list read only up to its first group once cleared a recalled lot. Now a code of yours that the notice's own text prints counts as listed, whatever the reader returned.
- Agency data has its own quirks. CPSC returns a fake error record and caches it per URL; NHTSA spells "F-150" as "F-150 (SUPER CREW) GAS"; openFDA leaves the brand field empty on new drug recalls; FSIS turns away automated clients. Each has a measured workaround.
- There's no public recall-by-VIN API, so cars are orange at most, with NHTSA's VIN lookup linked.
- Budget. The demo runs on a shared credit balance, so checks fall from the full tier to the lite tier to rules only, the page says which ran, and a green tag is never given without a model having read the notices.
Accomplishments that we're proud of
- Allergy-aware tags. An undeclared-allergen recall reads "Do not eat if anyone in your home is allergic to sesame" with an allergen chip, not a blanket alarm (4 of 4 on a small allergen set).
- No unit wrongly tagged Do not use, in 105 tuned cases or 39 held-out ones. After fixing what the held-out set found: 105/105 and 37/39, with no recalled unit cleared.
- A held-out set committed before it ran, with the misses published, not hidden.
- Every red tag is provable by the person reading it: their code next to the agency's line, the notice one click away.
What we learned
- An agent is only as honest as its last step: the verdict should come from a check you can explain.
- Measure each model size in each role before routing; Nano was good enough to read notices behind a fixed plan, and not good enough to read a household's list.
- A tuned eval flatters you. The held-out run found four real bugs in an afternoon.
What's next
- Email and push alerts on top of the feed and webhook.
- More countries: Health Canada, EU Safety Gate and UK product recalls are already probed.
- A property-manager import (CSV of units and appliances) and a resale-listing check API.
Built With
- cpsc-api
- gemma
- github-actions
- google-cloud
- nebius-token-factory
- nemotron-3-nano
- nemotron-3-super
- nemotron-3-ultra
- nemotron-vl
- next.js
- nhtsa-api
- nvidia-nemotron
- openfda
- qwen
- react
- tavily
- typescript
- vercel

Log in or sign up for Devpost to join the conversation.