A dish can hold its place in the sales ranking while the money it leaves behind falls. The ranking counts plates; contribution counts money, and when purchase prices move the two separate. The repair is priced the same way for all three levers — price, gramming, supplier: work out the change per portion, then multiply by monthly volume.
Popularity and contribution are two different rankings, and only one of them is watched
The dish is number three by sales. It was number three five weeks ago and it is number three now. Nothing on the sales screen has moved, nobody has complained, and the kitchen still fires it all evening.
What has moved is the money. Contribution on that position fell from 18.40 to 13.70 PLN per portion over those five weeks. The main cause is the purchase price of one ingredient in it.
This is the quietest way a restaurant loses money, and it is quiet for a structural reason: the two rankings are built from different columns. Popularity is built from units sold. Contribution is built from menu price minus the cost of the plate. A purchase price can move every one of the contribution figures without touching a single unit sold, and the ranking will report that everything is fine — truthfully, because it is answering a different question.
The term itself belongs to menu engineering, and it is defined there:
Contribution margin (CM) per dish — menu price minus plate cost, in currency, for one portion.
That page decides which dishes to keep, reprice, reposition or remove, across the whole card. This page is narrower and starts where that one leaves off: one position, already selling well, whose per-portion money has dropped, and the three answers available — with the price of each.
The falling ingredient price is not a story about this dish alone; it is a story about a supplier line. What that costs across the whole card belongs to your own purchase price index, and the gap between what the recipe says and what the shelf says belongs to theoretical versus actual food cost.
The number the sales screen never shows: how many portions a month
Every figure below is a multiplication, and the multiplier is monthly volume. It is not on the popularity ranking, which gives position rather than count, and it is the first thing to establish.
We have it, and we have it by arithmetic rather than by asking. Raising the price by 2 PLN produces about +1 640 PLN of contribution a month at unchanged volume. A 2 PLN rise adds exactly 2 PLN to the contribution of every portion sold, because the cost of the plate has not changed. So:
Monthly volume = Monthly contribution effect ÷ Contribution change per portion
Monthly contribution effect— the money the change adds in a month, PLN per month;Contribution change per portion— how much more each portion leaves behind, PLN per portion.
1 640 ÷ 2 = 820 portions a month.
Dimensions: (PLN per month) ÷ (PLN per portion) = portions per month. Check by substitution: 820 × 2 = 1 640 PLN a month, which is the figure we started from.
At 30 days that is 820 ÷ 30 = 27.3 portions a day — a divisor named out loud, because a venue that closes two days a week has the same monthly volume spread over fewer days and a different daily figure.
820 is the number that turns every per-portion argument into money, and it is why the rest of this page can be arithmetic rather than opinion.
What five weeks of drift cost, in a figure the P&L never showed
The drop per portion is the subtraction everyone does:
18.40 − 13.70 = 4.70 PLN per portion.
Multiplied out:
Monthly contribution loss = Contribution drop per portion × Monthly volume
4.70 × 820 = 3 854 PLN a month.
Reverse check by a different route, through two monthly totals rather than a difference: the position used to leave 18.40 × 820 = 15 088 PLN a month and now leaves 13.70 × 820 = 11 234 PLN. 15 088 − 11 234 = 3 854 PLN. The two paths agree.
Three ways to read that number, all from figures we already have:
| Reading | Arithmetic | Result |
|---|---|---|
| Share of monthly turnover | 3 854 ÷ 500 000 × 100 | 0.77 % |
| Against a whole win-back campaign | campaign contribution 3 900 PLN, minus 3 854 | 46 PLN apart |
| Average per week of drift | 4.70 ÷ 5 | 0.94 PLN per portion per week |
The middle row is the one worth sitting with. A win-back campaign — 183 lapsed guests contacted, 71 conversations opened, 34 bookings, 27 visits — produced an estimated additional contribution of 3 900 PLN in a month. One dish drifting quietly gave back 3 854 PLN in the same month. The campaign was planned, staffed and reported; the drift was neither. How that campaign is counted, and why revenue is not the number to count it by, is set out in winning back lapsed guests.
The third row carries a warning. 0.94 PLN a week is an average over five weeks, not a description of how it fell. A single delivery at a new price can produce the whole 4.70 in one week and four flat weeks around it. The average is useful for one thing only — putting a size on the weekly rate of loss if it continues — and it is not evidence of a trend line.
Option one: raise the menu price
The first option on the table is +4 PLN. The owner's follow-up was "and if we raise it by 2?" Both are the same formula:
Monthly effect = Price rise × Monthly volume
Holding volume constant, and holding the plate cost constant:
| Price rise | Contribution per portion becomes | Monthly effect | Share of the 4.70 recovered | Still uncovered |
|---|---|---|---|---|
| +2 PLN | 15.70 PLN | +1 640 PLN | 42.6 % | 2.70 PLN per portion = 2 214 PLN a month |
| +4 PLN | 17.70 PLN | +3 280 PLN | 85.1 % | 0.70 PLN per portion = 574 PLN a month |
Reverse check on the +4 row by a second route: 17.70 × 820 = 14 514 PLN a month against today's 11 234 PLN, a difference of 3 280 PLN.
That last identity is worth keeping, because it saves work every time this comes up again: the share of the loss an option recovers can be read off the per-portion figures alone. Volume is on both sides of the fraction. You only need volume to turn the share into money.
Note what the +4 row does not say. Even the larger rise leaves 0.70 PLN per portion uncovered, because the dish lost 4.70. Restoring the old contribution figure exactly takes 4.70 PLN of price, and nobody proposed that — which is itself a decision, made silently, about how much of the increase the guest should carry.
How much volume a price rise is allowed to cost before it stops paying
A price rise that keeps volume is arithmetic. A price rise in the real dining room may not keep volume, and the useful thing to compute is not what will happen but how much can happen before the rise stops paying.
Break-even volume loss = Price rise ÷ New contribution per portion
Price rise— the addition to the menu price, PLN per portion;New contribution per portion— contribution after the rise, PLN per portion.
The result is a share, dimensionless: PLN per portion divided by PLN per portion.
| Price rise | New contribution | Break-even volume loss | In portions a month | Per day at 30 days |
|---|---|---|---|---|
| +2 PLN | 15.70 PLN | 12.7 % | 104.5 | 3.5 |
| +4 PLN | 17.70 PLN | 22.6 % | 185.3 | 6.2 |
Reverse check by the long route for +2 PLN. Today the position produces 11 234 PLN of contribution a month. After the rise each portion produces 15.70 PLN, so matching today takes 11 234 ÷ 15.70 = 715.5 portions.
Substituting back: 15.70 × 715.5 = 11 234 PLN a month, exactly today's figure.
The +4 row checks the same way.
Both thresholds are exact in the sense that matters here: they use nothing but contribution, which we measure.
This is the sentence a kitchen and a floor manager can actually argue with: at +2 PLN we are ahead as long as we are not losing more than about three or four of these plates a day. That is a claim someone can watch for a fortnight and check. "Demand is inelastic here" is not.
The asymmetry in the table is the reason the bigger rise is not obviously the riskier one. +4 PLN tolerates almost twice the volume loss of +2 PLN before it stops paying, because it puts more money on each remaining plate. Whether it also causes more volume loss is not in these numbers, and the two effects pull in opposite directions.
Option two: change the gramming
The second option changes the plate rather than the price, and the arithmetic runs from the other end. Whatever the change to the recipe, only one thing about it matters financially:
Monthly effect = Cost saved per portion × Monthly volume
The same 820 multiplies it, so the options line up on one scale:
| Cost saved per portion | Monthly effect | Equivalent to |
|---|---|---|
| 2.00 PLN | +1 640 PLN | a +2 PLN price rise |
| 4.00 PLN | +3 280 PLN | a +4 PLN price rise |
| 4.70 PLN | +3 854 PLN | full restoration of 18.40 PLN |
Reverse check on the last row through contribution rather than through saving: with 4.70 PLN taken out of the plate cost, each portion leaves 13.70 + 4.70 = 18.40 PLN, and 18.40 × 820 = 15 088 PLN a month against today's 11 234 PLN — a difference of 3 854 PLN. Which is where this page started.
Grams are not the unit of this decision; PLN per portion is. The conversion from one to the other needs the current purchase price of the ingredient per kilogram, which is your figure and not ours, and it is a single division:
Grams removed = Cost saved per portion ÷ Purchase price per gram
Cost saved per portion— the target above, PLN per portion;Purchase price per gram— the delivered price of the ingredient, PLN per gram, taken from the invoice you actually paid.
Dimensions: PLN per portion ÷ PLN per gram = grams per portion. Take the purchase price from the invoice rather than the price list — the two differ, and the difference has its own arithmetic in food cost percentage.
Two honest limits on this lever. The first is that the ingredient whose price rose is often exactly the one the dish is ordered for, and taking grams out of it buys money from the guest's perception rather than from the supplier. Nothing in this arithmetic can see that; a recipe change of that size is checked by tasting and by watching returns, not by a spreadsheet.
The second is that recipe changes propagate. If the standard portion is written down anywhere — a spec sheet, a prep list, a stock model — changing it and not changing the record produces a permanent gap between what the recipe says the plate costs and what the shelf says it costs, which is the exact failure theoretical versus actual food cost exists to catch.
Option three: change the supplier
Financially this is the gramming option with a different source: the plate keeps its grams and the ingredient costs less. The formula is identical, the multiplier is the same 820, and a supplier who takes 4.70 PLN out of one portion returns 3 854 PLN a month on this dish alone.
"On this dish alone" is where option three stops being comparable to the other two. The price rise and the recipe change touch one position on the card. A supplier change touches every dish that uses that ingredient, and we have measured exactly one of them. The effect on the rest is real and unknown, and the difference between "unknown" and "zero" is the whole reason this sentence is here rather than an optimistic total.
What is not in this arithmetic, and does not become smaller by being left out:
- The price you compare against. A quoted price, a delivery note and an invoice are three documents that routinely disagree, and only the third one is money. Compare the new offer with what you paid, not with what you were quoted.
- Delivery terms. Minimum order, frequency and lead time change how much stock sits in the walk-in, and stock is cash that is not in the account.
- Payment terms. A cheaper price on longer terms and a dearer price on shorter terms are not the same offer; the difference sits in the cash plan rather than in the contribution.
- The switching cost itself. Trials, waste during the changeover, retraining on a product that behaves differently in the pan.
None of those four has a figure in our numbers, and none of them is small enough to ignore. What the arithmetic above does is set the bar the offer has to clear: on this dish, every 1 PLN off the portion cost is worth 820 PLN a month. Any supplier conversation can now be held in those units.
Whether the ingredient is drifting or the venue is being drifted is a separate measurement, and it is the one that keeps this from happening again — see your own purchase price index.
The three options add up per portion, and the target is 4.70
Nothing forces one lever. The arithmetic is additive at the per-portion level, and full restoration is a single target:
Price rise + Cost saved per portion = 4.70 PLN per portion
| Combination | From price | From cost | Monthly split |
|---|---|---|---|
| Smaller rise, larger recipe or supplier saving | 2.00 PLN | 2.70 PLN | 1 640 + 2 214 = 3 854 PLN |
| Larger rise, smaller saving | 4.00 PLN | 0.70 PLN | 3 280 + 574 = 3 854 PLN |
Reverse check on the first row through monthly money rather than through per-portion subtraction: the loss is 3 854 PLN a month and the price rise returns 1 640 PLN, leaving 3 854 − 1 640 = 2 214 PLN, and 2 214 ÷ 820 = 2.70 PLN per portion. Same answer.
The money adds up; the risks do not. Both rows restore the same 3 854 PLN, and they are not equally safe. The first puts less on the menu and more on the kitchen and the supplier; the second does the reverse. Which risk is cheaper is a judgement about your guests and your supply, and this table exists to make sure the judgement is made about risk rather than about arithmetic that was never done.
Contribution is arithmetic; demand sensitivity is a guess with a price
This is the distinction the whole page turns on, and blurring it is how confident wrong answers get made.
Every one of those is a calculation on figures we hold, checkable twice by different routes, and it does not become truer or falser depending on how the evening goes.
Demand sensitivity is a guess. How many guests stop ordering a dish when it costs 2 PLN more is not held anywhere in our figures. It is estimated from what happened when prices on this position moved before, and that is a small number of observations against a lot of noise — weather, day of week, what else was on the card, whether the neighbouring restaurant was full.
Our own reading is stated in exactly those terms: the risk of a demand drop looks low on the data available, and the data is not sufficient for high confidence. That second half is not politeness. It is the part that tells you what to do next: at +2 PLN we can afford to lose about 3.5 portions a day, so the rise is watched for a fortnight against that threshold rather than declared safe on the strength of the estimate.
There is a reason the estimate cannot simply be looked up. Price sensitivity of a single dish in a single dining room is not published by anybody, and we checked rather than assumed: the Eurostat dataset catalogue has no elasticity series at all — zero matches, while the control terms in the same file return matches, so the search itself is working — and the Polish statistical office publishes price indices, not response coefficients. National indices tell you what happened to prices in the country. They do not tell you what happens to your Thursday when this plate costs 2 PLN more.
One arithmetic limit belongs here too, and it is a real one. We cannot express +2 PLN as a percentage of the menu price, because the menu price is not among our figures. Elasticity is defined on relative changes — percentage of volume against percentage of price — so we do not print an elasticity figure at all. What we print instead is the break-even tolerance, which needs only contribution and is therefore exact.
The same discipline applied to a discount rather than a rise is worked out in how much extra sales a discount has to bring in, and the reason to run every one of these comparisons on margin rather than revenue is in advertising payback measured on margin. A price rise on a delivery menu is a third variant of the same arithmetic, with the platform commission in the middle: how much to raise delivery menu prices.
What this page deliberately does not state
Four things are missing from everything above, and each is missing on purpose.
We do not attribute the whole 4.70 PLN to the one ingredient. The finding is that the rise in its purchase price is the main cause. Main is not sole. Writing "the ingredient cost 4.70 PLN more" would turn a ranked cause into a measured quantity, and the arithmetic that followed would inherit the invention. Everything above therefore prices the gap, which is measured, and leaves the split of the gap to the invoices.
We do not state the menu price, the food cost percentage of this dish, the gramming, or the supplier's price. They are not in our figures. Where a formula needs one of them, the formula is printed with the variable left open and the source named, which is why the grams calculation above ends in your invoice rather than in our number.
We do not promise that any option will deliver its figure. The tables say what each option is worth at unchanged volume, and unchanged volume is an assumption stated in the same line, not a forecast. The break-even table exists precisely so the assumption can be watched instead of believed.
We do not name a supplier, a venue or a dish. The position is the third best seller in its restaurant; nothing else about it is ours to publish.
What the system does with this, and what stays with a person
Everything above can be done on paper. It is one subtraction, one division, four multiplications and a table. The reason a restaurant does not do it is not difficulty; it is that nothing announced that it needed doing — the sales ranking was unchanged, the dish was still number three, and the loss arrived at 0.94 PLN per portion per week.
So the machine part of this is narrow and dull, and that is the point:
- Watching contribution per position, not just sales rank. The drift is caught by comparing this week's contribution on each position with its own recent range, which is a comparison nobody makes by hand across a whole card. What a system can and cannot take over generally is set out in restaurant automation.
- Finding the cause before raising the alarm. Contribution can fall because the purchase price rose, because the menu price was discounted, because the recipe drifted, or because the sales mix inside a category moved. Checking those four in order is what turns "contribution is down" into "the purchase price of this ingredient is up" — the decision engine and the analytics do that pass before anything reaches a person.
- Pricing the options rather than listing them. Three options with three monthly figures and three break-even tolerances, computed on the same volume, in one place: that is the finance and what-if work, and it is what makes "and if we raise it by 2?" answerable in the same conversation rather than next week.
- Recomputing on the follow-up. The 1 640 PLN figure exists because the question was asked and answered immediately. Every option on this page can be re-run against a different assumption about volume, which is where forecast comes in.
- Reporting the result, not the event. Which figures reach the owner at all, and which are handled and never mentioned, is the subject of automated reporting; the same numbers on ten sites rather than one are in running a restaurant group from one screen and on the dashboards.
What does not move to the machine: the decision itself, the judgement about whether this guest will pay 2 PLN more for this plate, the tasting that decides whether a lighter portion is still the dish, and the conversation with the supplier. The arithmetic narrows the choice to three priced options and one target of 4.70 PLN per portion. Choosing among them is management, and it stays that way.
Where the position sits in the overall economics of the venue — how contribution becomes profit after the fixed costs — is restaurant profit margin, and the combined weight of food and labour that this loss eats into is prime cost. Whether the loss shows up as a revenue miss at all, and how to tell a real cause from a coincidence, is the subject of why evening revenue dropped. Which system layer should hold the recipe cost in the first place is discussed in CRM or ERP, and what survives of a plate sold through a platform is in online orders.
Frequently asked questions
Why did the sales ranking not warn us?
Because the ranking is built from units sold and contribution is built from money per unit, and a purchase price moves the second without touching the first. The dish was number three five weeks ago at 18.40 PLN of contribution and it is number three now at 13.70 PLN. Both statements are true, and only one of them is about money.
Where does the figure of 820 portions a month come from?
From arithmetic on the recalculation. A 2 PLN rise adds 2 PLN of contribution to every portion sold, so the monthly effect of 1 640 PLN divided by 2 PLN per portion gives 820 portions a month. Substituting back, 820 × 2 = 1 640 PLN, which is the figure it was derived from.
Is raising the price by 4 PLN riskier than raising it by 2?
It puts more on each guest, and it also tolerates more loss before it stops paying: 22.6 % of volume against 12.7 %, because each remaining plate carries more money. Those two effects pull in opposite directions and our figures measure only the second. That is why the recommendation is watched against a threshold rather than asserted.
Does +4 PLN put the dish back where it was?
No. The position lost 4.70 PLN per portion, so a 4 PLN rise recovers 85.1 % of the loss and leaves 0.70 PLN per portion uncovered — 574 PLN a month. Exact restoration takes 4.70 PLN of price, or 4 PLN of price plus 0.70 PLN taken out of the plate cost.
How do we convert a target in PLN into grams?
Divide the target saving per portion by the delivered purchase price per gram, taken from the invoice you paid rather than from a price list. The result is grams per portion. The target itself comes from the tables above: 2.00 PLN to match a +2 PLN rise, 4.70 PLN to restore the old contribution in full.
Why is the supplier option not simply the best one?
Because it is the only one of the three whose effect we have not fully measured. On this dish it is worth the same as an equal saving from gramming — 820 PLN a month for every 1 PLN off the portion. But the same ingredient sits in other dishes we did not measure, and against that upside stand switching costs, delivery terms and payment terms, none of which are in these figures.
What would make the low-risk assessment more reliable?
Observations of this dish's own volume across earlier price changes, compared against a period when nothing changed. Published data will not do it: the Eurostat catalogue holds no elasticity series and the Polish statistical office publishes price indices rather than response coefficients. Until then the honest statement is the one we make — the risk looks low, and the data is not sufficient for high confidence.
Take the position with the biggest gap between its sales rank and its contribution trend, work out its monthly volume, and price the three options on one page before the next delivery arrives. The rest of the restaurant economics series is at restaurants.