← CartMyMeals
Product story

Why this exists and how it’s built

The problem, who it’s for, where it sits among existing tools, how it works in five levels, what building it taught me, what it will never do, and what’s still missing.

Sunday, 4:00 → 5:0037 tabsTacos?again?protein?Do we haveeggs??!???Every week.
Summary

An hour of chores, every week

Every week, people who eat to a goal spend an hour or so on the same chores: adding up calories from labels, checking what’s in the fridge, writing a grocery list, and searching a store’s website for each item.

CartMyMeals plans your week around your goals, skips what you already have, and shows how every number was worked out. Then it fills your own Amazon or Walmart cart.

Why and how I built this

Why

Eating to a goal is a weekly chore.

I wanted one path from goal to cart.

How
01

The problem

Planning meals to a goal is hard. Even a good plan fails without the ingredients.

1. Hard to plan

Hitting 1,800 calories and 120 g of protein means adding up every label. AI chatbots just guess.

“Where did 420 calories come from?” The chatbot made it up.

2. No ingredients

Some of it is at home. The rest waits for a store run, or an order you put off or forget.

“I have the plan, but not the ingredients until Saturday.”

3. Goal missed

So you swap in what you have, like pasta for chicken, and the week drifts off target.

“I swapped in pasta and fell 30 g short on protein.”
02

Who it is for

Three people I designed for, each mapped to a feature that serves them. Hypotheses Being checked in a private beta of about 150 people.

MayaThe macro tracker · Trains four times a week
Goal

1,800 calories and 120 g protein a day, without a spreadsheet.

“I spend Sunday adding up labels, and I still don’t trust the numbers.”
What helps

Every number computed from USDA data, with the math shown.

Priya and SamThe family planners · Two kids, one with a nut allergy
Goal

One menu the whole family eats, sized for the kids.

“By the time I’ve checked every label and built the cart, dinner is late.”
What helps

Kids’ portions and allergies, and the whole list in one Walmart cart.

JordanThe plant-based cook · Vegan, with a full pantry
Goal

Enough protein, without wasting what’s already at home.

“Half my lentils expire because I forget I bought them.”
What helps

Vegan filters, and a week planned around the pantry first.

Willingness to pay Hypothesis Strong interest in anything that saves one to two hours a week and removes nutritional guesswork. Not yet tested.

03

The landscape

Trackers get the numbers right after you’ve eaten. Chatbots plan ahead but recall their numbers. Meal kits ignore what’s in your fridge. No one plans ahead with verifiable numbers and ends at a cart.

04

The solution, in levels

Each level removes one kind of risk before the next is added. Levels 1 to 3 are built. Levels 2 and 3 run on the try-it page and through the MCP server, so the same engine works inside Claude.
  1. 1

    LLM answerer (the baseline)Benchmark

    Profile in, seven-day plan out. The model invents meals and recalls their calories. Kept deliberately, as a live benchmark: its figures disagree with Level 2’s by roughly 15% on calories and 17% on protein.

  2. 2

    Retrieval with computed nutritionLive

    The model may only pick recipe ids from a shortlist. Every calorie is arithmetic in a database view: 60 g oats × 380 kcal/100 g = 228 kcal. Live for visitors: start with one sentence and the week is arranged to your wishes, then change it in your own words (“swap beef dinners for tofu”). Claude only picks from meals the rules allow, and any id outside them is dropped.

  3. 3

    Pantry shortfall and a scoped cartLive

    Need minus have, in grams, across three unit systems (grams, packages, shoppable units). Each gap is matched to a real product by a scorer; weak matches are declined and shown, never guessed. The cart is built and handed over at checkout, on the demo store or as one link that fills the shopper’s own Walmart cart. The same tools are offered to AI apps as an MCP server, so a week can be planned and shopped from inside Claude (cartmymeals.com/mcp).

  4. 4

    OrchestrationStarted

    Claude already has five jobs, each with a model chosen by comparison: Sonnet reads a household sentence and receipts, arranges the week and turns requests into changes; Haiku lists a dish’s groceries; rules check each one. Still to build: one controller over them, the two approval gates as real steps, and a visible run trace of which model ran, what it cost and where it waited for a person.

  5. 5

    Preference rerankerNot started

    A small model trained on logged Keep / Swap / Skip decisions, reranking candidates without loosening the guardrails. Waiting on enough real decisions; they are logged from day one and cannot be backfilled.

How it’s built

