Inspiration

Food waste is a massive global issue, yet so much of it happens inside our own homes. We noticed a gap: people often struggle to connect the ingredients in their pantry with recipes they can actually cook. This leads to forgotten items, expired food, and unnecessary grocery runs. Our inspiration was to build a system that makes every ingredient count — reducing waste while making meal planning effortless.

What it does

Foodie Vault is an AI-powered pantry and meal planner that: - Tracks what’s in your pantry (with expiry reminders). - Uses TiDB vector search to recommend recipes based on semantic similarity between pantry items and recipes. - Employs multi-agent workflows to: - Parse messy recipe text (“2 c. whipping cream” → 200 ml cream) - Normalize units and quantities - Match pantry items to recipe needs - Deduct ingredients after cooking - Integrates LLMs to handle natural language (synonyms, ambiguous items, instructions). - Helps users plan meals, reduce waste, and feel in control of their kitchen.

How we built it

  • Database: TiDB Cloud with vector search for embeddings. - Embeddings: Hugging Face transformer models (BGE) to encode recipes + ingredients. Similarity is computed with cosine similarity: $$ \text{similarity}(v_i, v_r) = \frac{v_i \cdot v_r}{|v_i||v_r|} $$ - Multi-Agentic System: - Parser Agent → Extracts structured quantities from raw recipe text. - Normalizer Agent → Converts all values into standard units (grams, ml, pcs). - Matcher Agent → Maps recipe ingredients to pantry items via TiDB vector search. - Deductor Agent → Updates pantry after cooking. - LLM Assistant Agent → Handles edge cases, synonyms (“bell pepper” vs “capsicum”), and fallback reasoning. - Backend: Python (FastAPI) for orchestration between agents, TiDB, and the app. - Frontend: React Native (Expo) for a clean mobile experience. ## Challenges we ran into
  • Unit Conversion 🔄: Recipes come in all shapes — “1 cup flour,” “200g sugar,” “a pinch of salt.” Getting agents + LLMs to parse, normalize, and convert these consistently into standard units (g, ml, pcs) was one of the hardest parts. Example: $$ 1 \, \text{cup (flour)} \approx 120 \, \text{g}, \quad 1 \, \text{cup (sugar)} \approx 200 \, \text{g} $$ The same “1 cup” means different weights depending on the ingredient. - LLM ambiguity: Sometimes “1 mango” vs “1 cup mango” confused the parser. We had to add fallback reasoning so the system could guess the most realistic unit. - Synonyms and variants: Users store “bell pepper” but the recipe says “capsicum.” We relied on vector embeddings + LLM synonym expansion to bridge these gaps. - Edge cases: “handful,” “pinch,” “dash” — terms humans understand, but very vague for machines. We had to assign reasonable defaults while still flagging uncertainty. ## Accomplishments that we're proud of
  • Built a pantry → recipe → meal plan → deduction loop powered by agents + LLMs. - Integrated TiDB Cloud vector search seamlessly into real-world AI workflows. - Demonstrated how multi-agent reasoning can automate tedious household tasks. - Created a fun, approachable UI that makes sustainability feel easy. ## What we learned
  • The importance of agent orchestration — giving each agent a clear role. - How LLMs excel at handling ambiguity in natural language (like “handful of spinach”). - The power of TiDB Cloud to scale semantic search with low latency. - That solving a messy real-world problem is about combining the right tools, not just one model. ## What's next for Foodie Vault
  • Voice-first experience with Alexa: Imagine saying “Alexa, what can I cook with what’s in my pantry?” and Foodie Vault instantly suggests recipes, deducts ingredients, and updates your pantry — all hands-free. - Conversational chatbot assistant: A friendly AI companion (web or mobile) that answers pantry questions, helps plan meals, suggests substitutions (“Out of milk? Try oat milk instead”), and even tracks your savings in food waste reduction. - Deeper agentic workflows: Agents can handle shopping list generation, expiry reminders, and even negotiate substitutes automatically.

Built With

Share this project:

Updates