Know what you made. Not what you hoped.
Every dish is a recipe, every sale takes its ingredients off the shelf, and the margin updates as prices change.

A dish is a recipe.
A recipe is a cost.
- Build it once. Ingredients — including other recipes, so a taco can contain this morning’s birria batch.
- Sell it anywhere. Till or QR: every sale takes the ingredients off the shelf. Delivery-app orders reach the kitchen screen but do not move stock yet.
- Wastage at cost. A binned £15 dish is a £3 loss, never a £15 one — anything else double-counts a sale that never happened.
Reports that answer back.
- Against what these days usually do — not against an arbitrary last week.
- Ask in plain English. “How did we do last week?” gets an answer computed only from your own numbers.
- It tells you the bad news too. If takings are down, the screen says so and says why.
Cost your menu this week.
Type your supplier prices in once — or photograph the invoice — and every dish knows its margin.
From the journal.
Notes from building this, written as it happened. All posts →
Moving stock between two kitchens, and who signs for it
When one kitchen in a hall lends stock to another, one number update is not enough. A transfer is three moments — sent, in transit, received — and the person who sent it must not be the one who signs it in. Why the van in the middle matters.
Read it → 29 August 2026A switch nobody hears is not a switch
The sold-out toggle worked perfectly — the database knew, payment refused — and the till kept selling the item for the whole gap in between. Where availability state actually has to live.
Read it → 29 August 2026The guest's menu is older than your shelf
A QR menu loads once and sits on a table while stock changes behind it. What has to happen when a guest orders a dish that sold out after their page loaded.
Read it →