Inspiration

A third of all food produced is wasted while 1 in 8 people go hungry. The food exists; the need exists — what's missing is a coordinator fast enough to beat the spoilage clock. Today that's a stretched volunteer making frantic phone calls. Groups like Food Rescue US prove the model works, but a human still runs every step. We asked: what if the coordinator itself was autonomous?

What it does

FoodBridge watches for surplus-food donations and runs the entire rescue on its own: it judges food safety (USDA danger-zone rules), picks the best shelter (need, nutrition for children, fairness, capacity, cold-chain), dispatches a driver and self-heals when one declines, confirms delivery, and sends the donor a tax receipt with Good Samaritan Act protection. It contacts a human for exactly three things — a borderline safety call, a rescue about to fail, or an oversized donation — as a real email/Slack/Discord ping with one-click Approve/Reject. Every rescue is counted three ways: meals delivered, money saved, CO₂ prevented. In one demo shift: 350 lbs rescued → 291 meals, $1,037, 875 lbs CO₂ — with a single human decision.

How we built it

A Strands Agents SDK agent genuinely drives the loop: the model calls bound tools (check_food_safety, rank_recipients, estimate_impact, consult_guidelines) and decides what to invoke, in what order. Agentic RAG: a curated knowledge base (USDA guidance, the Bill Emerson Good Samaritan Act, Big-9 allergens, date labels) that the agent retrieves from — every escalation carries a citation. Cross-run memory learns driver reliability; a JSONL decision trace makes every step auditable; an animated dashboard, a conversational ask, and an interactive add command let judges drive it themselves. It runs on Amazon Bedrock (with a Bedrock AgentCore Runtime entrypoint included) or a free local model — and a deterministic offline mode runs with zero setup.

Challenges we ran into

Making the LLM the agent without making it the arbiter: food-safety rules stay hard-coded guardrails, and the model reasons through the same tools. Small local models sometimes leaked tool-call JSON or wandered in loops — we added output sanitization, hard per-call timeouts, and a deterministic fallback so a flaky model can never break a rescue. Honesty took work too: the banner only claims "LLM-driven" when credentials actually exist.

Accomplishments that we're proud of

Genuine tool-calling (the agent chose to consult the guideline knowledge base unprompted), grounded escalations with legal and safety citations, real-world delivery (Gmail/Discord with one-click decisions), 21/21 tests passing on both Python 3.9 (offline) and 3.12 (live SDK), and a demo anyone can run in one command with zero accounts.

What we learned

The best agent UX is silence: five rescues handled invisibly and one well-argued escalation beats any dashboard. RAG isn't just for chat — citing USDA rules inside an autonomous decision is what makes a coordinator trust it. And graceful degradation (LLM → deterministic) is what turns a demo into a product.

What's next for FoodBridge

Deploy the AgentCore background runner for a pilot food bank, real SMS driver replies, vector embeddings for the knowledge base, and multi-site donation splitting — plus an impact ledger nonprofits can show funders.

Built With

Share this project:

Updates

Submission history