Skip to content

Generate a shopping list from your plan

3 min read 2 tools Updated May 12, 2026

— Say it like this
Pull a shopping list for the week.
2 more ways to say it
  • Shopping list, next 7 days.
  • Generate a shopping list for Mon–Thu only — I'm out of town on Friday.
— Here's how it goes

What you'd see in chat

  1. Pull a shopping list for the week.
  2. Pulled the list for May 13–19 from the cut plan — 32 line items grouped by aisle, with chicken breast aggregated to 1.2 kg across the week and oats at 280 g. Saved meals expanded into their components so nothing's hiding. Want me to trim a day, or is the full week good?

Sunday morning, before heading to the supermarket. You don't want to read every meal of the week and tally items by hand — you want the aggregated list, summed across days, grouped by category, ready to walk the aisles with.

What the agent needs to hear

Behind your sentence, the agent works backwards to two pieces: which window to scan (default: the next 7 days from today) and the active plan to read from — implicit context, because this recipe only makes sense with a plan in play. If no plan is active, the agent stops and asks you to activate one first.

You can narrow the window (« Mon–Thu only — I’m out of town on Friday »), extend it (« next 14 days, the whole prep cycle »), or anchor it to a specific date range (« from the 15th to the 22nd »). On a clean call the agent renders the list on a card grouped by category — produce, proteins, grains, dairy, pantry, frozen — before you save or copy it.

What gets aggregated and grouped

Every meal item across the window’s days gets summed into a single line. A chicken breast appearing in 5 meals shows up once: « 5 × 150 g chicken breast = 750 g ». Same for oats across breakfasts, same for olive oil dribbled across dinners. Counting happens before grouping, so the line you read is the line you put in the cart.

Category grouping is the default so you walk the aisles without backtracking. Saved-meal items expand into their components: a « post-workout shake » becomes whey + banana + oats lines, not « 1 shake ». Recipes expand the same way, with per-portion quantities multiplied across every day they appear.

What the list assumes vs what it doesn’t

The list assumes you’re cooking the plan as written. It doesn’t reconcile against what’s already in your pantry — you mentally subtract « I have 200 g of rice already » before shopping. It also doesn’t predict deviations: if you tend to skip Wednesday dinner because you’re travelling, exclude that meal from the window (« next 7 days, excluding Wednesday »).

The list is generated on demand each time you ask. It isn’t saved, isn’t compared against last week’s, and doesn’t learn your pantry over time. If you want a record, copy it to wherever your shopping lives — the agent treats it as ephemeral by design.

When the agent gets it wrong

The window is the most common miss. « Pull the list » at lunchtime on Sunday can land on Mon–Sun when you only cook Mon–Fri — the weekend items inflate the cart. Correct it in plain language: « no, Mon–Fri only ». The card recomputes.

Aggregation slips when the same item lives under two names. « Rice » from breakfast and « jasmine rice » from dinner can sit on separate lines — « merge those, they’re the same rice » collapses them. The third miss is a phantom item: a protein bar shows up because it’s in a saved meal you haven’t actually eaten in a month. « Exclude the bar from this week’s list » drops it.

What makes the list worth generating

Three things decide whether the list saves your Sunday: the window matches what you’ll actually cook (a 7-day list for a 4-day week of cooking inflates the cart), aggregation is clean (the same item across days shows as one line, not five — otherwise you triple-buy), and the list assumes you’ll cook from it (if you tend to deviate mid-week, plan for the deviation by trimming the window first). Generated against an honest window and followed honestly through the week, the list is what makes meal prep feel mechanical instead of fraught.

— Related