AI Meal Diary and Planner with Notion
Build a two-database meal system in Notion managed entirely through Claude.
Introduction
30 Second Summary
Tracking what you eat sounds simple until you actually try to keep it up. Most food diaries die within a week because manually typing entries into a spreadsheet feels like homework.
In this project, you will build a two-database meal system in Notion that you manage entirely through conversation with Claude Desktop. You log meals by chatting naturally and generate full weekly plans in seconds.
What You'll Build
Tell Claude what you had for lunch, watch it appear as a structured entry in your Notion diary, then ask Claude to plan your entire week and see 21 meals fill a board view organized by day.
By the end of this project, you'll have:
- A Meal Diary database where you log what you eat by chatting with Claude. No manual data entry needed.
- A Meal Planner database showing your week at a glance, organized by day and meal type with status tracking.
- A reusable prompt workflow that lets you generate, review, and adjust a full personalized meal plan in seconds.
- Secret Mission: A consolidated grocery shopping list generated from your weekly plan, organized by store section with combined quantities.
Do I need anything set up before starting?
This project assumes you already have Claude Desktop installed with the Notion MCP connection configured. If you haven't connected Claude to Notion yet, complete that setup first.
Before We Start
Before we dive in, let's lock in what you're about to build and why it matters.
Verify Your Connection and Create the Meal Hub
Your entire meal system will live in Notion, managed through conversation with Claude Desktop. Before building any databases, you need to confirm that Claude can actually reach your Notion workspace through the MCP connection.
Once the connection is verified, you'll create a single parent page that keeps everything organized in one place.
In this step, get ready to:
- Confirm Claude can read and write to your Notion workspace.
- Create a "Meal Hub" page to organize your meal databases.
Test your MCP connection
The MCP connection is the bridge that lets Claude read and modify pages in your Notion workspace. If it's not working, nothing else in this project will work either.
- In Claude Desktop, type a message asking Claude to search your Notion workspace for any existing page. Something like: "Search my Notion workspace and tell me what pages you can find."
- Wait for Claude's response. Claude will use the Notion MCP tools to query your workspace.
Claude should respond with a list of pages it found, or confirm that your workspace is accessible but empty. Either result means the connection is working.
What is happening behind the scenes?
When you ask Claude to search Notion, it calls the notion-search MCP tool. This tool queries your workspace and returns results directly to Claude, who then summarizes them for you.
You never have to call these tools yourself. Claude picks the right tool based on what you ask it to do.
Claude says it can't access Notion?
If Claude responds with an error or says it has no access to Notion, your MCP connection may not be configured correctly.
- In Claude Desktop, go to Settings then Connectors. Confirm the Notion connector is listed and shows a connected status.
- If the connector is missing, click Add Connector and enter the Notion MCP URL: https://mcp.notion.com/mcp. Complete the OAuth flow to authorize access.
Help me troubleshoot my Notion MCP connection in Claude Desktop.
Create the Meal Hub page
Now that the connection works, you'll create a parent page that acts as a container for everything you build in this project.
- In Claude Desktop, ask Claude to create a new page called "Meal Hub" in your Notion workspace. For example: "Create a new page in my Notion workspace called Meal Hub. This will be my parent page for meal tracking databases."
- Wait for Claude to confirm it created the page. Claude will tell you the page was created successfully.
Why a parent page?
Notion organizes content in a page hierarchy. By creating a dedicated "Meal Hub" page first, you keep all your meal databases nested under one roof. This makes your workspace tidy and makes cleanup easy later.
Before you check Notion, what do you expect to see when you open your workspace?
- Open Notion in your browser.
- Look in your sidebar for a page titled Meal Hub. It should appear as a new top-level page.
You should see the "Meal Hub" page in your Notion sidebar. The page will be empty for now. That's expected.
Don't see Meal Hub in Notion?
- Refresh your Notion browser tab. New pages created via MCP sometimes take a moment to appear in the sidebar.
- Check that Claude confirmed successful creation. If Claude mentioned an error, try asking it again.
- Make sure you're looking at the correct Notion workspace (the one you authorized during the MCP OAuth flow).
Help me find the Meal Hub page that Claude was supposed to create in Notion.
Your workspace is ready and the connection is proven. Next up, you'll create your first database and start logging meals just by chatting with Claude.
Create the Meal Diary and Log Your First Meals
Your Meal Hub is ready and waiting. Now it's time to fill it with the database that makes meal tracking effortless.
A meal diary is only useful if logging is easy. By creating a structured database through Claude and logging meals in plain English, you remove the friction that kills most food tracking habits.
In this step, get ready to:
- Create a Meal Diary database with structured properties for tracking meals.
- Log real meals using natural conversation with Claude.
- Verify that Claude captured your meals with correct dates, types, and notes.
Ask Claude to create the Meal Diary database
Your Meal Diary needs a consistent structure so every entry captures the same information. Notion databases use properties to define what each entry contains.
- Switch back to Claude Desktop and send the following message:
Create a database called "Meal Diary" under my Meal Hub page with these properties:
- Meal (title)
- Date (date)
- Meal Type (select with options: Breakfast, Lunch, Dinner, Snack)
- Notes (rich text)
Create a table view for this database.
What does this prompt do?
You're asking Claude to use the Notion MCP connection to create a structured database. Each property becomes a column in the table.
- Meal (title) is the name of what you ate.
- Date tracks when you ate it.
- Meal Type categorizes it as Breakfast, Lunch, Dinner, or Snack.
- Notes holds any extra detail (ingredients, how it tasted, where you ate).
- Wait for Claude to confirm it created the database.
- Switch to Notion and open the Meal Hub page.
- You should see a new Meal Diary database with an empty table view showing the four columns: Meal, Date, Meal Type, and Notes.
Don't see the database?
- Refresh the Notion page. Changes made via MCP sometimes take a moment to appear.
- Check Claude's response for any error messages. If it says it cannot find Meal Hub, try asking Claude to search for the page first, then create the database.
- Make sure you're looking inside the Meal Hub page, not at your workspace root.
Still stuck? Help me troubleshoot why Claude can't create a database in my Notion workspace.
Log meals by chatting naturally with Claude
Here's where the magic happens. Instead of clicking into Notion and manually filling rows, you just tell Claude what you ate in everyday language. Claude figures out the meal name, date, meal type, and any notes on its own.
- In Claude Desktop, send a message describing a meal you ate today. For example:
I had oatmeal with blueberries for breakfast today.
- Wait for Claude to confirm it added the entry to your Meal Diary.
- Send another message for a different meal:
Last night I made chicken stir fry for dinner.
- Log one or two more meals. Try a snack or a lunch to cover different meal types:
I grabbed a coffee and croissant for a snack this afternoon.
How does Claude know which fields to fill?
Claude reads your sentence and extracts the structured data automatically. "Oatmeal with blueberries" becomes the Meal title. "Breakfast" becomes the Meal Type. "Today" becomes today's date. Any extra context ("with blueberries") goes into Notes.
You don't need to follow a specific format. Claude interprets natural language and maps it to the database properties you defined.
Before you check Notion, think about what you expect to see. How many entries should be there? What meal type should each one have?
- Switch to Notion and open the Meal Diary database under Meal Hub.
- Check that each entry has the correct meal name, date, meal type, and notes.
You should see 3-4 entries in your table. Each row should have the meal name as the title, the correct date (today or yesterday depending on what you said), the right Meal Type (Breakfast, Lunch, Dinner, or Snack), and any extra details in the Notes column.
Meals showing up with wrong dates or types?
- If a date is wrong, send Claude a correction: "Actually that chicken stir fry was on Tuesday, not last night. Can you update it?"
- If a meal type is wrong (lunch marked as dinner), ask Claude to fix it: "Change the chicken stir fry to lunch instead of dinner."
- If entries are missing entirely, check Claude's responses for error messages about permissions or page access.
Need more help? Claude logged my meals with incorrect dates or meal types. How do I fix this?
You now have a working meal diary that you can update just by talking. No clicking into cells, no dropdowns, no manual date-picking. Next up, you'll try using this diary for meal planning and discover why that doesn't quite work.
Try to Plan Ahead in the Diary
Your Meal Diary is working. You can log what you ate by chatting naturally with Claude, and each entry lands in Notion with the right date, meal type, and notes.
But logging past meals is only half the picture. You also want to plan future meals. The obvious next thought is: why not just add future entries to the same diary? Let's try it.
In this step, get ready to:
- Ask Claude to plan meals for the next three days in your diary.
- Observe the problem this creates in Notion.
- Clean the diary back to only actual meals.
Ask Claude to plan meals in your diary
You already have a database that tracks meals with dates and meal types. It feels natural to put planned meals there too.
- Switch back to Claude Desktop.
- Send Claude this message:
Plan my meals for the next three days and add them to my Meal Diary.
Claude creates several new entries in your Meal Diary with future dates.
Spot the problem in Notion
Before you open Notion, think about this: when you look at the diary, how will you tell which meals you actually ate and which ones are just plans?
- Open Notion and navigate to your Meal Diary database under Meal Hub.
- Look at the full list of entries.
The planned meals for future dates sit right alongside meals you already ate. There is no way to tell them apart. Did you eat that Thursday dinner, or is it just a plan? The diary has no "status" property to distinguish planned from eaten.
Why is this a problem?
A meal diary tracks what happened. A meal plan tracks what you intend to do. Mixing both in one database creates ambiguity because every entry looks the same.
You could add a status property to the diary, but that changes the diary's purpose. A diary should be a simple log of facts. Planning needs its own dedicated structure with fields like day-of-week and meal slot that don't belong in a historical log.
Clean up the diary
Now that you've seen the limitation, let's restore the diary to its original purpose: a clean log of meals you actually ate.
- Switch back to Claude Desktop.
- Ask Claude to remove the planned entries:
Delete the planned entries you just added to my Meal Diary. Keep only the meals I actually ate.
- Open Notion and confirm the Meal Diary is back to containing only your original 3-4 actual meal entries.
Still seeing planned entries?
If Claude didn't delete all the future entries, tell it specifically which ones to remove by naming the meals or dates. You can also say "Delete all entries in my Meal Diary with dates after today."
Help me get Claude to delete specific entries from my Notion database.
You've just hit the exact problem that motivates a separate planner. Next up, you'll build a dedicated Meal Planner database with the structure that planning actually needs: day-of-week, meal slots, and status tracking.
Create the Meal Planner Database
In the previous step, you discovered firsthand why a meal diary breaks down when you try to use it for planning. Future meals mixed with past meals, and there was no way to tell them apart.
The fix is a dedicated Meal Planner database with its own schema. This database gets a Day field for organizing your week, a Meal Slot to distinguish breakfast from dinner, and a Status property to track whether you actually cooked what you planned.
In this step, get ready to:
- Create a Meal Planner database with day, meal slot, and status properties.
- Add a sample Monday plan to test the structure.
- Confirm the board view shows your meals organized by day.
Ask Claude to create the Meal Planner database
Your Meal Diary tracks what you ate. Now you need a separate space that tracks what you plan to eat. The key difference is the properties: instead of a freeform Date and Notes, the planner uses structured fields that let you see your whole week at a glance.
- Switch to Claude Desktop and send this message:
Create a new database called "Meal Planner" under my Meal Hub page with these properties:
- Meal (title)
- Day (select with options: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
- Meal Slot (select with options: Breakfast, Lunch, Dinner)
- Status (status with options: Planned, Cooked, Skipped)
- Week Of (date)
Create a board view grouped by Day.
Why these properties?
Each property solves a specific problem from your diary experiment:
- Day lets you organize meals into a weekly rhythm without relying on exact calendar dates.
- Meal Slot distinguishes breakfast from lunch from dinner, so you can plan all three for each day.
- Status is what the diary was missing. It tells you whether a meal is still just a plan, whether you cooked it, or whether you skipped it.
- Week Of anchors the plan to a specific week, so you can generate a fresh plan each week without losing old ones.
- Wait for Claude to confirm it created the database and the board view.
- Open Notion and navigate to your Meal Hub page.
- Confirm you see the Meal Planner database listed under Meal Hub.
Don't see the Meal Planner?
- Make sure Claude's response confirmed the database was created successfully. If it mentioned an error, try sending the prompt again.
- Check that you specified "under my Meal Hub page" in your message. Without that, Claude may have created it at the top level of your workspace instead.
- Try refreshing Notion or clicking into the Meal Hub page again. New databases sometimes take a moment to appear.
Still stuck? Help me troubleshoot why Claude didn't create my Meal Planner database in Notion.
Add a sample Monday plan
An empty database does not tell you much. Adding a few sample entries lets you confirm the properties work together and the board view displays correctly.
- In Claude Desktop, send this message:
Add a sample plan for Monday with oatmeal for breakfast, a turkey sandwich for lunch, and salmon with rice for dinner. Set the Week Of date to this coming Monday and mark them all as Planned.
What is Claude doing here?
Claude creates three separate entries in your Meal Planner database. Each entry gets the same Day (Monday) and Week Of date, but a different Meal Slot. All three are set to "Planned" status because you have not cooked them yet.
- Wait for Claude to confirm it added three entries to the Meal Planner.
Before you check Notion, what do you expect the board view to look like? Think about which column the three meals should appear in and what status they should show.
- Open Notion and click into the Meal Planner database.
- Switch to the board view if it is not already selected.
- Look for the Monday column. You should see three cards: oatmeal, turkey sandwich, and salmon with rice.
- Click on any card and confirm it shows Planned as the Status and the correct Week Of date.
The board view grouped by Day gives you a visual weekly overview. Each column is a day of the week, and each card within it is a meal. This is exactly the structure you were missing when you tried to plan inside the diary.
Cards not showing in the Monday column?
- If cards appear in an "Uncategorized" column, the Day property might not have been set. Ask Claude to update those entries and set Day to Monday.
- If you see a table instead of a board, click the view dropdown at the top of the database and select the board view that Claude created.
- If the board is grouped by something other than Day, click the three-dot menu on the view, select Group, and change it to Day.
Need more help? My Meal Planner board view isn't showing cards under the correct day column.
Your planner is structured and ready to scale. Next up, you will give Claude your food preferences and watch it generate an entire week of meals in seconds.
Generate a Full Weekly Meal Plan
Your Meal Planner now has the right structure: days, meal slots, and status tracking. The next goal is to fill it with a complete personalized week of meals in seconds.
Instead of spending 20 minutes deciding what to eat each day, you describe your food preferences to Claude Desktop once. It handles the tedious work of creating 21 structured entries across all 7 days, each slotted into the correct day, meal type, and status.
In this step, get ready to:
- Give Claude your food preferences and generate a personalized 7-day meal plan.
- Review and customize individual meals by asking Claude to swap them.
Give Claude your food preferences
The key to a good meal plan is giving Claude enough context about how you actually eat. A single message with your preferences is all it takes to produce a full week of meals tailored to you.
- In Claude Desktop, send a single message that includes your food preferences and asks Claude to generate a full 7-day plan. Include details like who you cook for, cuisines you enjoy, budget, how complex you want meals, and any restrictions.
- Also ask Claude to clear the existing sample Monday entries first so you start with a clean plan.
- Here is an example prompt you can customize with your own preferences:
I'm cooking for one person. I like Mediterranean and Asian food, I prefer
budget-friendly meals, and I want to keep breakfasts simple. I don't like
seafood except for salmon.
Please clear the existing sample entries in my Meal Planner, then generate
a full 7-day meal plan for this week. Set the Week Of date to this coming
Monday, mark everything as Planned, and fill in all three meal slots
(Breakfast, Lunch, Dinner) for every day of the week.
Make it yours
Replace the example preferences with your own. The more specific you are (favorite ingredients, time constraints on weeknights, allergies), the better Claude tailors the plan to your life.
What happens when you send this?
Claude reads your Meal Planner database structure, deletes the sample Monday entries, then creates approximately 21 new entries (7 days times 3 meals). Each entry gets the correct Day, Meal Slot, "Planned" status, and Week Of date.
This may take 10-20 seconds as Claude creates each entry through the Notion MCP connection. You can watch its progress in the Claude Desktop response.
- Wait for Claude to finish creating all entries. It will confirm when the plan is complete.
- Open Notion and navigate to the Meal Planner board view under your Meal Hub page.
- Confirm you see all 7 day columns (Monday through Sunday) with 3 meal cards in each column.
Don't see all 7 days populated?
If some days are missing meals, Claude may have hit a brief pause during creation. Ask Claude: "Are there any missing meals in my planner? Please check and fill in any gaps." It will compare the expected 21 entries against what exists and add anything missing.
If the board view looks empty, make sure you are viewing the Meal Planner database (not the Meal Diary) and that the view is set to Board grouped by Day.
Help me figure out why my Meal Planner is missing entries after Claude generated a weekly plan.
Review and customize your plan
A generated plan is a starting point, not a final answer. The real power is being able to tweak individual meals without rebuilding the whole week.
- Look through your 7-day plan in the board view. Pick one meal that does not appeal to you.
- Ask Claude to swap it by describing what you want instead. For example:
Replace Wednesday's dinner with something easier. I'll be tired that day.
Why vague requests work here
You do not need to name a specific replacement meal. Claude already knows your preferences from the earlier message and can pick something that fits your constraints while being "easier" (fewer ingredients, shorter cook time).
- Wait for Claude to confirm it updated the entry.
Before you check Notion, what do you expect to see for that day's dinner card? Will it show the old meal or the new one?
- Refresh your Meal Planner in Notion and find the day you asked Claude to update.
- Confirm the old meal is gone and the new meal appears in its place with the correct Day, Meal Slot, and "Planned" status.
Still seeing the old meal?
Notion pages sometimes need a manual refresh to show updates made through the API. Try closing and reopening the Meal Planner page, or press Cmd+R (macOS) or Ctrl+R (Windows) if viewing in a browser.
Claude may have created a new entry instead of updating the existing one. Check if you now have two entries for that meal slot on the same day and ask Claude to remove the duplicate.
Help me check why my swapped meal is not showing up in my Notion Meal Planner.
You now have a full personalized meal plan generated in seconds from a single conversation. Next up, you will take this system even further in the Secret Mission by turning your plan into a ready-made grocery shopping list.
Secret mission
Generate a Grocery Shopping List
A meal plan is only half the battle. The real payoff is walking into the grocery store with a ready-made list that covers exactly what you need for the week, with nothing forgotten and nothing doubled up. Can you get Claude to turn your planner into a shopping-ready checklist?
Clean Up Your Resources
Clean Up Your Resources
Decide whether to keep your resources running, pause them to come back later, or delete them entirely. This project runs entirely on Notion's free plan, so there are no ongoing costs regardless of which option you choose.
Resources you used:
- Meal Hub page (parent page in Notion).
- Meal Diary database (under Meal Hub).
- Meal Planner database (under Meal Hub).
- This Week's Groceries page (under Meal Hub).
Keep everything running
No action needed. Choose this if you plan to keep using the meal system weekly.
- Each week, ask Claude to generate a new meal plan and shopping list.
- Log meals throughout the week by chatting with Claude.
- Your databases stay in Notion indefinitely at no cost on the free plan.
Pause - I'll come back to this later
Your Notion databases persist at no cost. There is nothing to shut down or pause manually.
- All pages and databases remain in your Notion workspace until you decide to return.
- When you come back, open Claude Desktop and pick up where you left off. Your MCP connection will still be active.
Delete - I don't want to use this again
Remove all project resources from your Notion workspace. Deleting the Meal Hub page removes everything underneath it in one action.
- Open Claude Desktop and ask Claude to delete the Meal Hub page from your Notion workspace.
- This removes the Meal Hub page, the Meal Diary database, the Meal Planner database, and the This Week's Groceries page all at once.
- Open Notion and confirm the Meal Hub page no longer appears in your sidebar.
Nice Work!
Nice Work!
You just built a complete meal management system in Notion, entirely through conversation with Claude. No manual data entry, no form-filling, no clicking through property dropdowns.
You've learned how to:
- Build a Meal Diary database and log meals using nothing but natural language conversation with Claude through MCP.
- Discover why planning and logging need separate databases with different schemas, then design a dedicated Meal Planner with day, meal slot, and status tracking organized in a board view.
- Generate a full 7-day personalized meal plan in seconds by describing your preferences to Claude, and iterate on AI output by swapping individual meals on request.
- Secret Mission: Generate a consolidated, section-organized grocery shopping list from your weekly meal plan with deduplicated ingredients and combined quantities.
Ready to quiz yourself?