top of page
Cover.png
AI Agent For Meal Planning
The Project

This passion project has a simple goal: save my fiancée some hassle while she stays healthy for our big day.
 

She wanted to:
 

  • Eat healthier and lose some weight before the wedding

  • Stop asking “What’s for dinner?” every day

 

So I designed and built an AI Agent that suggests daily meals based on her goals, weight data, and preferences over time to make our evenings a little easier (and healthier).

It was also a chance for me to get hands-on with AI and start designing with an AI-native mindset. It's an experiment created with purpose, and a bit of love.

I used the n8n platform to host this AI Agent, with Manus as a co-pilot in the building process, and ChatGPT as both the LLM model and a debugging fallback.


My Role       Sole Creator

​​

Timeline      Jun 2025, 2 weeks

Tools

N8n-logo-new_edited.png
OpenAI-Logo_edited.png
manus_ai-logo_brandlogos.net_0jyih.png
Demo
See It In Action

The Agent plans weekly meals from user data, checks in daily for feedback, and adjusts its suggestions accordingly.

The workflows are fully automated but manually triggered in the video for demo purposes
How The Agent Works
How The Agent Works

It suggests personalized meals via three connected workflows, designed for ongoing improvement and adaptation.

1. Suggest Meals
This module is the core intelligence, powered by GPT-4o. It triggers weekly and suggests dinners for the next 7 days. Its suggestions are informed by the following database:
User Data

Essential information like age, height, and user goal (targeted weight loss in X days), providing the foundational context for personalization.

Weight Progress

Includes the starting weight and current weight that is measured weekly. Tracks the user's weight changes to allow the Agent to adapt meal plans to support the user's goal of targeted weight loss.

Meal Feedback

By incorporating insights from previous meal feedback, the Agent learns and refines its suggestions over time. For example, if the user frequently skips meals with the reason, "No, I didn't have time", the Agent will prioritize quicker options that require less time to prepare in the future.

Suggest Meals & Prompt.png
The Agent reads the connected datasets and acts based on the prompt I input, which guides it to suggest meals and write to Excel
2. Trigger Daily Meal Check-in

Each day at 10PM, a check-in message is sent to my fiancée via Telegram, asking if she prepared the suggested meal of the day, along with four quick reply options: 
 

  • 1️⃣ Yes, I followed the recipe

  • 2️⃣ No, I didn't have time

  • 3️⃣ No, it seemed too difficult

  • 4️⃣ No, I wasn't interested in this meal
     

Her response is logged for use in the next meal planning cycle.

Daily check-in & Response.png
Automatically send check-ins via Telegram to collect data for the Agent’s learning process
3. Log Meal Feedback

As she responds in Telegram using one of the quick reply options, the feedback is logged to a sheet.

These data points will be used by the Agent when it generates the next week's meal plan, better aligning with her preferences and cooking habits.

 

Ideally, the Agent collects 7 responses per week (one per day) and adjusts for cooking time, difficulty level, and cuisine type in the next cycle.

Log Feedback.png
Automatically log the user’s response whenever they reply to Telegram messages
Challenges
Challenges Faced

Sharing one challenge I encountered that led me to remove the “Send Grocery List” node from the workflow.

Remove Grocery List.png
The initial workflow included sending out a grocery list for the suggested meals, but I eventually decided to remove it
What Happened
My original plan was to automatically generate grocery lists from the suggested meals, so my fiancée and I could easily shop all the ingredients needed for the week.
Initial Goal

After the AI Agent outputs the suggested meals, it would compile a list that aggregates all the ingredients needed for all 7 meals for the week, and send it through Gmail.

Limitations

It generated an overwhelming list of 43 items, including basics like "18 cups water" and "11 tbsp olive oil". Since my fiancée is an experienced cook and we’re well-stocked with pantry staples, the Grocery List required mental filtering and is hard to follow.

Actions Taken

I refined the prompt to exclude pantry staples and include only:
 

  • Fresh proteins

  • Fresh vegetables

  • Specialty items

  • Perishables

This reduced the grocery list by one-third, down to roughly 30 items. However, during this refinement and by comparing the two grocery lists, several UX issues surfaced, ultimately leading to the removal of the "Send Grocery List" node altogether.

Grocery List_v1.png
Grocery List version 1. TL;DR!
UX Issues That Surfaced
In this attempt of making the "Send Grocery List" node to work, it revealed core UX and feasibility challenges. Rather than over-engineer, I decided removing the node was the better choice.
Inventory Management Problem

Distinguishing what we have versus what we need is more complex than refining the prompt.

 

For example, excluding pantry staples assumes we’re always stocked, but what if we unexpectedly run out of olive oil or pepper mid-cooking? Meanwhile, ingredients the AI flags as “specialty,” like Thai basil, might already be growing at home.

 

These edge cases require constant manual checks, making the list frustrating rather than helpful.

Unless there’s a robust system that can magically track and update real-time kitchen inventory, which doesn't exist.

Grocery List_refined prompt.png
Filtering ingredients ≠ knowing what’s truly in stock
Advance Purchase Limits Flexibility

Meal skipping is another challenge. Even with feedback loops (via Telegram) tracking skipped meals and the Agent adjusting suggestions for next week, there's no guarantee leftover ingredients will be used efficiently. If meals get skipped again, waste piles up.

More importantly, cooking requires flexibility, in ingredients and process. A strict grocery list feels restrictive and limits creativity, especially for experienced cooks like my fiancée.

Key Takeaways

This experiment was eye-opening and reinforced my bias toward action, as I explored AI-driven user experiences.

Takeaways
Limitation Of AI Agent
While the AI Agent demonstrated impressive potential, it also revealed equally significant limitations. This experience showed me both sides of the coin, and emphasized the need of designing with control and intention:
  • Break tasks into small, incremental chunks following the single responsibility principle
  • Keep humans in the loop, for crafting prompts, data integration, and shaping how outputs are delivered to users
UX Over Features
Just because we can build something doesn't mean we should. The Grocery List met its goal in isolation, but it didn’t fit real-world context or user behavior, so removing it made sense. In a time when everyone is competing to launch more flashy AI features, putting users first and defining what not to build is just as important.
The 'Little Things' Matter
The core meal planning function is only half the experience. The other half comes from transparency, error handling, and building trust in Human–AI collaboration:
  • Make AI reasoning visible: How are the estimated calories and cooking time for each suggestion calculated?
  • Error handling: Design fallbacks that maintain functionality for users and alert internal teams.
  • Trust is fragile: Every touchpoint should strengthen it, as small missteps can set it back.
Bad fallbacks example.png
The initial fallback response by the Agent risks losing users' trust
Next Steps

This started as a passion project, but now that we’re here, I’m considering pushing this experiment further.

How To Improve This
The Agent is far from perfect and has several areas for improvement. It might also be worth experimenting with a larger audience.
  • Add more context to the prompt: How should we define "healthy food"? Or "easy" vs "medium" cook difficulty?
  • Build trust with reliable sources: Connect to recipe APIs that show how calories and cook times are calculated?
  • Enhance message delivery: Would AI-generated food images help decision making? What else might be worth sending to users to capture their interest?
  • Test & iterate with real users: Why not launch it on the App Store and keep experimenting? 
These are assumptions that require further validation.
emoji_working.png

Thank you for reading! Building this was a lot of fun, hope you found it interesting.

© 2025 James Lo. All Rights Reserved.

bottom of page