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.
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.
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 Walmart cart in one click.
I wanted one path from goal to cart.
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.
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.”
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.”
Three people I designed for, each mapped to a feature that serves them. Hypotheses Checked with a few friends; not yet validated at scale.
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.”
Every number computed from USDA data, with the math shown.
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.”
Kids’ portions and allergies, and the whole list in one Walmart cart.
Enough protein, without wasting what’s already at home.
“Half my lentils expire because I forget I bought them.”
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.
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.
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.
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. Change a gram weight and every total that uses it updates.
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.
Several models behind one controller, two approval gates as real product surfaces, and a visible run trace of which model ran, what it cost and where it waited for a human.
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.
Next.js 16 and React 19 on Vercel · TypeScript · Postgres on Neon · Walmart prices via SerpApi · Shopify Storefront GraphQL · Claude Sonnet 5 and Opus 5 · USDA FoodData Central
7 grocery integrations built or evaluated. One is live for shoppers; ordering sits behind one interface (a shortfall list in, a cart out), so the rest can drop in without touching the planner.
Anyone can try it, with no account:
It runs on retrieval alone, with no model call, so it’s instant, free to run, and private.

Checkout tools such as complete_checkout are never wired in. The agent can stage a cart; only a person can pay.
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.
Below a confidence threshold the match is declined, the reason is shown, and the choice goes back to the person.
Nothing goes on a shopping list until you approve the week. A scanned receipt becomes rows you check before they count, and scans are capped per visitor per day.
“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.
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.
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.
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.
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.
| Metric | Target | Where it stands |
|---|---|---|
| Weekly planning and ordering time | From ~60 minutes to under 10 | Not yet measured |
| Nutrition figures produced by a model | Zero | Met by design Every figure is computed from gram weights, using USDA values for 51 of 52 ingredients. |
| Product match precision | Over 90% of matches accepted first time; no unflagged wrong substitutes | Partly 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 cart | One click, no retyping | Met for Walmart The whole list goes to the shopper’s Walmart cart in one link; Instacart and Amazon still go item by item |
| Food waste | Less leftover food each week, by netting out what is on hand | Partly built Pantry netting built; waste not yet measured |
| Eval | What it asks | Result |
|---|---|---|
| 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 fit | Does the week land within 15% of the calorie target, and within 10% of the protein goal when one is set? | 30 of 36 |
| Pantry reading | Does 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, 0 not stocked | 51 of 51 |
Since Sep 28, visitors built 158 carts and sent 31 to Walmart. These measure the product, not people; user testing is next on the roadmap.