How to cost a recipe that contains other recipes
Costing a simple dish is arithmetic. Add up what the ingredients cost, divide by the menu price, done.
Costing a dish that contains a sauce you made yourself is where most spreadsheets fall apart, because the cost of the dish now depends on the cost of something that has no invoice.
The thing that makes this hard
A prep, sometimes called a sub-recipe or an intermediate, is anything you produce in-house and then use as an ingredient. Stocks, sauces, doughs, marinades, compound butters, spice blends, preserved vegetables.
Preps break naive costing in three ways.
They have no purchase price. Nothing on any invoice says "marinara, $4.10 per quart." You have to derive it.
They are made in one unit and used in another. You make marinara by the gallon and use it by the four-ounce ladle. Get that conversion wrong and every dish downstream is wrong by the same factor.
They nest. A lasagna uses béchamel, and your béchamel uses a roux. Cost the roux wrong and the error propagates through two layers before it reaches the plate.
The method
Cost from the bottom up, always. Never cost a dish before every prep inside it has a number.
Step one: cost the prep as a batch. Take the recipe as you actually make it, not as it is written on a card from four years ago. Price every purchased ingredient from your most recent invoice.
Marinara, one batch:
| Ingredient | Quantity | Cost |
|---|---|---|
| Crushed tomatoes | 3 no. 10 cans | $14.40 |
| Olive oil | 12 oz | $3.60 |
| Garlic | 6 oz | $0.90 |
| Onion | 2 lb | $1.80 |
| Salt, herbs | — | $0.55 |
| Batch total | $21.25 |
Step two: divide by real yield, not theoretical yield. This is where most people lose money. Your batch went into the pot as roughly 5 gallons of raw volume. After two hours of simmering you have 3.5 gallons.
Cost per gallon on theoretical yield: $4.25. Cost per gallon on actual yield: $6.07. That is a 43 percent error, and it flows into every single dish that uses marinara.
Measure the finished yield once, properly, and write it on the recipe. Do it again if the recipe changes.
Step three: convert to the unit you actually plate. 3.5 gallons is 448 fluid ounces. $21.25 divided by 448 is $0.0474 per fluid ounce. A four-ounce portion of marinara costs $0.19.
Step four: cost the dish using the prep as a line item. Now the pasta dish is ordinary arithmetic again, with marinara appearing as a normal ingredient at $0.19.
Step five: work outward through the nesting. If your béchamel uses roux, cost the roux per ounce first, then the béchamel using roux as a line item, then the lasagna using béchamel. One layer at a time, bottom up. Never skip a level and estimate.
What breaks over time
Getting this right once is achievable in an afternoon. Keeping it right is the actual problem, and it fails in predictable ways.
A purchased ingredient moves and nothing recalculates. Olive oil goes up, marinara silently costs more, and every dish using marinara is now wrong. You will not notice, because the dish's own ingredient list did not change. This is the single most common cause of a menu drifting underwater, and it is covered in more detail in this post on price drift.
A recipe changes and the prep cost does not. The cook starts using more oil. Nobody updates anything.
Yield changes seasonally and nobody re-measures. Winter tomatoes carry more water. Same recipe, different reduction, different yield, different cost per ounce.
A prep is used in more places than anyone tracks. Marinara is in six dishes. When someone finally re-costs it, they update the two they remember.
Doing this on paper
It is entirely possible without software, and for a small menu it is the right call. Keep one sheet per prep with the batch recipe, the measured finished yield, and the cost per plating unit. Keep one sheet per dish that references preps by name.
The discipline that makes it work: when any purchased ingredient price changes, you re-cost every prep containing it, then every dish containing those preps. Bottom up, in that order.
That cascade is the whole job, and it is exactly what people stop doing after about two months. Not because it is difficult, but because it is tedious and nothing forces it.
Doing it with a tool
The reason we built Tapd around preps rather than bolting them on is that the cascade is the product. Preps are first-class: you cost a prep once, and every dish that uses it inherits the cost. When an invoice moves a purchased price, everything downstream re-costs itself, through as many layers as you have.
Two design decisions that matter, and that we would argue for even if you build your own spreadsheet:
If a prep is not fully costed, every dish containing it is marked incomplete rather than being given a plausible-looking number. An incomplete number that admits it is incomplete is useful. One that does not is a trap.
Nothing enters price history without a person confirming it. Automated invoice reading is genuinely good and it is genuinely not perfect, and a wrong price at the bottom of a nested prep chain corrupts everything above it.
If you want to see the cascade working, the demo runs on sample data with nested preps in it. If you would rather just check one dish by hand right now, the free calculator will do a single plate, though it will not do the nesting for you. There is also a comparison of the paid alternatives if you are weighing tools.
Read next
- Your food cost percentage is probably out of date
Most restaurants cost a menu once and never again. Here is how price drift eats a margin quietly, and how to spot it before the quarter is gone.
- Food cost software for independent restaurants, honestly compared
MarginEdge, MarketMan and xtraCHEF start between $149 and $350 a month. Here is what they do, and what a single-location restaurant actually needs.