Inspiration
Food prices don't change randomly, they react to real-world shocks. A port strike, an avian flu outbreak, a drought. But by the time those shocks show up at the grocery store, it's too late to do anything about them. We wanted to build something that closes that gap. A tool that turns live news into actionable signals before prices move.
What it does
Canary monitors the food supply chain in real time. For households, it analyzes your grocery list against live disruption signals and tells you exactly which foods face pressure, and how to adapt before prices change. For food banks, it generates a forward-looking operations briefing with ranked procurement actions and substitutions grounded in what's actually happening this week. The system doesn't just show you the problem. It tells you what to do about it.
How we built it
Three autonomous agents running on the Fetch.ai network handle the intelligence pipeline. A Signal Risk Agent reads live news from NewsAPI.ai, uses Gemini tool-calling to classify and score each supply chain signal, and stores embeddings in MongoDB Atlas Vector Search for semantic retrieval. A Household Resilience Agent analyzes your grocery basket against live risk scores and generates adaptive strategies. A Food Bank Operations Agent produces forward-looking procurement and substitution guidance grounded in the same live signals. The risk scoring system takes the strongest signal per event type as the primary score, with each additional signal adding diminishing returns, so a food only reaches HIGH when it genuinely has a strong primary driver, not just because many weak signals accumulated.
Challenges we ran into
Getting signal severity calibration right was the hardest part. Early versions produced flat scores. Everything was clustering between 0.45 and 0.55 because the Gemini extractor was defaulting to conservative mid-range severities. We fixed this by adding explicit severity calibration guidance to the extraction prompt, switching from signal summing to dominant-signal scoring, and taking the best signal per event type before applying diminishing returns. The final distribution is 12 HIGH, 11 MEDIUM, 9 LOW across 32 foods, which matches current real-world news accurately.
Accomplishments that we're proud of
A breaking news simulator that injects a live signal into the risk engine and re-runs the full household analysis in real time, so LOW risk foods genuinely flip to HIGH when a relevant disruption hits, not from hardcoded deltas but from the actual scoring system responding to a new signal.
And doing this solo :D
What we learned
Food supply chains are deeply interconnected in ways that aren't obvious. Eggs and chicken share the same avian flu exposure. Pasta, olive oil, and coffee are all simultaneously exposed to the same round of import tariffs. The most useful thing the system does isn't scoring individual foods, it's identifying those shared category-level risks and surfacing them as patterns.
What's next for Canary
Push notifications when a food in your saved basket crosses a risk threshold. Sourcing specific retailers or alternatives with lower exposure. Expanding to food bank networks so procurement decisions can be coordinated regionally rather than made in isolation.
Built With
- fastapi
- fetch.ai
- gemini
- mongodb
- newsapi.ai
- next.js
- python
- tailwindcss
- typescript
Log in or sign up for Devpost to join the conversation.