Inspiration

As students, we kept running into the same problem every week: eating healthier felt expensive, and staying on budget meant repetitive or low-quality meals. We wanted to build something that turns meal planning into a practical, cost-aware workflow — not just a recipe browser. The core idea was to combine nutrition guidance with real supermarket pricing so users can see what they can actually afford before they ever set foot in a store.

What it does

Untitled is a budget-first meal planning app that generates a multi-day breakfast, lunch, and dinner plan based on your preferences. A 3-step wizard captures your budget, dietary restrictions, cuisine preferences, difficulty, and cooking time — then produces:

  • A full day-by-day meal calendar
  • Estimated cost per meal and weekly total
  • A consolidated shopping list with quantities and prices
  • Meal detail modals with ingredients, macros, and instructions
  • Regeneration controls to quickly replan using notes and include/avoid ingredient lists

How we built it

We built the app with Next.js 16 App Router, TypeScript, and Tailwind CSS.

Frontend: A landing page feeds into the wizard, which encodes preferences into a URL. The results page generates and renders the plan client-side via an API workflow.

AI workflow: An ingredient selection agent picks practical ingredients from the dataset, while a weekly planner agent generates meals in strict JSON format. The server validates responses with Zod schemas, enriches meals with pricing and images, and computes totals.

Cost and planning logic: Recipes are filtered by hard constraints (diet, difficulty), then scored by weighted factors — affordability, nutrition, cuisine fit, and ease — and assigned greedily into meal slots with variety checks. Shopping quantities are aggregated and priced against the cheapest matching products.

The scoring formula is: S = 0.40·A + 0.25·N + 0.20·C + 0.15·E, where A is affordability, N is nutrition match, C is cuisine match, and E is ease/time fit.

Challenges we ran into

  • AI JSON reliability: Models occasionally returned extra text around JSON, requiring hardened parsing and fallback extraction logic.
  • Budget realism: Per-serving costs can look affordable while real checkout totals are higher due to pack sizes — we had to calculate both theoretical consumption and actual shopping costs.
  • Ingredient normalization: Raw ingredient records had inconsistent naming and price fields, requiring careful deduplication and normalization.
  • Constraint balancing: Keeping plans varied, nutritionally sound, and within budget simultaneously required multiple rounds of iteration and retry logic.
  • UX during generation: Without a strong loading state, generation felt abrupt. We added staged progress indicators and animated skeletons to improve perceived responsiveness.

Accomplishments that we're proud of

  • Built an end-to-end pipeline that goes from user preferences to a fully actionable shopping plan
  • Integrated AI generation with strict schema validation and robust error handling
  • Implemented dual cost views and shopping aggregation logic that reflects real-world spending
  • Delivered a polished results experience with interactive meal detail modals and smooth loading animations
  • Kept the entire flow simple and fast — no sign-in required

What we learned

  • Reliable AI products need guardrails, not just prompts. Schema validation and retries are non-negotiable.
  • Cost modeling is nuanced. Users need clear distinction between per-serving estimates and real checkout totals.
  • UX details build trust. Loading states and control placement significantly affect how credible the app feels.
  • Strong type safety pays off. Shared data contracts made it much easier to evolve a multi-step workflow quickly.

What's next for Untitled

  • Live supermarket price sync and historical price tracking
  • Smarter budget optimization using pack-aware selection instead of simple heuristics
  • Personalized reranking based on meal feedback (likes, dislikes, swaps)
  • Allergy-safe and pantry-aware planning modes
  • Export options — shopping checklists, calendar views, and printable meal prep cards
  • Test coverage for scoring, costing, and schema validation paths

Built With

  • chatgpt
  • claude
  • nextjs
  • react
  • vercel
  • woolworths
Share this project:

Updates