A supplier says one position will be two hours late. The decision is a comparison of two clock times: the hour the stock runs out — remainder divided by burn rate — against the hour the delivery arrives. Ours were 14:25 against 13:40. A 45-minute gap, low stop-list risk, nothing to do.
A late delivery is an inequality, not an emergency
The message arrives at 11:00 and the day bends around it. In most kitchens what follows is a round: the manager reads the message, walks to the kitchen and asks how much is left, calls the supplier back to hear the same sentence a second time, stands there deciding whether to take the dish off, then goes out to warn the floor. Twenty minutes, five people touched, and the answer at the end of it is usually that nothing needed doing.
Nothing needed doing because the situation was never a question of judgement. It is a comparison of two moments on a clock. One is the hour the product runs out at the pace it is actually leaving the shelf. The other is the hour the delivery lands. If the first comes after the second, the position never leaves the menu and the delay is invisible to everyone including the guest. If the first comes before the second, you have a window with a known length and you decide what to do with it. There is no third case.
A delayed delivery feels like an emergency, and emergencies invite phone calls. The feeling comes from not knowing the two numbers, not from the delay.
You can do the whole thing on paper in four lines, and any owner reading this should be able to reproduce it tonight:
- What is on the shelf right now, in the unit you count portions in.
- How much of it leaves per hour on a day shaped like today.
- Divide the first by the second — that is how many hours you are covered for.
- Add those hours to the clock and compare with the promised arrival.
Everything below is that arithmetic taken seriously: where each of the four numbers comes from, which one you cannot get without a human, how wrong they can be before the verdict changes, and what "nothing to do" has to include before it counts as an answer rather than as silence. A system changes the speed and the record-keeping, not the arithmetic. Which parts of a restaurant's daily traffic can be handed over at all is a separate question, taken up in what a system can actually take over.
Five links of the manual round, and which one is genuinely unknown
Break the manual round into its links and look at where each answer already lives.
| Link of the round | Where the answer already is |
|---|---|
| When exactly does it arrive? | In the supplier's own message. It is the one thing the delay notice actually contains. |
| How fast does this product leave? | In the sales and write-off history of the same product. |
| How loaded is today? | In the bookings. Ours: 74 for the day. |
| Do we stop the position or not? | Nowhere — because it is not a fact to look up. It is an inequality between the first two. |
| How much is physically on the shelf? | Nowhere. This is the one number that is not recorded anywhere reliable. |
Four of the five links are either already written down or are arithmetic on things already written down. Calling the supplier back adds nothing to line one: the new hour arrived with the message. Deliberating over line four adds nothing either — a comparison of two clock times does not improve by being discussed. Warning the floor is not an inquiry at all; it is a consequence of the verdict, and it only happens if the verdict says something changes.
That leaves one link standing. The physical remainder is the only quantity in this situation that no system can derive, and the rest of this page is largely about why.
The event that starts the whole thing — the supplier's notice — is itself an external signal that has to reach the system rather than a person's phone, which is the boring precondition behind all of it and is handled by external signal handling.
The hour you run out: the formula and its dimensions
The calculation has one formula and one comparison.
Hours of cover = Remainder ÷ Burn rate
Dimensions: portions ÷ (portions per hour) = hours. The portions cancel and an hour count comes out, which is the check that you divided the right things. Get this wrong and the arithmetic still produces a number: kilograms divided by portions per hour gives kilogram-hours per portion, which is not a time and cannot be added to a clock. The trap is real because kitchens hold the same product in two units at once — a case of six kilograms on the receiving note, forty portions on the prep sheet.
Hour of exhaustion = Now + Hours of cover
The verdict: no action is needed when the hour of exhaustion is later than the hour of arrival.
Rewritten without the clock, that same rule is: hours of cover ≥ hours of waiting. Both forms are used below, because one of them is easier to check afterwards and the other is easier to explain to the floor.
Three things the formula does not need, each of them a phone call someone usually makes: the total stock in the building, the food cost of the dish, and the reason the supplier is late. None of the three enters the inequality.
What it does need is a burn rate that describes today rather than an average of the last quarter, and a remainder that describes the shelf rather than the ledger. Those are the next two sections. The stock side of this — par levels, reorder points, how much cover a position should carry before anyone is late at all — is the subject of inventory turnover and par levels, and a venue that has done that work meets fewer of these mornings in the first place.
Burn rate: history, corrected by today's bookings
The denominator is the number people get wrong, and they get it wrong in a specific direction: they take a long-run average and apply it to a day that is not average.
The base comes from history — how much of this product left per hour on days of the same shape: the same weekday, the same service, the same hour band. Not the monthly mean. A product that moves at lunch and barely moves in the evening has two burn rates, and averaging them describes neither.
Then the base is corrected by what today already knows about itself:
Burn rate today = Burn rate from history × (Covers expected today ÷ Covers typical for the same hours)
Dimensions: (portions per hour) × (covers ÷ covers) = portions per hour. The correction is a pure ratio, so it cannot change the unit — which is exactly the check that it belongs in this position and not somewhere else in the formula.
We have the first half of that ratio in our own figures: 74 bookings for the day. We are not printing the coefficient itself, because the second half — what a typical day of that shape books by that hour — is not among our numbers, and a number written to fill a gap is not a number. What replaces it is the tolerance calculation two sections down, which answers the question the coefficient was supposed to answer: how far off can this be before the verdict changes?
Two honest warnings about the correction.
Bookings are not demand. They are the part of demand that announced itself. Walk-ins are the rest, and the rest is not a fixed share.
Scaling burn by bookings alone quietly assumes a constant walk-in share, and the same day that gives us 74 bookings also gives us the counter-example. Where the forecast comes from and what makes it wrong is worked through in restaurant demand forecasting; keeping that forecast current rather than re-deriving it every morning is what forecasting is for.
Burn is not flat across the day. If two thirds of the product goes out between 12:00 and 14:00, an averaged rate places the hour of exhaustion later than it really is — which is the dangerous direction of error, because it makes a tight case look comfortable. The exact method is cumulative: walk forward hour by hour, subtract each hour's expected consumption, and stop at the hour where the running total passes the remainder. That is more arithmetic than a single division, and on a paper morning the single division is usually enough — provided you know which way it errs.
This is precisely why our own verdict says the stock lasts approximately until 14:25. The word is not modesty. It is the honest label of a number produced by dividing by an average.
Our numbers: 11:00, then 13:40, then 14:25
Here is the case as it ran, with every step shown.
The notice arrives at 11:00: one position will be two hours late. Two hours later than what is not stated in the notice and does not have to be — the new arrival time is 13:40, so the original slot was 13:40 minus two hours, that is 11:40. The system checks the remainder in the books, the typical burn of the product, and today's bookings; it asks the kitchen the one thing it cannot derive; it recalculates. The result is four lines:
| Line of the verdict | Value |
|---|---|
| Delivery delayed until | 13:40 |
| Stock lasts approximately until | 14:25 |
| Stop-list risk | low |
| Action required | none |
Now the derived quantities, which is where the verdict becomes checkable:
- The wait: 13:40 − 11:00 = 2 h 40 min = 160 minutes.
- The cover: 14:25 − 11:00 = 3 h 25 min = 205 minutes, which is 3.42 hours.
- The gap: 14:25 − 13:40 = 45 minutes.
- Check: 160 + 45 = 205. The three quantities are one line of a clock cut in two places, so they must add up, and if they ever do not, one of the three was mistyped.
- Coverage ratio: 205 ÷ 160 = 1.28. The stock covers the wait 1.28 times over. Reading it back: 160 ÷ 205 = 0.780, and 1 ÷ 0.780 = 1.282 — the same number from the other end.
The inequality holds: 205 ≥ 160, so the hour of exhaustion falls after the hour of arrival, so the position stays on the menu the whole time and nobody is told anything. That is the whole content of "stop-list risk: low".
One piece of honesty about the granularity. Those three clock marks are ours; the minutes that passed between the notice, the kitchen's answer and the recalculation carry no separate mark, and we are not inventing one. In practice they are minutes and they eat into the 45, which matters only when the gap is thin — and is one more reason to treat the tolerance below as the real answer rather than the 45 itself.
The reverse check: the same verdict by a second route
A calculation that has been checked by repeating it has not been checked. Two routes are worth running here, and they are worth different amounts.
Route one, algebraic — through quantity instead of time. Do not convert to clock hours at all. How much product goes out before the delivery lands? Burn rate × 160 minutes. How much is there? Burn rate × 205 minutes, because that is what "the stock lasts 205 minutes" means. Divide both sides by the burn rate and it comes to 160 against 205 — the same verdict, reached without ever writing down the burn rate or the remainder in absolute units.
From this route two shares fall out:
- Consumed by the moment the delivery arrives: 160 ÷ 205 = 78.0% of the morning's remainder.
- Still untouched at that moment: 45 ÷ 205 = 22.0%.
- Check: 78.0 + 22.0 = 100.0. They are two parts of one whole, so they must.
Be honest about what this route proves. It is a rearrangement of the same relation, so it catches arithmetic slips, unit slips and typos — nothing else. If the burn rate was wrong, both routes are wrong together and both agree. A check that cannot fail on bad inputs is not a check on inputs.
Route two, empirical — and this is the one that can actually fail. The delivery arrives at 13:40. Count the remainder then.
If it is, both inputs were close. If it is not, you can say which one was wrong, because the count gives you the burn rate directly:
Burn rate actually observed = (Remainder in the morning − Remainder at arrival) ÷ 160 minutes
Put that back into the first formula and you get the cover the morning really had, against the 205 minutes it was credited with. Do this a handful of times and the correction coefficient the previous section refused to invent stops being a guess and becomes a measurement of your own room. This is the same discipline that separates a theoretical figure from a counted one anywhere in a kitchen, laid out in theoretical versus actual food cost.
How wrong the numbers can be before the verdict flips
The honest answer to "is 45 minutes enough?" is not a feeling. It is: enough for what error?
Take the burn rate first. If the product goes out faster than assumed, the cover shrinks. The verdict survives until the cover falls to exactly the wait: 205 ÷ k = 160 gives k = 1.28.
Take the delivery second. If it slips again, the wait grows. It can grow by the whole gap: another 45 minutes, to 14:25, before the two moments meet.
The two tolerances are the same percentage, and that is not a coincidence: both of them are the same 45-minute gap measured against the same 160-minute wait. It is one slack, readable in two units.
The combined condition is:
205 ÷ k ≥ 160 + d, where k is the burn multiplier and d is the extra delay in minutes.
| Burn rate turns out to be | Extra delay the verdict still survives |
|---|---|
| as estimated (k = 1.00) | 45 min |
| 5% higher (k = 1.05) | 35 min |
| 10% higher (k = 1.10) | 26 min |
| 15% higher (k = 1.15) | 18 min |
| 20% higher (k = 1.20) | 10 min |
| 28% higher (k = 1.28) | 0 min |
The minutes are rounded down, always. A tolerance rounded up is not a tolerance. Check one row against the formula: at k = 1.15 and d = 18, the required cover is (160 + 18) × 1.15 = 204.7 minutes, which is inside the 205 we have — and 205 ÷ 1.15 = 178.3, which is 18.3 minutes past 160. The row holds from both directions.
What we are deliberately not giving you is a threshold table — no "under 30 minutes means high risk, over an hour means low". Such a table would be our invention, and it would be the most quotable thing on this page, which is exactly why it is not here. The threshold that means anything is built from two spreads you can measure yourself: how far your supplier's actual arrivals scatter around the promised ones over the last dozen deliveries, and how far the burn of this product scatters across comparable hours. Compare the gap with those spreads. A 45-minute gap is generous against a supplier who lands within ten minutes and thin against one who has been an hour and a half out twice this month. Rerunning the same case at different assumptions, rather than rebuilding it by hand each time, is what what-if analysis does, and turning a comparison into a standing rule with a named threshold is what a decision engine is for.
The one thing the system asks the kitchen
Everything above needs a remainder. Here is why that remainder is the only human input in the whole calculation.
The number in the books is not measured. It is derived:
Book remainder = Last physical count + Everything received since − Theoretical consumption by recipe
Every term after the first is a place where the books and the shelf part company, and the parting has a direction. Theoretical consumption assumes every portion left the pan at recipe weight. Real service adds:
- portions poured heavier than the spec, consistently, by the people who are fastest;
- trim, spoilage and the end of a case that nobody wrote off;
- staff meals;
- comped dishes and remakes after a complaint;
- product moved between stations and counted at neither;
- an open pack that the sheet counts as full;
- receiving errors — six kilograms signed for, five and a half delivered;
- unit conversion between the receiving note and the prep sheet;
- and, sometimes, theft.
Almost all of those push the same way: the books hold more than the shelf. Which means the error is not symmetric, and the direction of the error is the dangerous one — the books make a tight morning look comfortable.
So the system asks exactly one thing: confirm the physical stock of this position. Two details make that question answerable rather than decorative. It has to name the unit — the same unit the burn rate is in, or the answer cannot be divided by it. And it has to name the places, because product lives in the line fridge, the prep fridge, the freezer and the dry store, and an honest person counting one of them gives an honest wrong number.
Why the other four links are not asked of anybody: they are already recorded. Asking a person for a number the system already holds does not confirm it, it creates a second version of it — and two versions have to be reconciled by somebody, which costs more than the original round did. The saving here is not the four minutes of phone time. It is that nothing has to be arbitrated. Turning that single request into a tracked item with an answer attached, rather than a shout across the pass, is ordinary task handling.
When the kitchen's answer disagrees with the books
It will, and the interesting part is what happens next.
If the physical figure is lower than the books. Recalculate, and the question is only whether the verdict moves.
A quarter short would put exhaustion at 205 × 0.75 = 153.8 minutes, that is 13:34, six minutes before the delivery — and the verdict flips to a real, if small, window.
If the physical figure is higher than the books. The verdict certainly holds, and it is tempting to stop there. Do not: an unexplained surplus is the same signal as a shortage — usually a receipt entered twice, or a write-off entered against the wrong product — and it will distort the next count in the other direction.
If the answer comes in the wrong unit, or does not come. Kilograms against a burn rate in portions is not an answer, it is a second unknown. And if nobody answers at all, the decision still has to be made — on the worse of the two available figures, said out loud, and recorded as having been made that way. A default that nobody notices is how a system quietly stops being trustworthy.
Two rules hold across all three cases. Today's decision runs on the counted number, because the shelf is the fact and the ledger is a model of it. But the ledger is not silently overwritten with the kitchen's word. If every count just replaces the book figure, the difference between them disappears — and that difference was the only evidence that something in the write-off chain is broken. Record the count as a count, with its time, and let the gap stand as a separate item. One morning's gap is noise; the same gap on the same product three weeks running is a process, and it costs more than any single stop-list ever will.
A caution that cuts the other way: a disagreement does not prove the books are wrong. It proves two numbers disagree. The count is a measurement too, made quickly, in a cold room, by someone with a service to open.
"Nothing needs doing" is a result, not an absence
An owner who reads this page should come away knowing exactly when he has the right not to react. Three conditions, all of them checkable:
- The inequality holds after recalculation on the counted figure, not on the book figure. Cover ≥ wait. Ours: 205 ≥ 160.
- The gap survives the tolerance you actually face. Not "45 minutes sounds like a lot", but 45 minutes against the scatter of this supplier and this product, read off the combined table. Ours: the verdict survives a burn rate 28% above the estimate, or another 45 minutes of delay, or a combination inside the table.
- Nothing has been promised that depends on the missing delivery. A pre-ordered banquet item, a dish named in tonight's set menu, a guest who booked because of it — these are outside the inequality, and they are the one thing the arithmetic cannot see.
When all three hold, no action is the correct output, and it deserves the same standing as an alarm.
It also deserves a record. "Nothing to do" that leaves no trace is indistinguishable from a system that did not look, and those two states have to be told apart: the second is the failure mode that stays invisible longest. The record is not a narrative — the event and its time, the two numbers used, the counted remainder and who counted it, the verdict, and afterwards what actually happened at 13:40. That last line makes the next identical morning cheaper than this one, because the burn rate stops being an assumption and becomes a measurement. Kept up, it leaves a venue with a history of its own operational decisions rather than a history of its own events; the wider shape of that idea sits in an AI restaurant management system.
The owner does not see any of this. That is the product, not a hole in the reporting. In our closing report the whole morning shows up inside the line "4 operational deviations resolved automatically", next to "42 incoming inquiries handled without the team" — lines, not stories, in a report that also carries 21 480 PLN of revenue, 126 guests and a 170 PLN average check. Which numbers actually belong in a report an owner reads is worked through in reporting and the numbers an owner actually looks at.
At scale the same sorting is the entire point: out of 100 000 events, 99 650 need nobody's attention, 327 were closed by the system or by staff, 20 need management, and 3 need the owner. This morning is one of the 99 650, and the value it produced is precisely that it stayed there.
When the stock does not last: the other branch
Suppose the inequality fails — the cover is shorter than the wait. Almost everything people do at this point is worse than what the arithmetic suggests.
It is not "stop the position now". It is "stop the position from hour H", where H is now plus the hours of cover. Between now and H you sell it, because it is there. Stopping early is a self-inflicted version of the shortage, and it is the most common reaction because it feels safe.
The call to the supplier becomes a computed action with a target. You do not need "as fast as you can", which is unanswerable. You need "not later than H", which is answerable yes or no. If the answer is no, the call changed nothing and you now know that too. This is the only version of that phone call worth making, and note that it happens after the arithmetic, not instead of it.
Reduce the burn instead of stopping the sale. Take the dish out of recommendations and out of any online ordering that is running, before taking it off the menu — demand you never invite is cheaper than demand you refuse. Warn only the bookings that specifically depend on it.
Tell the floor once, with an hour in the sentence. "It might run out" turns every server into an ad-hoc rationing system and produces exactly the inconsistent guest experience a stop-list exists to avoid. "Available until H, then off" is a fact people can work with.
Shaving portions is a price rise the guest was not told about. It is the cheapest-looking option on the list and the only one that touches what the guest receives. We name it rather than recommend it, because it happens by default when nobody names it.
What this page deliberately does not count
Four things are missing here on purpose, and saying which is part of the method.
No money figure on stop-list risk. Converting a stop-list into lost revenue needs the share of guests who order that position and the share of those who would leave rather than choose something else. Neither is among our numbers. A plausible figure invented here would be the most-quoted line on the page and the least true one, and it would undo everything above it.
No threshold table turning minutes of gap into a risk word. Discussed above: yours is built from your own two spreads.
No norm for how many hours of cover a position should carry. That is a par-level question, it belongs to inventory turnover and par levels, and its answer is specific to your delivery frequency and your storage. It is also not a published figure anywhere we could check: Eurostat's dataset catalogue carries no series on stock cover, delivery delay or lead time. The Polish statistical office's database does carry stock, and even a line for "hotels and restaurants" — but it is the value of stock in thousands of zloty, quarterly, and only for the years 2005 to 2008. Hours of cover are not there, and neither is a single menu position; searching that database for "czas dostawy" and for "termin dostawy" returns zero records for both. Absence of data that has been checked is worth more than a number that has been assumed, and it is why this page counts hours instead of quoting a standard.
No supplier names and no venue names, ours or anybody's.
And one thing that is not a limitation but is worth saying anyway: none of this makes deliveries arrive. The arithmetic changes what happens in the venue between the notice and the truck, which is the part you control. What it costs to keep a calculation like this running continuously rather than reproducing it by hand on the mornings you happen to be in is a separate accounting, set out in what process automation costs. The wider set of restaurant situations that behave like this one — bookings, suppliers, reviews — is collected in restaurant automation.
Frequently asked questions
How do I work out whether the stock will last until a late delivery arrives?
Divide what is physically on the shelf by how much of it leaves per hour today; that gives the hours of cover. Add them to the current time to get the hour of exhaustion, and compare that with the promised arrival. Later than the arrival means no action. Earlier means you have a window, and its length is the difference.
Where does the burn rate come from, and how do today's bookings change it?
The base comes from history — consumption of that product per hour on days of the same shape, same weekday and same hour band, not a monthly average. It is then multiplied by today's expected covers divided by the covers typical for those hours. The ratio is dimensionless, so the unit stays portions per hour. Remember that bookings are only the announced part of demand; walk-ins are not a fixed share of it.
Why can the remainder not simply be taken from the stock system?
Because the book figure is derived, not measured: last count, plus receipts, minus theoretical consumption by recipe. Heavier pours, unwritten trim and spoilage, staff meals, comps, transfers between stations, receiving errors and unit conversions all push the same way, so the books usually hold more than the shelf. That is the dangerous direction, because it makes a tight morning look comfortable.
What do I do if the kitchen's count disagrees with the books?
Recalculate on the counted figure, since the shelf is the fact and the ledger is a model of it. Then check whether the verdict actually moves — in our case it takes a shortfall of more than 22.0% to flip it. Record the count as a count with its time and leave the difference standing as a separate item; overwriting the ledger destroys the only evidence that something in the write-off chain is broken.
When is "do nothing" the right answer?
When three things hold: the hours of cover exceed the hours of waiting after recalculation on the counted remainder; the gap survives the scatter you actually face in delivery times and in burn; and nothing has been promised to a guest that depends on the missing delivery. All three are checkable, which is what separates a decision from an omission.
How far off can the numbers be before the verdict changes?
In our case, 45 minutes of slack against a 160-minute wait means the burn rate can run 28.1% above the estimate, or the delivery can slip another 45 minutes — but not both. Combined, a burn rate 10% high leaves 26 minutes of extra delay, 15% high leaves 18, and 20% high leaves 10. Round those minutes down, never up.
What should I do when the stock genuinely will not last?
Stop the position from the hour of exhaustion, not immediately — you can sell what is there. Call the supplier with a target time rather than a plea, so the answer is yes or no. Take the dish out of recommendations and online ordering before taking it off the menu, tell the floor once with the hour in the sentence, and treat portion shaving as what it is: a price rise the guest was not told about.
Take the last delivery that ran late in your venue and put the two clock times side by side: the hour you would have run out, and the hour it arrived. If you cannot reconstruct the first one, the reason is almost certainly the remainder — and that is the single number to start counting. The rest of this series on restaurant operations and economics is collected in the restaurants hub.