Why prices need a date stamped on them
The difference between a costing system that is useful for two months and one that is useful for years is a stored date and a stored set of prices.
Key takeaways
- Store the price of every ingredient used, not a reference to the current price.
- That is what lets a cost change be attributed to a specific ingredient.
- Recipes are versioned; a recipe change is a new version, not an edit.
- Surface staleness: a costing older than a month should say so.
- Weighted average purchase price beats the latest invoice.
Stamped, not referenced
- Compute
- Security & identity
- Analytics
- Front-end & mobile
What this buys you
Two costings of the same dish, three months apart, with all their inputs stored, can be diffed. The dish went from four sixty-two to five oh eight, and eighty per cent of that is the beef price, twelve per cent is the cream, and the rest is rounding.
Without stored inputs the only available statement is that the dish costs more, which everybody already knew. The attribution is the useful part and it costs nothing except storing a few numbers.
Attributing a change
That decomposition answers the only question worth asking when a food cost percentage moves: what changed? Without it the response is a general instruction to watch costs, which nobody can act on.
It also identifies where to spend effort. A dish whose cost is dominated by one ingredient is a dish whose profitability depends on one supplier negotiation, which is worth knowing before the negotiation.
Weighted average, not latest
Using the most recent invoice price makes costings jump around with delivery timing and makes a promotional price look like the new normal. A weighted average over the last few deliveries is more stable and is closer to what the kitchen is actually consuming.
The exception is a genuine step change — a new contract, a supplier switch — where the average lags reality for several weeks. Flagging a price that has moved more than a threshold from the average, so somebody can decide, handles that without needing cleverness.
Versioned recipes
Why a recipe change is a new version
- The portion went from 180g to 200g. That is a different dish, costed differently.
- Editing the recipe in place makes every historical costing wrong and unexplainable.
- A new version keeps both, and the costing history shows exactly when the change happened.
- Sales data joins to the version, so a margin change can be traced to a recipe change rather than blamed on prices.
- The old version stays because the menu may go back to it seasonally.
- One field, one discipline, and it makes the whole history usable.
Surfacing staleness
A costing more than a month old should say so wherever it appears, because a menu priced from a stale costing is the failure mode this system exists to prevent, and it recurs quietly.
Recosting is cheap once the prices are flowing in, so the practical answer is to recost everything weekly and keep every version. Storage is trivial and the history is the asset.
Next: the variable that moves more than price does.
All posts