Inspiration
Every year, tens of millions of consumer products are recalled for fire, burn, and choking hazards — but retailer notifications are inconsistent and fragmented across Amazon, Target, Walmart, and in-store purchases. SaferProducts.gov lets you search if you already know what to look for. Most people don't — and they almost certainly own at least one recalled product without knowing it.
We built RecallNet because your shopping history should protect you, not sit forgotten in a PDF export.
What it does
RecallNet is a proactive recall intelligence graph for consumers:
- Upload purchase history via barcode scan, manual entry, bulk CSV, or free-text list
- Match each product against the live CPSC SaferProducts.gov API (no fake seed data)
- Alert with explainable confidence scores (UPC exact match, brand/name match)
- Quantify remedy eligibility and dollar value (e.g. $459.97 claimable on our demo cart)
- Visualize a personal Safety Graph linking you → products → active recalls
- Share an anonymous household safety report
Live demo: 3 real STOP USE recalls — Cosori air fryer (fire), Arizer vaporizer (fire/burn), BABESIDE doll (choking).
How we built it
| Layer | Technology |
|---|---|
| Frontend | Next.js 14 on Vercel (App Router, serverless API routes); UI prototyped with v0.app |
| Database | Amazon DynamoDB — 4 tables, 4 GSIs, Terraform IaC |
| Recall data | CPSC SaferProducts.gov REST API (live) |
| Infra | Terraform (DynamoDB, IAM least-privilege, optional S3) |
Amazon DynamoDB schema:
recallnet-products+ UpcIndex GSI — O(1) barcode lookuprecallnet-ownership-events+ ProductOwnersIndex GSI — recall → owners fan-outrecallnet-recall-events+ ProductRecallsIndex + ActiveRecallsIndex GSIsrecallnet-user-recall-status— materialized alert projections
Ownership and recall events are append-only streams; dashboard alerts are a materialized projection updated when new recalls publish or users upload purchases.
Monetization (Track 1 — B2C): Freemium — free live CPSC alerts; Premium ($4.99/mo) for multi-home/family monitoring and push notifications; affiliate revenue on replacement purchases; B2B API for insurers/retailers.
Challenges we ran into
- CPSC data quality: Hazard fields are sometimes corrupted — we validate against recall context and fall back to official descriptions.
- Name-only matching: Products without UPCs (Cosori, BABESIDE) required linking user items to CPSC catalog
productIds, not creating orphan records. - Eligibility windows: CPSC encodes sale periods as prose ("sold from June 2018 through December 2022") — we parse these into structured windows instead of treating the recall announcement date as the purchase start.
- Serverless persistence: In-memory state doesn't survive Vercel cold starts — production requires real Amazon DynamoDB (confirmed via
/api/health).
Accomplishments that we're proud of
- 100% live CPSC data — every demo alert comes from SaferProducts.gov, verifiable via source links
- End-to-end demo journey — upload → 3 STOP USE alerts → $459.97 remedy → Critical safety score with factor breakdown
- Explainable matching — confidence scores and plain-language Recall Explanation (no black-box LLM as primary matcher)
- Production-grade data model — event-sourced DynamoDB with GSI fan-out, not a CRUD toy
What we learned
- DynamoDB GSIs turn "notify all owners of product X" from O(all users) into O(owners) — the core scale story for recall fan-out
- Parsing government API prose (sale windows, hazards) is as hard as the matching logic itself
- For safety products, defaulting to "you may be eligible" when CPSC gives no sale window is better than hiding a fire hazard behind UNKNOWN
What's next for RecallNet — Recall Intelligence for Your Purchases
- Email/SMS push when new CPSC recalls match owned products
- Amazon/Target order OAuth import
- FDA and NHTSA recall streams
- Mobile app with barcode scan
- Premium tier launch (multi-home monitoring)
Built With
- amazon-dynamodb
- aws-sdk-v3
- cpsc-saferproducts.gov-api
- next.js
- node.js
- react
- tailwind-css
- terraform
- typescript
- v0.app
- vercel
Log in or sign up for Devpost to join the conversation.