Your gross profit number is only as real as your recipe lines
Supplier price, product cost, recipe line, menu cost. Most kitchens have the first two and nothing in the third — so the margin on screen is a dressed-up guess.
Every stock system sells you gross profit. Most of them will show you a GP figure within a week of going live. That figure is almost always wrong, and it is worth understanding exactly where it breaks, because the fix is not software.
The chain
A real cost per dish is the end of a four-link chain:
- Supplier price. What you pay for a case of limes.
- Product cost. What one lime costs, derived from the case.
- Recipe line. How much lime goes in one taco.
- Menu cost. The sum of the lines, against the selling price.
Links one and two get filled in almost by accident, because they arrive on invoices and somebody has to process invoices anyway. Link four is arithmetic the software does for free.
Link three is the one that requires a human being to sit down with every dish on the menu and say how much of each thing goes in it. It is genuinely hours of work, it is nobody's favourite afternoon, and it is the one that never gets done.
What that looks like on a screen
We audited our own production database and found the number that reframed several months of work: hundreds of active recipes, and zero ingredient lines across all of them. Products carried real cost prices. The costing code was correct. It was running over an empty set.
Every margin on that menu was a question mark, and the honest thing was to print a question mark. Which brings up the design rule that matters more than any of the arithmetic:
An uncalculated margin must look like a blank, not like 100%
If cost is missing and your system treats missing as zero, every uncosted dish reports a hundred per cent margin. That is not a small display bug. It is a number that will be added up, reported on, and used to decide what stays on the menu — and it flatters exactly the dishes nobody has looked at.
We shipped that bug. A £90 bottle of wine sat on a menu screen claiming full margin because nobody had entered a cost, and it looked entirely plausible next to the dishes that had been costed. A blank is honest. A confident zero is not.
How to actually get the lines in
The only approach we have seen work is to make entry fast and forgiving rather than to nag. Let a chef paste a block of text — a spreadsheet column, or prose like "120g chicken thigh" — and parse it.
Then be strict about what you refuse to guess:
- A name matching two products is a question, not a coin toss.
- A quantity you cannot read is not zero, because zero means the ingredient is free.
- Grams against a product held in litres should be flagged, not silently converted. A quiet factor of a thousand is the same class of bug as a price in pounds stored as pence, and it is just as hard to spot afterwards.
The honest summary
Start with your twenty highest-volume dishes rather than your whole menu. Twenty dishes will cover most of your covers, and a real GP on eighty per cent of your sales beats a fictional one on all of it.
And when a supplier demonstrates gross profit reporting, ask them what the screen shows for a dish nobody has costed. The answer tells you a great deal about how much of the rest you can trust.