Picnic grocery agent
A grocery agent that plans the weekly menu, works out what's running low and fills the Picnic cart, so the weekly thinking no longer lands on one person.
A grocery agent that takes the recurring thinking out of our weekly shopping. It proposes a menu, works out which basics are probably running low, and fills our Picnic cart once I've approved the plan. The order itself I always place myself.
The problem
Ordering groceries isn't the hard part. Everything before it is: deciding what to eat, remembering what's running low, and turning that into a list. Every week again.
That thinking is easy to overlook, until it keeps landing on the same person. At our place it did, and it caused enough irritation to become a real discussion. Instead of dividing the thinking more fairly, I decided to try removing it altogether. The full story: We kept fighting about groceries. So I built an AI to end it.
A week with the agent
- During the week: the kitchen tablet shows six candidate dinners for next week. We tap the four we want.
- Sunday: I ask the agent to do the groceries. It first pulls our picks and ratings from the tablet.
- Restock check: it reads the last eight weeks of Picnic orders and works out which basics are probably running low, and which we still have enough of.
- The plan: it shows me the menu, the list of basics and what it skipped, and waits.
- The cart: after approval, it adds each recipe to the Picnic cart, fine-tunes the ingredients and adds only the basics we need.
- The order: I check the cart in the Picnic app, maybe change one thing, and place the order.
- After dinner: each dish gets a rating on the tablet. Those ratings feed into the next week.
How it's built
There's hardly a traditional application. The project consists of a few building blocks:
- A Cursor agent that runs the weekly workflow
- A skill: plain-text instructions describing the workflow step by step, plus the house rules
- Memory files: our preferences, favourite recipes, substitutions, restock rhythms and the history of past weeks, all in plain files instead of a database
- The Picnic MCP server, which gives the agent tools for recipes, products, past deliveries and the cart
- A Home Assistant dashboard on a kitchen tablet, kept in sync with the memory files by two small scripts
Cursor agent
↓
groceries skill + house rules
↓
memory files ←→ Home Assistant dashboard
↓
Picnic MCP
↓
Picnic cart → I place the orderDesign principles
- Fill the cart, never order. The agent may fill the cart. It may not place an order or pick a delivery slot. Checking a cart costs a minute and catches what the agent can't know.
- Rhythm instead of habit. Every basic product has a typical restock interval. Combined with the order history, that's a good enough stock model, without anyone counting what's in the cupboard.
- Variety with limits. About four dinners a week: mostly favourites, one new recipe. Nothing repeats within three weeks. Vegetables follow the season.
- A soft budget. The agent warns me when the cart goes over our usual weekly budget. Not a hard limit, just a guardrail.
- Memory in files. Preferences live in files the agent reads every week, not in a chat it might forget.
- Mistakes become rules. Every correction I make is turned into a rule, so I only have to make it once.
The kitchen dashboard

The tablet shows this week's dinners with the recipe, a button to open it in Picnic, a 1 to 5 rating and a note. Next week's candidates are below it. Five stars turns a recipe into a favourite; one or two stars means it never comes back. More in A kitchen tablet that rates dinner.
What it's not
- Not an app with its own backend or database
- Not autonomous: it never orders without me
- Not a stock administration: stock is an estimate, on purpose
- Not a smart fridge: no cameras, no sensors, just order history and the occasional "still enough" from me
Learnings
- The thinking is the chore, not the ordering. Automating what comes before the order saves far more than automating the order itself, and it's what actually ended the discussion at home.
- Order history is a surprisingly good stock model. It doesn't have to be perfect to be a lot smarter than the same standard list every week.
- Config beats chat history. Preferences that live in files survive between sessions. Preferences mentioned once in a chat don't.
- Let mistakes become rules. Writing hundreds of rules up front doesn't work. Turning each real mistake into one rule does. Pre-chopped onions, jarred pesto and winter vegetables in summer each led to one rule.
- Choosing beats inventing. Picking four dinners from a shortlist of six is a two-minute decision. Coming up with four ideas is not.
- Put feedback where the moment is. Ratings only started happening once they could be given on a tablet in the kitchen, right after dinner.
- The platform has opinions. Picnic only emails the cooking instructions when a recipe is added as a recipe, and parallel cart updates cause lock errors. Details like these only show up by using it every week.
Status
In weekly use. The menu, restock check, cart filling, learning from changes and the kitchen dashboard all work. Groceries bought elsewhere don't show up yet, and some household exceptions still need a manual nudge.
Next steps
- Receipts in the purchase history. I've started photographing receipts from other shops. The next step is to read them and add the products to the history, so the stock estimate reflects what actually comes into the house.
- A better stock estimate. Combining order rhythms, receipts and the occasional "still enough" or "almost gone".
- Household exceptions. Evenings we're not home, guests, holidays: the things that make a normal week not so normal.
- A richer dashboard. Making the kitchen tablet the main place for feedback and choosing next week's dinners.
- Deeper Home Assistant integration. Letting the planning use more of what the house already knows.
Read more
- We kept fighting about groceries. So I built an AI to end it: why I started this project
- How my grocery agent works: the technical story and the lessons along the way
- A kitchen tablet that rates dinner: the Home Assistant dashboard in the kitchen