Guardrails:No checkout tool: a person always paysYou approve the menu firstThe model picks recipes, never numbersLow-confidence matches go back to youAllergies filter every mealAll nine →Evals: five automated checks run against the real planner and storeDiet rules 80/80Allergies 20/20Nutrition fit 35/36Pantry reading 42/42Cart matching 92/92How I test it →

Next.js 16 and React 19 on Vercel · TypeScript · Postgres on Neon · Walmart prices via SerpApi · Shopify Storefront GraphQL · Claude Haiku 4.5 and Sonnet 5.5 · MCP (Streamable HTTP) · USDA FoodData Central

Integrations

8 grocery integrations built or evaluated. Two are live for shoppers, who pick the store: Amazon (through Amazon Fresh or Whole Foods) or Walmart, each taking the whole list; ordering sits behind one interface (a shortfall list in, a cart out), so the rest can drop in without touching the planner.

The public version

Anyone can try it, with no account:

  1. Describe your household in one sentence, or fill in the form. CartMyMeals plans the week from it, and you can change anything in your own words.
  2. List the pantry, or skip it. The week is planned around what’s at home.
  3. Edit and approve. Replace or remove meals; nothing is listed until you approve.
  4. Fill your Amazon or Walmart cart, or save the list for any store.

By default the week is chosen by retrieval and rules, with no model call, so it’s instant. Ask CartMyMeals to arrange or change it and it picks only from the recipes the rules retrieved; every number is still computed. It also reads what people write or photograph, into choices they check.

Example of what it produces
A real week from Try it: 28 meals for an 1,800-calorie target, each coloured by its main protein, with Replace and Remove buttons
A real week from Try it: an 1,800-calorie target, planned around four pantry items.
05

What building it taught me

Six things I’d take into the next product.
06

What testers told me, and what changed

A private beta since September 2026. Each change below shipped within days of the feedback.
~150visitors
43planned a week
16sent a real cart
10wrote back

The meals repeat way too often. I have the same lunch almost every day.

Beta tester
✓ What changedMore variety

Five breakfasts, six lunches and a different dinner each night, and a note when choices are too narrow to avoid repeats.

I would never eat chicken breast at breakfast.

Beta tester
✓ What changedBreakfast that makes sense

No meat or fish at breakfast by default, and a choice of sweet or savory.

I would never buy Atlantic salmon, only wild caught.

Beta tester
✓ What changedShopping preferences

Organic, grass-fed, free-range and wild-caught swap the products that go in the cart.

The meals were very different from what my family eats.

Beta tester
✓ What changedTheir food, not ours

Cuisines they love, meats they eat (no beef, no pork), and 54 more recipes, from dal makhani to chicken tinga tacos. Indian dishes appear only for those who pick Indian.

Ask for favorites.

Beta tester
✓ What changedFavorites and own dishes

Favorite dishes repeat every week. Any dish, recipe link or YouTube video can go anywhere in the week, with its ingredients in the cart.

Items added to my Walmart cart were not the correct amounts: 12 broccoli crowns.

Beta tester
✓ What changedStore-sized amounts

Quantities are rounded to what stores sell, and anything not found is listed so nothing goes missing quietly.

What the numbers said. Most people who finish the first screen plan a week, and about one in three of those send a cart. The first screen lost the most people, so it got shorter: optional preferences fold away, the week reads one day at a time on a phone, and people can now start with one sentence instead of a form.
07

Guardrails: What the agent cannot do

The principle is safety by architecture, not by prompt.

No purchasing

Checkout tools such as complete_checkout are never wired in. The agent can stage a cart; only a person can pay.

Show what was sent

Some cart APIs are write-only and can’t be read back, so every payload is recorded and shown, and test environments are labeled as test.

No silent substitutions

Below a confidence threshold the match is declined, the reason is shown, and the choice goes back to the person.

You approve first

Nothing goes on a shopping list until you approve the week. Whatever CartMyMeals reads or changes (a sentence, a dish, a receipt, a request) comes back as choices you can see and undo, and its use is capped per visitor per day.

Allergies cover the whole table

“Soy” removes tofu, edamame and soy sauce, not just the word. A child’s allergy applies to everyone’s meals, since the family eats together. The allergy eval checks this: 20 of 20.

Says no instead of guessing

If no meal fits your diet and allergies, it tells you rather than bending a rule. A pantry line it can’t read, or a “box” with no known weight, is flagged, not guessed.

The model can’t invent numbers

