-
-
Asks for the one detail that decides it, and shows the recalled product's label
-
Recalled: the model matches and the date is inside the window
-
Same chair made before the cutoff: not covered, and the red row shows why
-
Car seats use NHTSA's exact manufacture dates
-
A real AI assistant (Claude Code) calling the same server and choosing the right tool on its own
The problem
Recalled baby gear keeps getting resold and handed down: high chairs, cribs, strollers, car seats. The government publishes the data, but it is hard to use. In the CPSC feed, the structured Model field is empty in every recall since 2021, and about half of the notices never name a model number at all. So "search the product name" fails exactly when it matters, and a parent standing in a secondhand store has no easy answer.
What it does
Recall Radar works like a careful friend. A parent says, "I'm buying a used Peg Perego Tatamia high chair, can you check it for recalls?" It finds the matching recall, then asks for the one detail that decides the answer, usually the model number and date printed on the label, and shows the recalled product's own label photo so the parent knows where to look. Details can be typed, spoken, or read from a photo of the label (local OCR).
Then it decides, and shows its reasoning. A comparison table lines up what the recall requires against what the parent said, with a clear mark for each requirement. The same chair made in February 2023 is recalled (the model matches, and the date is inside "on or after June 23, 2022"). Made in November 2021 it is not covered, and the red "Made" row shows why. It then walks the parent through the official fix and remembers the case: "Where were we with the high chair?"
How it works
- A real MCP server (TypeScript, Streamable HTTP, protocol 2025-11-25; it also negotiates the 2025-03-26 that the Alexa+ client sends). Five outcome-oriented tools:
check_item,check_label,get_recall,update_case,get_case. Each returns a speakable headline and a next question, so a voice host can keep the conversation moving. - An MCP App (
ui://resource) designed for an Echo Show read at arm's length: a big status hero, the comparison table, the official fix, and a progress timeline for the remedy. It fits a 1280x800 screen without scrolling. - Two real data sources, 1,205 recalls: U.S. CPSC (consumer products, 2012 to Oct 2026) and U.S. NHTSA (child car seats, which have exact manufacture dates).
- Code decides; language models never do. The verdict compares explicit values (normalised model strings, parsed date windows, batch, serial, date codes), and every verdict carries an evidence list.
- A simulated Alexa+ host (a real MCP client and MCP Apps host) is included, because the Alexa+ add-on tooling is partner-only. Nothing in the project is Amazon software.
What makes it trustworthy
- Honest tiers, not guesses: confirmed, needs one more detail, compare by appearance, not covered, or no match. It never says "safe".
- A list that points elsewhere never clears a product. 59 baby-product notices say things like "visit the firm's website for the complete list". For those, an unlisted model becomes "check the full list", not "not recalled". With this guard switched off, 29 of 36 such recalls were wrongly ruled out; with it on, none.
- Tested against its own mistakes: 54 tests, plus a benchmark generated from the real recalls with deliberately wrong inputs (typos, decoy models, wrong dates): 0 wrongly confirmed recalls across 1,924 guard cases. The limit is stated plainly: the benchmark is generated by the same extractor it tests, so it proves the decision logic, not extraction recall on unseen notices. For that we audited by hand, and every finding became a test.
- A full check takes 3 to 15 ms locally, against Alexa+'s 500 ms budget.
Challenges
The data was the hard part. Model numbers, date codes and batches live in free text, written many different ways ("model numbers included in this recall are...", "manufactured between May 15 and August 20, 2012", "date codes 0415 or 0515"). We built the extractor from real wording, audited it against notices where identifiers were visibly present but missed, and found five classes of misses. Hand-testing also caught real bugs the benchmark could not: an unrelated toy recall outranking a high chair, an old car-seat recall confirmed because its name was a prefix of the user's, and the label parser reading "SnugRide" as serial "ugRide". NHTSA's own file even contains an inverted manufacture window, which the app now refuses to trust. Finally, we connected a real AI assistant (Claude Code) to the server with no hints about which tool to use: it chose the right tool, asked for the exact missing detail, and found one more real bug (a fuzzy saved-item name merged one item's model number into another item's check), which is fixed and pinned by tests. Transcripts are in docs/REAL_ASSISTANT_RUNS.md in the repo.
What we are proud of
It is useful and honest at the same time: the screen shows the reason for every answer, and the property that matters most (never wrongly clearing or confirming a product) is measured, not asserted.
What we learned
For voice assistants, the answer is only half of the job. The assistant has to ask for the next useful detail and be able to explain itself on a screen.
What's next
Push-style alerts if the platform allows them (Alexa+ add-ons answer when asked, so they cannot warn proactively today); more categories and countries (Health Canada, EU Safety Gate); an LLM extractor behind the existing ConditionExtractor seam for the long tail of notice wording; and user testing with parents.
The project was started and built within the submission window (first commit Oct 18, 2026) and developed with Claude Code.
Built With
- alexa+
- claude-code
- mcp
- model-context-protocol
- nhtsa
- node.js
- tesseract
- typescript
- zod
Log in or sign up for Devpost to join the conversation.