On Sunday afternoons, before I have decided what I am cooking, I walk down the hill from my apartment to the small Mercado de Arroios, with a list in pencil on the back of an old electricity bill, and I make, with great consistency, the same mistake. I buy three onions. The recipes I half-remember planning to cook — a soup, a tart, a stew — each call for an onion, and the brain that is also, simultaneously, considering whether to stop for a coffee on the way home, decides that an onion per recipe is a defensible quantity. By Wednesday, two onions have softened on the counter and one has begun to sprout. The tart, predictably, never happens.
The mistake is not really about onions. The mistake is that I have been treating my meal plan and my shopping list as two separate documents. They are not. They are one document, viewed two ways — the plan is the same data as the list, only sorted by night instead of by aisle — and the work of moving between them, by hand, on a small piece of paper, is the work that produces the third onion.
§ I.The four ways the list goes wrong.
I have, over the course of perhaps a decade of half-serious meal planning, tried every variant of the shopping list. The handwritten list, composed Sunday morning on the back of an envelope, is fast to make and beautiful to hold but reliably forgets the second clove of garlic that the second recipe needed. The recipe app's per-recipe list, generated cleanly from each individual recipe and then exported, gives me four separate lists with three onions on them and no way to merge. The standalone list app, into which I retype the ingredients from the recipes I have just read, doubles the work and halves my willingness to plan more than two days ahead. And the supermarket's own app, which has lately learned to suggest things, suggests the wrong things — usually whichever brand of pasta is on promotion that week.
Each of these failures has the same structure. The shopping list is being built by hand, by me, from data the recipes already contain. I am acting as the slowest possible piece of software between the recipes and the bag. The deduplication of the onions, the rolling up of the half-cup of olive oil that, of course, I already have at home, the sorting of the items by where they actually sit in the market — all of it is mental work that I am doing, badly, on a Sunday morning, while also thinking about coffee.
The list, in other words, should not be written. It should be computed.
§ II.Why most apps still get this wrong.
The strange thing, given how obvious the problem is, is how few recipe apps have actually solved it. Most still treat the shopping list as a downstream export — a button, somewhere on the recipe screen, that produces a flat text list of every ingredient in a single recipe. A few have gone slightly further and let you tick off items as you shop. Almost none have understood that the meaningful unit is not the recipe but the week — and that a week's recipes, considered together, share onions and olive oil and salt and half a lemon in ways the cook should not have to track.
There are reasons for this, and they are mostly historical. The recipe app was invented as a digital cookbook, and the digital cookbook does not care what is in your pantry. Adding a meal-planner module on top of a digital cookbook, which several apps have done, gives you a calendar — but the calendar does not, by default, talk to the list. So the list remains a manual artefact, and I remain the slow piece of software, and we are back to three onions.
The list, in other words, should not be written. It should be computed.
§ III.What a computed list actually looks like.
The first time I dragged a recipe onto a day in Basil's calendar — a leek and potato soup, a Monday in March — and then dragged a second recipe, a frittata, onto the Tuesday, the grocery list updated in the corner of the screen without being asked. By the time I had filled in the week — six dinners, one lunch, a small Sunday lentil thing — the list contained fourteen items. Not twenty-three, which is what the recipes' ingredient lists, summed naively, would have produced. Fourteen. The three onions had become two. The four eggs and the six eggs had become ten. The olive oil, which I had, in a small act of grace, told the app once that I keep in the pantry, was nowhere on the list at all.
It was, I noticed, also sorted. Produce first — leeks, onions, parsley, lemon. Then dairy — butter, eggs, the small piece of Gruyère. Then dry goods. Then the one frozen item. The order was the order in which my actual market is laid out, which the app could not have known specifically but had guessed correctly by following the ordinary geography of supermarkets everywhere: things that go cold last, things that crush easily near the top of the bag.
The most useful gesture, I came to feel, was the one that happened when I changed my mind. I deleted the frittata from Tuesday and replaced it with a pasta. The two eggs that had been needed for the frittata — and only those two — vanished from the list. The four other eggs, still required by Saturday's brunch, stayed. The list did the subtraction silently. I did not have to look at it. This, I think, is the thing.

§ IV.The hidden saving.
The conventional argument for a smart grocery list is that it saves money — fewer impulse buys, fewer wasted onions softening on the counter — and this is true, in a small way. The more interesting saving is in the cognitive overhead of the planning itself. When the list is free, the plan can be more ambitious. I find, since the list stopped being a thing I had to write, that I plan further ahead — sometimes ten days, sometimes a fortnight — because the cost of considering a recipe is no longer the cost of also re-typing its ingredients into a separate document.
The recipes have become, in some quiet sense, more available to me. I browse my own library more often. I cook from things I have not cooked from in months, because adding them to a Tuesday is a single drag, and the list will sort itself out. The bottleneck, it turns out, was never the cooking. The bottleneck was always the list.
It is Sunday again. I am walking down the hill towards the Mercado de Arroios, with a card in my pocket on which I have copied, in pencil, fourteen items, grouped into three sections. There is one onion on the card. I will buy one onion. The tart, this week, will happen. I will, on the way home, stop for a coffee, and consider that the small relief in my pocket — the relief of a list that knew how many onions a week of dinners actually wants — is the kind of thing that, for years, I did not know I had been doing without.