It picks recipe ids from a retrieved shortlist and never writes a calorie. An id outside that list is dropped and reported; every figure is computed from gram weights.

Edits can’t bend the rules

Replace and Add only offer meals that already passed your diet and allergy filters, and the server re-checks every choice, so an edited request can’t bring a meal back in.

Warns before it adds

Walmart’s link adds to whatever is already in your cart and can’t empty it, so the page tells you to empty it first rather than letting old items slip through.

08

Success criteria

These are targets, not measured results. The app has not yet run at a scale that could measure them.
MetricTargetWhere it stands
Weekly planning and ordering timeFrom ~60 minutes to under 10Not yet measured
Nutrition figures produced by a modelZeroMet by design Every figure is computed from gram weights, using USDA values for 51 of 99 ingredients and standard food-composition tables for the rest.
Product match precisionOver 90% of matches accepted first time; no unflagged wrong substitutesPartly built In the offline eval every stocked ingredient matched the right product and none matched a wrong one; acceptance by real shoppers not yet measured
From list to a real retailer’s cartOne click, no retypingMet for Amazon and Walmart The whole list goes to the shopper’s cart in one click: Walmart’s add-to-cart link, or Amazon Fresh and Whole Foods through Amazon’s ingredients page. Instacart still goes item by item
Food wasteLess leftover food each week, by netting out what is on handPartly built Pantry netting built; waste not yet measured
09

Evals: How I test it

Six evals run the same code the site runs and judge it against rules written out separately, so a bug in the planner can’t also hide itself from the test. Five call no model, so they’re free and give the same answer twice. The sixth has Claude arrange weeks for three households and checks every pick came from the rule-filtered shortlist and still respects the diet and allergies. Last run October 6, 2026.
EvalWhat it asksResult
Diet and style rules
safety check
Across every diet, style, gluten-free and protein combination, does any meal or Replace option break the rules?80 of 80
Allergies and dislikes
safety check
When someone types an allergen in "Avoid", does any meal or Replace option still contain it?20 of 20
Nutrition fitDoes the week land within 15% of the calorie target, and within 10% of the protein goal when one is set?35 of 36
Pantry readingDoes typed pantry text become the right ingredient and amount, and is anything unknown left unrecognised rather than guessed?
0 non-food or unknown items were wrongly matched
42 of 42
Cart matching
safety check
For every ingredient the store stocks, is the right product put in the cart? Is anything put in the cart that is wrong?
0 wrong products in the cart, 0 held back for a person to choose, 5 not stocked
92 of 92

Findings so far

<1 minfrom Try it now to a cart
92/92right store product, none wrong
269recipes, nutrition computed from grams
1 clickwhole list into a Walmart cart

Since Oct 1, visitors built 115 carts and sent 10 to Amazon and 12 to Walmart. These measure the product. A private beta with real shoppers is running now: see what they told me below.

Bugs the tests caught

ProblemSomeone avoiding soy still got tofu. Avoiding milk still gave yogurt.

FixedAn allergy now covers every food made from it.

Problem“Almond milk” in the pantry was read as almonds.

FixedThe pantry reader tells them apart.

Problem“2 cans black beans” was read as dried beans.

FixedCanned beans count as cooked beans.

ProblemA vegetarian week included a soup made with chicken broth.

FixedBroth now counts as meat.

ProblemA gluten-free week included bread crumbs.

FixedBread crumbs now count as gluten.

ProblemThe shopping list showed a different tortilla than the one added to the cart.

FixedThe list now shows exactly what goes in the cart.

ProblemA cheaper model looked as good at reading receipts, but read 10 oz of spinach as 10 g.

FixedThe model test now checks amounts, and receipts stay on Sonnet.

Still not perfect: 1 of 36 nutrition checks fails. A 1,400-calorie, high-protein vegan week comes out about 15 g short on protein. The test stays strict, so the score only goes up when the recipes get better.

Which model for which job

The same test inputs went to three Claude models for each AI task: accuracy, then seconds and cost per call. The rule: the cheapest model that scores as well as the best. Bigger wasn’t better on most tasks.

TaskHaiku 4.5Sonnet 5.5Opus 5.5
Describe household98%1.2 s · 0.17¢98%2.2 s · 0.39¢In use100%2.5 s · 0.81¢
Suggest ingredients90%1.2 s · 0.13¢In use93%1.9 s · 0.29¢93%2.2 s · 0.59¢
Read receipts92%2.4 s · 0.14¢100%2.4 s · 0.34¢In use100%3.5 s · 0.91¢
Arrange week100%6.3 s · 0.59¢98%8.4 s · 1.80¢In use93%11.8 s · 3.93¢

