Inspiration

Food waste and “decision fatigue” are the same problem in disguise. You buy good intentions, forget what you already have, and end up with expired food and another stressful “what should I eat?” moment. StruggleMeals started from a simple idea: a smart pantry should help you use what’s already in your kitchen first, while saving money and keeping up with nutritional meals at the same time.

What it does

StruggleMeals turns your pantry into an action plan. You add items you have (manual, search, or voice), and the app tracks expiration dates to surface a clear next best meal, explaining why it picked it, matching your time, difficulty, and nutrition goals, and guiding you step-by-step while you cook. The goal is proactive cooking: fewer wasted ingredients, fewer unnecessary grocery runs, and healthier meals with less effort.

How we built it

We built a mobile app with a clean UI and a backend centered on real user state: onboarding preferences (goals, restrictions, skill, time), a live pantry inventory with expiration dates, and cooking sessions. The core engine takes your inventory and constraints (meal type, time, difficulty, nutrition focus) and scores recipes by usefulness, heavily prioritizing ingredients that are closest to expiring, then filtering by dietary needs and matching your goals. Recommendations are generated with structured, explainable outputs so the app can show why a meal was chosen and exactly which pantry items it uses. On the experience side, we implemented a guided cooking mode that turns recipes into step-by-step instructions with built in timers for each step, plus voice-powered inventory entry to make adding food fast and natural.

Challenges we ran into

The hardest challenge was making voice entry feel truly seamless and reliable. Natural speech is messy so we had to turn unstructured audio into clean, structured inventory items without frustrating the user. That meant handling transcription quality, parsing quantities/units, mapping vague phrases to real food names/categories, and building a confirmation flow where users can quickly fix mistakes before saving. We also had to handle real-world messiness, background noise, unclear phrasing, mixed quantities, and imperfect transcriptions, while keeping the system fast.

What we learned

We learned that making this project required building a reliable full-stack system, not just using AI on top. Implementing everything ourselves forced us to get the fundamentals right: a clean data model for profiles, inventory, expiration dates, meal plans, and cooking sessions; robust state management so the UI never breaks on empty or partial data; and strict validation so every feature behaves predictably. On the engineering side, we saw how essential typed contracts are, TypeScript end-to-end and schema validation for every request/response kept our backend and frontend in sync and prevented “works on my machine” bugs. We also learned that voice and AI outputs need guardrails: transcription and parsing must produce structured, testable data, and the UX must include a fast confirm/edit step so users stay in control. Finally, we learned that perceived intelligence comes from execution details, progressive generation, real-time updates, and clear explainability, because users trust the system when they can see exactly what it’s doing and why.

What's next for StruggleMeals

Next steps include stronger product recognition (barcode/brand nutrition labels), better recipe sourcing and ranking, and more advanced nutrition personalization. In the long term, we want to evolve StruggleMeals into a social media platform, a feed where users can post the meals they made from their pantry, share “struggle meal” upgrades, and let others rank, save, and remix recipes based on what they already have.

Share this project:

Updates