Most groups get their buying under control long before they get their costing under control. Everyone ends up on the same supplier list at the same negotiated prices, so the invoice side across your sites is close to identical, and that feels like the hard part solved.
Then somebody compares what a dish costs at each site and the numbers are nowhere near each other. Nearly all of that gap opens up in what each kitchen does once the box is opened, long after the invoice was agreed.
Why One Dish Gives Three Different Costs
Recipes travel badly, because a dish leaves the site that invented it as a written spec and arrives somewhere else as an instruction to be interpreted by a different team, on different equipment, under a different head chef who has opinions.
None of the drift that follows is disobedience. A cook who finds the sauce splits at scale adjusts the ratio. Somebody with a smaller pan runs the batch at two thirds and rounds the ingredients to something that divides cleanly. A site that gets through less of an expensive garnish uses a little more of it per plate because the tub will not keep. Each decision is reasonable on its own and defensible on the day it was made, and together they mean the dish costed at head office no longer exists in three of your kitchens.
The second source is that nobody tells the recipe file. A site changes something in March and the master spec still says what it said in January, so any comparison you run afterwards is between one real dish and two imaginary ones.
What Drifts First
Portion is almost always the first thing to move, and it moves in one direction. Nobody under-portions to be generous, so a site under pressure serves a little more and a site with a new starter serves a lot more, which lands as a straight percentage on the most expensive component of the plate. This is a portioning problem that arrives disguised as a costing problem.
Yield goes next, and it is the one that hides best. If one site buys a protein whole and breaks it down while another buys it prepared, they are running the same recipe at genuinely different costs, and both of them are right. The prepared version costs more per kilo and wastes nothing, the whole version costs less and throws away a third. Comparing the two without accounting for that will make one chef look careless when they are simply doing more of the work.
Prebatches drift the same way, and worse, because the error compounds. A stock or a sauce made slightly differently at one site becomes a wrong unit cost that flows into every dish using it, so a small variation in one prep item can shift the apparent cost of half a menu.
Then there are the substitutions nobody logged. A delivery arrives short, so a site uses a different brand for a week, and the swap quietly becomes permanent because it worked fine.
Setting a Master Recipe Sites Can Actually Follow
The instinct is to write the spec more tightly. That mostly produces a document nobody opens.
What works better is deciding, per recipe, which parts are fixed and which are local. The fixed parts should be short and should be the ones that carry the cost, so the weight of the protein, the quantity of the two or three expensive components, and the yield assumption behind them. Everything else can flex without doing damage.
Write the spec at the batch size the sites actually cook, because a recipe written for ten portions and cooked in batches of twenty-four will get rounded, and the rounding is where the cost goes. If sites genuinely run different volumes, give them a version each instead of asking them to scale it themselves.
State the yield explicitly, in the recipe. Whether a site buys whole or prepared, the recipe should say how much usable product a unit gives, so the two are comparable. Without that number, a group has no way to tell a purchasing difference from a discipline problem.
Allowing Local Difference Without Losing the Comparison
Some variation is legitimate and should survive. A coastal site may have a better fish supplier than the others, and a city site may pay more for exactly the same delivery. A wood oven does something the rest of your kitchens cannot. Flattening all of that is how a group ends up with a beautifully consistent recipe library that no kitchen recognises.
The way to keep both is to separate the recipe from the price. One master specification for what goes into the dish and in what quantity, and then each site’s own costs applied to it. Any remaining difference between sites is then a real difference in what they paid, which is a purchasing conversation, and not a difference in what they cooked.
That distinction is what makes the numbers useful. When a group can say that site three’s version of a dish costs 40 cents more entirely because of what its supplier charges, that is a negotiation. When the same 40 cents turns out to be portioning, it is a training visit. Most groups cannot tell the two apart, so they end up doing neither.
Reading Cost Differences Once the Recipe Is Fixed
With a shared spec and site-level prices, the comparison finally means something, and a few patterns show up quickly.
A site that is dearer on almost everything usually has a delivery or supplier issue instead of a kitchen one. A site that is dearer on a handful of dishes and normal elsewhere is a portioning or prep story, and the dishes it is dear on will tell you which section. A site that is cheaper than everyone else is worth looking at as carefully as an expensive one, because it is often under-portioning or has quietly dropped a component.
This is the same variance logic that works inside one kitchen, applied across a group, and it is why multi-location visibility is worth building before you have twenty sites and no idea which of them is the outlier.
One Recipe Library With Site-Level Prices
The whole approach above needs one recipe library that every site works from, and site-level costs applied to it. Stockifi holds recipes centrally with yields and prebatches built in, then reads each site’s own supplier invoices, so the same dish is costed with the prices that site actually paid. Sales come in from each POS, which means the comparison runs on what each kitchen sold instead of on what anyone assumed. Where a central kitchen supplies the others, its output can be priced as an ingredient going into the outlets’ recipes, so the chain from invoice to plate stays intact across sites. See how multi-location setups work.
Frequently Asked Questions
Why do the same recipes cost different amounts at different locations? Usually because of portioning, yield and prebatch differences rather than ingredient prices, since most groups already buy on shared terms. A site that breaks down a protein itself will show a different cost from one buying it prepared, and both can be running the recipe correctly.
Should every site use exactly the same recipe? The parts that carry the cost should be fixed, so portion weights, the expensive components and the yield assumption. Beyond that, some local variation is worth keeping, particularly where a site has genuinely better produce or different equipment.
How do you compare food cost between restaurant locations fairly? Apply one master recipe to each site’s own purchase prices. Any difference that remains is then a purchasing difference, which is a supplier conversation, and anything else is happening in the kitchen.
How often should a group review recipe costs across sites? Continuously for ingredient prices, since those move on their own, and at least each time the menu changes for the specs themselves. Also review whenever a site’s numbers move without an obvious cause, because that is usually a spec that drifted months earlier.
Getting the Comparison to Mean Something
A group with three costs for one dish has a translation problem, where the recipe that left head office is not the recipe being cooked. Fixing the parts that carry the cost and stating the yield will close most of it, and pricing each site on what it genuinely paid closes the rest. The gaps that survive all that point at something real, and they will show up first on the five dishes selling most across the group, because that is where any drift is already costing the most.