Small samples (10 sentences, 10 dishes, 5 receipts, 3 weeks), and the week test checks safety and variety, not taste. The first version of this test only checked that receipt items were found, and Haiku looked as good as Opus. Checking amounts too showed Haiku reading ounces as grams (10 oz of spinach as 10 g), so receipts stay on Sonnet. Haiku lists groceries, where it matched the larger models; Sonnet arranges the week until a test of week quality, not just safety and variety, says otherwise.

10

Limitations

What it can’t do yet, stated plainly.
Food data4
  • Not every value is from USDA51 of 99 ingredients use USDA values; the rest use standard food-composition tables. Protein bars are branded, and cooking losses aren’t modelled.
  • Strict diets still rotate269 recipes now, 18 with fish, but a vegan keto week still has only a couple that fit. The planner says so rather than padding the week.Roadmap: More recipes for narrow diets
  • Portions scale, within limitsEach recipe scales from 0.75× to 1.5×, so weeks land close to the calorie goal. Low-calorie, high-protein vegan weeks still fall 10–15 g short on protein.Roadmap: More recipes for narrow diets
  • The pantry reader knows only its own ingredientsUnknown items are ignored, and a “box” with no known weight is flagged.Roadmap: Pantry from a photo
Store and safety3
  • Walmart’s cart is a one-way linkThe link adds to your Walmart cart but can’t empty it first or read it back. Items already there stay, and fresh food needs a local store set.Roadmap: A real store, confirmed
  • Allergies are matched by nameIt can’t see inside a packaged protein bar or wrap.
  • Amazon picks the productsAmazon Fresh and Whole Foods match each item themselves, so pack sizes can be larger than needed, and items not stocked locally are flagged for the shopper to swap. A browser opens one tab per click, so one cart is the whole list.
Proof2
  • The AI suggests, rules decide what’s allowedCartMyMeals reads a household sentence, a dish or a receipt, arranges the week and changes it on request, but only with meals the rules allow. Arranging adds about ten seconds; without a wish, the instant rule-based week is used.Roadmap: Level 4, orchestration
  • A small private betaAbout 150 people since September 2026. Feedback is qualitative; time saved isn’t measured yet.Roadmap: Measure time to cart
11

Roadmap

  1. Shipped
    • ✓Levels 1–3Model baseline, computed nutrition, pantry shortfall and a scoped cart.
    • ✓Amazon in one clickThe whole list to Amazon Fresh or Whole Foods, matched by Amazon.
    • ✓Walmart one-click cartThe whole list into a real Walmart cart.
    • ✓Sourced nutrition dataAll 99 ingredients traced to USDA or a standard table.
    • ✓6 evalsDiets, allergies, nutrition, pantry, cart and AI-arranged weeks, re-run with every change.
    • ✓269 recipes, scaled portionsMyPlate Kitchen recipes, dishes testers asked for, and a full week for every cuisine and diet; portions scale to the target.
    • ✓Taste and favoritesCuisines, meats, shopping preferences, favorite and own dishes.
    • ✓A phone-first weekOne day at a time, with a tap menu for each meal.
    • ✓An MCP serverPlan, swap and shop from inside Claude or any MCP app, with the same guardrails.
    • ✓Talk to itStart with one sentence, change the week in your own words, get any dish’s groceries, read a receipt; it only uses meals the rules allow (RAG).
  2. NowI am here
    • Private betaRunning since September 2026, about 150 people so far. Next: measure time to cart and matches accepted.
    • Re-measure Level 1Re-run its ~15% gap against the USDA-based figures.
  3. Next
    • More recipes for narrow dietsHigh-protein vegan and keto, so strict weeks stop rotating through a handful.
    • A real store, confirmedA partner API that reads the cart back and offers swaps.
    • Pantry from a photoSnap the fridge; a vision model fills the pantry to check.
    • A weekly budgetSet a spend limit in your profile; the planner favors cheaper meals and shows the list against it.
    • No repeatsAn option for a week where no meal repeats. Today each slot rotates five to seven recipes.
  4. Later
    • Level 4, orchestrationSeparate models for ideas, rules and cart, with a visible trace.
    • Level 5, preference rerankerLearn from Keep / Swap / Skip without loosening a guardrail.