---## Inspiration
Packaged food is built for people who can read it. Best-by dates are stamped in tiny, low-contrast print. Recall notices live on government web pages that assume you can browse and read them. For someone who is blind or has low vision, that means two quiet risks: eating food that is expired or recalled, and relying on someone else to check. We wanted an app that gives people that independence back.
What it does
Label Loud is A voice-first mobile app that helps people with visual impairments keep their food safe:
- Scan a barcode and the app identifies the product, with no label reading needed
- Photograph the package and the app reads the expiry date for you
- Recall check: every item is checked against active FDA food recalls, and you're told clearly if a product may be affected, why, and what to look for on the package
- Spoken results and reminders: the app scans the product for a bar code and reads the product name aloud. It notifies user if the product is recalled live as well as notifies users after it has been saved into the pantry. Sends notifications 3 - 7 days before items expire.
- A pantry sorted by what expires first, so the most urgent items come first
We always say "possible match" and never "safe" or "confirmed", because a barcode identifies a product, not a specific lot. For someone who can't read the package themselves, honest wording matters even more, so the app says plainly what it can't know.
How we built it
- App: React Native with Expo and TypeScript
- Backend: Python and FastAPI, with routes for barcode lookup, date reading, the pantry, and recall checks
- Barcode data: Open Food Facts
- Date reading: Apple Vision OCR on a Mac, from a photo of the package
- Recalls: the free openFDA food enforcement API. The backend loads recent recalls (178 records when we tested), caches them, and matches them to pantry items by UPC, brand, and product-name similarity with typo tolerance
- Networking: a Cloudflare tunnel connects phones to the backend during the demo
Four teammates worked in separate files against a shared API contract, which kept merging simple.
Challenges we ran into
- Recalls don't come with barcodes. openFDA has no reliable UPC field, so we match on brand and product names, tuned so that a brand match alone doesn't set off an alarm.
- Honest wording. A safety tool that falsely reassures is dangerous, so every result is phrased as a possibility with a next step.
- Photographing a date without seeing the frame is hard. The app will tell the user to move the item at a distance from the scan and tell the user to move the package slowly until it detects a barcode. It then does the same for the expiry date.
- Reliability. The live recall feed can fail on venue Wi-Fi, so it's cached and falls back safely.
- Date OCR works only on macOS, so the demo backend runs on a Mac. Windows will need to use Cloudflare.
What we learned
- Accessible design means every step, from scanning to results, has to work without sight, not just have a screen reader bolted on
- Matching messy real-world product data needs careful rules, not exact comparisons
- Clear file ownership and a stable API contract let four people build in parallel in 48 hours
What's next
- Test with blind and low-vision users and let their feedback drive the design.
- Fuller screen-reader and voice control support across every screen.
- Meal prep: spoken recipes from items about to expire, skipping anything recalled
Built With
- cloudflare
- expo.io
- fastapi
- gemini
- python
- reactnative
Log in or sign up for Devpost to join the conversation.