Appendix F — The Worksheet Toolkit
F.1 Twelve specifications, not twelve downloads
This appendix does not ship spreadsheet files. It ships specifications — the layout, the input cells, the formulas in ordinary notation, the validation checks, and the specific ways each sheet produces a wrong decision while computing perfectly.
That will read as a limitation, so let us deal with it first.
Spreadsheet software changes. Point-of-sale export formats change more often than that, and back-office platforms get acquired, re-skinned, and re-priced on a cycle of about four years. A file built against today's export breaks quietly — and a broken worksheet does not announce itself. It returns a number. The number is simply wrong.
But the real argument is not durability. It is ownership.
An operator who can rebuild the worksheet owns it. An operator who downloaded it is renting it from whoever built it. When the plate cost comes out at \$12.40 and you know in your hands that the plate costs about eight and a half dollars, one of those two operators can open the sheet, walk the dependency chain back to the yield cell somebody typed as 0.80 instead of 0.08, and fix it in ninety seconds. The other calls somebody, or shrugs, or — worst — believes it and reprices the menu.
And the number will come out wrong, constantly, especially in the first six months, because a working restaurant is a stream of new items, new suppliers, new pack sizes, and new people typing into cells. The question is never whether your workbook will produce a bad number. It is whether you can find out why within the same shift.
So build them. All twelve. It is perhaps fifteen hours of work spread across a few weeks, and it is the highest-return fifteen hours in this book, because every decision you make afterward runs through them.
How each worksheet is presented
Every one of the twelve gets the same six fields, in the same order.
WHAT IT ANSWERS — the operational question, in one sentence. WHEN YOU RUN IT — weekly, per period, per menu change, once. LAYOUT — the worksheet as a table, showing columns, sample rows, and which cells are inputs versus computed. THE FORMULAS — in ordinary spreadsheet notation, with each one explained. THE CHECKS — the built-in validations that tell you the sheet is wrong. HOW IT MISLEADS — the specific way a correct worksheet produces a wrong decision.
That last field is the one that matters most, and it is the one no template you download will ever give you. A downloaded worksheet is sold on its strengths. Every method in this book is taught with its failure modes attached, because a technique without its limits is not a technique — it is a superstition with arithmetic on it.
Conventions used throughout
Cell references are illustrative — B4, $C$12, SUM(F4:F18). Your row numbers will differ; the
relationships are what you are copying. All sample figures come from the Bellwether plan, the
constructed 68-seat restaurant this book builds across forty chapters. Every one of them is
illustrative; none is a benchmark for your restaurant.
One rule governs the entire workbook, stated here because it returns in F.14: dollars are canonical; percentages are rounded displays. Never let a sheet reconstruct a dollar figure from a rounded percentage.
F.2 Worksheet 1 — The recipe cost card
WHAT IT ANSWERS — What does one plate of this dish actually cost me in product, and what does that imply about what I can charge for it?
WHEN YOU RUN IT — Once per menu item when the item is created. Re-run on every purchase-contract renewal, every supplier change, every spec change, and — at minimum — once a quarter for your top ten sellers. A cost card that has not been touched in a year is not a cost card; it is a memory.
LAYOUT
The card below is the Hearth Chicken, Bellwether's signature dish. Input cells are the AP (as-purchased) cost, the yield percentage, and the quantity. Everything else computes.
| Row | A — Component | B — AP unit | C — AP cost/unit | D — Yield % | E — Cost/usable unit | F — Qty used | G — Extension |
|---|---|---|---|---|---|---|---|
| 4 | Chicken, air-chilled, ½ of 3.5 lb bird | lb | \$3.20 | 100.0% | \$3.20 | 1.750 | \$5.60 | ||
| 5 | Roasted roots (carrot, parsnip) | lb | \$1.52 | 80.0% | \$1.90 | 0.500 | \$0.95 | ||
| 6 | Salsa verde (sub-recipe, 40 fl oz batch) | fl oz | \$0.525 | 100.0% | \$0.525 | 2.000 | \$1.05 | ||
| 7 | Butter and aromatics | oz | \$0.28 | 100.0% | \$0.28 | 1.500 | \$0.42 | ||
| 8 | Oil, salt, misc (allowance) | ea | \$0.18 | 100.0% | \$0.18 | 1.000 | \$0.18 | ||
| 9 | Herb garnish | oz | \$0.75 | 50.0% | \$1.50 | 0.100 | \$0.15 | ||
| 10 | Components subtotal | \$8.35 | |||||
| 11 | Waste and spillage allowance (input) | 2.0% | |||||
| 12 | Waste allowance, dollars | \$0.17 | |||||
| 13 | PLATE COST | \$8.52 | |||||
| 15 | Menu price (input) | \$29.00 | |||||
| 16 | Food cost % | 29.4% | |||||
| 17 | Contribution margin | \$20.48 | |||||
| 18 | Target food cost % (input) | 30.0% | |||||
| 19 | Price implied by the target | \$28.40 |
[the Bellwether plan — illustrative]
THE FORMULAS
E4 =C4/D4 cost per usable unit: what the product costs AFTER trim loss
G4 =E4*F4 extension: the dollars of this component on one plate
G10 =SUM(G4:G9) components subtotal = 8.35
G12 =ROUND(G10*C11,2) waste and spillage allowance in dollars = 0.17
G13 =G10+G12 PLATE COST = 8.52
G16 =G13/G15 food cost percentage = 29.4%
G17 =G15-G13 contribution margin in dollars = 20.48
G19 =ROUND(G13/G18,2) the price a 30% target would demand = 28.40
Read the last two lines together, because they are the whole argument of Chapter 11 in two cells. G19
says the target wants \$28.40. `G15` says you priced it at \$29.00. The difference is a judgment about
what the room will pay, and the sheet has no view on it. What the sheet does have a view on is G17:
you bank \$20.48 in dollars, and you cannot deposit a percentage.
THE CHECKS
=IF(ABS(G16+(G17/G15)-1)>0.0001,"CHECK","OK") food cost % + CM ratio must equal exactly 100%
=IF(D4>1,"YIELD OVER 100% — CHECK","") a yield above 100% is impossible on a trim item
=IF(C4=0,"MISSING COST","") a zero AP cost silently prices a component at free
=IF(G13>=G15,"PLATE COSTS MORE THAN IT SELLS","") the alarm nobody thinks they need until a special
=IF(ROUND(G13-(G10+G12),2)<>0,"SUBTOTAL BROKEN","")
The first check is the one that catches the most errors, because it is the only one that tests the relationship rather than a single cell. On this card: 29.379% + 70.621% = 100.000%. If that ever fails, someone has typed a hard number over a formula.
The zero-cost check earns its place the first time a new prep item gets added to a card before anyone has entered its price. The sheet will happily cost your best-selling appetizer at \$1.90 instead of \$3.40 and report a 12% food cost, and you will feel wonderful about it for four months.
HOW IT MISLEADS
A cost card prices ingredients. It does not price the dish.
Nothing on this card accounts for the labor to butcher and brine the birds, the gas to run the hearth, the sauté cook's nine minutes at 7:45 on Saturday, or the roughly 4% of birds that arrive over-weight and blow the portion. Two items with identical plate costs and identical prices can have wildly different real costs, and the card cannot see the difference. This is why the menu-engineering matrix in F.4 is a starting point and not a verdict.
Three more specific traps:
The waste allowance flatters you. Two percent is a convention, not a measurement. On a plate built from a whole protein it is probably light; on a plate of dry-goods components it is probably heavy. Applying the same allowance to every card makes the cards comparable to each other and comparable to nothing real.
The AP cost is a snapshot with no expiry date. The cell says \$3.20 because that is what poultry cost the week you built the card. It will still say \$3.20 in March when the contract renews at \$3.44, and every downstream number — plate cost, food cost percentage, menu-matrix quadrant, projected COGS — will be wrong in the same direction at once, which makes the error invisible because nothing looks inconsistent.
It invites percentage management. The card puts 29.4% and \$20.48 next to each other, and human
beings look at the percentage. An operator managing to the percentage will cut the herb garnish to save
\$0.15 and gain half a point. An operator managing to the dollar will notice that the same fifteen cents
is what makes servers describe the dish, and that a dish servers describe sells forty more times a week
at \$20.48 apiece.
F.3 Worksheet 2 — The yield test log
WHAT IT ANSWERS — What does a pound of this product cost me after I have thrown away the part I cannot serve?
WHEN YOU RUN IT — Whenever you add a new item to the spec list, change suppliers, change grade or pack size, or notice a cost card producing numbers that do not match the walk-in. Re-test seasonal produce at the season change. Three tests minimum before you trust a yield.
LAYOUT
| Row | A — Item | B — Date | C — AP weight | D — AP cost/unit | E — AP total | F — Trim/loss | G — Usable | H — Yield % | I — Cost/usable unit | J — Trim value |
|---|---|---|---|---|---|---|---|---|---|---|
| 4 | Carrots, jumbo, case | Mar 4 | 25.00 lb | \$1.52 | \$38.00 | 5.00 lb | 20.00 lb | 80.0% | \$1.90 | \$7.60 | ||
| 5 | Carrots, jumbo, case | Mar 18 | 10.00 lb | \$1.52 | \$15.20 | 2.30 lb | 7.70 lb | 77.0% | \$1.97 | \$3.50 | ||
| 6 | Carrots, jumbo, case | Apr 1 | 40.00 lb | \$1.52 | \$60.80 | 7.60 lb | 32.40 lb | 81.0% | \$1.88 | \$11.55 | ||
| 7 | Weighted yield, carrots | 75.00 lb | \$114.00** | **14.90 lb** | **60.10 lb** | **80.1%** | **\$1.90 | \$22.65 | ||||||
| 9 | Striploin, whole | Mar 11 | 12.00 lb | \$14.40 | \$172.80 | 2.40 lb | 9.60 lb | 80.0% | \$18.00 | \$34.56 | ||
| 10 | Salmon, side, skin-on | Mar 11 | 4.00 lb | \$11.85 | \$47.40 | 1.00 lb | 3.00 lb | 75.0% | \$15.80 | \$11.85 | ||
| 11 | Romaine, case | Mar 11 | 20.00 lb | \$1.62 | \$32.40 | 6.50 lb | 13.50 lb | 67.5% | \$2.40 | \$10.53 | ||
| 12 | Chicken, whole, boned out | Mar 11 | 3.50 lb | \$3.20 | \$11.20 | 2.10 lb | 1.40 lb | 40.0% | \$8.00 | \$6.72 |
[the Bellwether plan — illustrative]
Row 12 is worth pausing on. The Hearth Chicken uses half a bird on the bone, so its cost card carries no yield loss at all — 1.75 lb at \$3.20 is \$5.60, and the yield column reads 100%. The same bird boned out for a brunch item yields 40% and costs \$8.00 a usable pound. Same product, same invoice, two different costs, because the spec is different. A yield log that does not record the fabrication spec alongside the number is recording noise.
THE FORMULAS
E4 =C4*D4 as-purchased total cost
G4 =C4-F4 usable weight = AP weight minus trim
H4 =G4/C4 yield percentage
I4 =E4/G4 cost per usable unit — the number the cost card wants
J4 =F4*D4 the dollar value of what went in the bin
H7 =SUM(G4:G6)/SUM(C4:C6) WEIGHTED yield across the three tests = 60.10/75.00 = 80.1%
NOT =AVERAGE(H4:H6) the simple average of the percentages = 79.3%
Those two carrot figures differ by 0.8 of a point because the three tests were run on different quantities, and a simple average of percentages treats a 10-pound test as equal in weight to a 40-pound one. On carrots the error is two cents a usable pound. On the striploin at \$14.40 as-purchased, the same 0.8-point error moves the usable cost from \$17.98 to \$18.16 — eighteen cents a pound, on a protein you buy every week, forever.
Always weight by the denominator. This is the single most common arithmetic error in restaurant back-office work, and it appears again in the menu matrix, the COGS worksheet, and the P&L.
THE CHECKS
=IF(ROUND(F4+G4,3)<>ROUND(C4,3),"WEIGHTS DO NOT RECONCILE","OK")
=IF(H4>1,"YIELD OVER 100% — REWEIGH","") happens when product is brined, soaked, or wet-weighed
=IF(I4<D4,"IMPOSSIBLE — USABLE COST BELOW AP","")
=IF(COUNT(H4:H6)<3,"FEWER THAN THREE TESTS — PROVISIONAL","")
The third check catches a sign error or a transposed column instantly: cost per usable unit can never be less than cost per as-purchased unit, because you can only throw product away, never create it.
HOW IT MISLEADS
One test becomes a permanent constant. A yield measured once, on one case, by your most careful prep cook, on a Tuesday when nobody was rushing, gets typed into a cost card and lives there for three years. It is not a property of the product. It is a property of the product, the season, the grade, the supplier, the knife, and the person holding it — at 6:40 on a Saturday, in a hurry, all six of those are different.
Trim is not the same as waste. Carrot tops go into stock. Chicken bones go into stock. Striploin fat renders. If you log those as loss and also value the stock they produce as free, you have double-counted in your favor. Log what actually leaves the building.
The test measures the best case and the cost card prices every plate as if the best case happened. This is the honest reason a plate costs more in practice than on paper, and it is why the waste allowance on the cost card exists — not as a fudge, but as an explicit acknowledgment that the yield log was run under laboratory conditions and the line is not a laboratory.
A good yield is not a good purchase. The romaine at 67.5% looks terrible next to the striploin at 80%, and that comparison means nothing. The only useful comparison is cost per usable unit against an alternative — another supplier, another pack size, the pre-cut version at a higher price and a 100% yield. The yield log is an input to a purchasing decision, not a scorecard.
F.4 Worksheet 3 — The menu-engineering matrix
WHAT IT ANSWERS — Which items on my menu earn, which sell, and what should I do about each of the four combinations?
WHEN YOU RUN IT — Every menu change, and at minimum quarterly. Pull at least four weeks of sales so one private party or one holiday week cannot move a classification.
LAYOUT
Eight dinner entrées, four weeks of sales. Inputs are units sold, plate cost (from the cost cards in F.2), and menu price. Everything else computes.
| Row | A — Item | B — Units | C — Mix % | D — Plate cost | E — Price | F — CM | G — Total CM | H — Quadrant |
|---|---|---|---|---|---|---|---|---|
| 4 | Hearth Chicken | 430 | 21.5% | \$8.52 | \$29.00 | \$20.48 | \$8,806.40 | STAR | ||
| 5 | Hearth Strip Steak | 220 | 11.0% | \$15.30 | \$42.00 | \$26.70 | \$5,874.00 | STAR | ||
| 6 | Wood-fired Trout | 190 | 9.5% | \$9.60 | \$28.00 | \$18.40 | \$3,496.00 | PLOWHORSE | ||
| 7 | Cavatelli, Winter Greens | 330 | 16.5% | \$4.85 | \$24.00 | \$19.15 | \$6,319.50 | PLOWHORSE | ||
| 8 | Bellwether Burger | 380 | 19.0% | \$6.20 | \$21.00 | \$14.80 | \$5,624.00 | PLOWHORSE | ||
| 9 | Pork Shoulder, Hominy | 180 | 9.0% | \$7.15 | \$27.00 | \$19.85 | \$3,573.00 | STAR | ||
| 10 | Roasted Squash Plate | 120 | 6.0% | \$4.10 | \$22.00 | \$17.90 | \$2,148.00 | DOG | ||
| 11 | Duck Leg, Farro | 150 | 7.5% | \$9.95 | \$31.00 | \$21.05 | \$3,157.50 | PUZZLE | ||
| 12 | Totals | 2,000 | 100.0% | \$38,998.40 | ||||
| 14 | Popularity threshold (70% ÷ 8 items) | 8.75% | ||||||
| 15 | Contribution threshold (weighted avg CM) | \$19.4992 |
[the Bellwether plan — illustrative]
THE FORMULAS
C4 =B4/$B$12 menu mix percentage
F4 =E4-D4 contribution margin per unit
G4 =F4*B4 total contribution margin from this item
B12 =SUM(B4:B11) total units = 2,000
G12 =SUM(G4:G11) total contribution margin = 38,998.40
C14 =0.70/COUNT(B4:B11) popularity threshold = 0.70/8 = 8.75%
F15 =G12/B12 contribution threshold (WEIGHTED average CM) = 19.4992
H4 =IF(C4>=$C$14,
IF(F4>=$F$15,"STAR","PLOWHORSE"),
IF(F4>=$F$15,"PUZZLE","DOG"))
The popularity threshold is the industry's standard convention: if every item sold equally, each would take 100% ÷ 8 = 12.5% of the mix; the threshold is set at 70% of that, or 8.75%, so an item has to be meaningfully below average before it is called unpopular. Change the number of items and the threshold moves — which is why it must be a formula and never a typed constant.
The contribution threshold is =G12/B12, the weighted average contribution margin, not
=AVERAGE(F4:F11). The simple average of the eight CM figures is \$19.79; the weighted average is
\$19.4992. Use the wrong one and the Cavatelli — at \$19.15 — moves from Plowhorse to an even more
emphatic Plowhorse, but on a different menu the same error will flip an item across the line entirely.
THE MENU ENGINEERING MATRIX — Bellwether, four weeks [the Bellwether plan]
LOW popularity (<8.75%) HIGH popularity (>=8.75%)
┌──────────────────────────┬──────────────────────────┐
HIGH margin │ PUZZLE │ STAR │
(CM >= 19.50) │ Duck Leg, Farro │ Hearth Chicken │
│ │ Hearth Strip Steak │
│ │ Pork Shoulder, Hominy │
├──────────────────────────┼──────────────────────────┤
LOW margin │ DOG │ PLOWHORSE │
(CM < 19.50) │ Roasted Squash Plate │ Wood-fired Trout │
│ │ Cavatelli, Winter Greens│
│ │ Bellwether Burger │
└──────────────────────────┴──────────────────────────┘
Blended entrée food cost on this mix: 16,081.60 / 55,080.00 = 29.2%
THE CHECKS
=IF(ABS(SUM(C4:C11)-1)>0.000001,"MIX DOES NOT SUM TO 100%","OK")
=IF(ABS(SUMPRODUCT(E4:E11,B4:B11)-SUMPRODUCT(D4:D11,B4:B11)-G12)>0.01,"CM DOES NOT TIE","OK")
=IF(C14*COUNT(B4:B11)<>0.70,"THRESHOLD DENOMINATOR HARDCODED","OK")
=IF(F4<0,"NEGATIVE CONTRIBUTION MARGIN","")
The second check is the important one. Revenue on this mix is \$55,080.00 and cost is \$16,081.60;
\$55,080.00 − \$16,081.60 = \$38,998.40, which must equal G12 to the penny. If it does not, someone
has overwritten a CM cell with a typed number — the most common corruption in any linked workbook.
HOW IT MISLEADS
Every threshold is relative to this menu. Both thresholds are computed from the items on the sheet. That means a menu on which every single item is unprofitable still produces Stars, and a superb menu still produces Dogs. The matrix cannot tell you your menu is bad. It can only rank the menu against itself. Read it alongside the blended food cost and the absolute contribution dollars, never alone.
The classification is a cliff, and items live on the edge of it. The Cavatelli's contribution margin is \$19.15 against a threshold of \$19.4992. It is thirty-five cents from being a Star. Sell nine more Hearth Chickens next month and the weighted threshold rises, pushing other items down; drop the Duck Leg and the threshold falls, promoting two items overnight. Nothing changed in the kitchen. Before you act on a quadrant, look at how far the item is from the line. An item within a dollar of a threshold is unclassified, whatever the sheet says.
Units are not independent. The Roasted Squash Plate is a Dog by the arithmetic. It may also be the only reason a party of six chose you over the place across the street, because one of the six does not eat meat. Cut the Dog and you may lose five covers, not one. The matrix counts plates; it cannot count tables, and tables are what you actually sell.
It cannot see the kitchen. A Star that occupies the sauté cook for nine minutes at 7:45 has a real cost that never appears in column D; it shows up instead as slow tickets, an extra body on the schedule, and two points of labor. Run the capacity worksheet in F.13 before you promote a Star.
A repriced item is a new item. Raise the Cavatelli to \$26 and its mix will move, probably down, by an amount nobody can predict from this sheet. Menu engineering tells you where you are. It does not model demand, and treating it as a pricing model is how operators price themselves out of their plowhorses.
F.5 Worksheet 4 — The order guide and par sheet
WHAT IT ANSWERS — What do I need to order today, in what quantity, and what has moved on price since the last time I bought it?
WHEN YOU RUN IT — Every order day, which for most full-service operations is two or three times a week. The price-movement columns get reviewed weekly whether or not you are ordering.
LAYOUT
| Row | A — Item | B — Spec | C — Purchase unit | D — Par | E — On hand | F — Order qty | G — Last price | H — Prior price | I — Movement | J — Extended |
|---|---|---|---|---|---|---|---|---|---|---|
| 4 | Chicken, air-chilled | 3.5 lb avg, no hormones | case / 12 | 4.0 | 1.5 | 3 | \$134.40 | \$128.00 | +5.0% | \$403.20 | |
| 5 | Carrots, jumbo | #1 grade, topped | 25 lb case | 3.0 | 0.5 | 3 | \$38.00 | \$36.50 | +4.1% | \$114.00 | |
| 6 | Butter, unsalted | 82% fat, AA | 36 lb case | 2.0 | 1.0 | 1 | \$161.28 | \$152.64 | +5.7% | \$161.28 | |
| 7 | Striploin, whole | 0x1, Choice, 12 lb | each | 4.0 | 1.0 | 3 | \$172.80 | \$168.00 | +2.9% | \$518.40 | |
| 8 | Salmon, side | skin-on, pin-out, 4 lb | each | 6.0 | 2.0 | 4 | \$47.40 | \$50.60 | −6.3% | \$189.60 | |
| 9 | Romaine | 24 ct, hearts | case | 3.0 | 1.0 | 2 | \$32.40 | \$29.40 | +10.2% | \$64.80 | |
| 10 | Olive oil, blend | 80/20, 1 gal | 6 / 1 gal case | 1.0 | 0.5 | 1 | \$189.00 | \$189.00 | 0.0% | \$189.00 | |
| 11 | Order total | \$1,640.28 |
[the Bellwether plan — illustrative]
Notice that the case prices reconcile to the per-unit costs used on the cost card and the yield log: \$134.40 ÷ (12 birds × 3.5 lb) = \$3.20 a pound; \$38.00 ÷ 25 lb = \$1.52; \$161.28 ÷ 36 lb = \$4.48; \$189.00 ÷ 6 gal = \$31.50. That reconciliation is not decoration — it is the link that keeps the cost cards true, and F.14 explains how to enforce it.
THE FORMULAS
F4 =MAX(0,ROUNDUP(D4-E4,0)) order quantity: par minus on hand, never negative,
rounded up to a whole purchase unit
I4 =(G4-H4)/H4 price movement since the prior purchase
J4 =F4*G4 extended cost at the last known price
J11 =SUM(J4:J10) order total = 1,640.28
K4 =IF(ABS(I4)>0.05,"FLAG","") anything that moved more than five points
L4 =G4/M4 implied per-unit cost (M = units inside the purchase unit)
The ROUNDUP in F4 is doing something with a cost attached, and it is worth naming. Rounding a 2.5-case
requirement up to 3 puts half a case of extra product in the walk-in. Do that on seven lines, twice a
week, and you have quietly financed several thousand dollars of standing inventory — money that is real,
that shows up as a bigger ending count, and that improves your food cost this period and worsens it next.
THE CHECKS
=IF(H4=0,"NO PRIOR PRICE — MOVEMENT MEANINGLESS","")
=IF(E4>D4*1.5,"ON HAND WELL ABOVE PAR — CHECK PAR OR CHECK SALES","")
=IF(E4=0,"STOCKOUT — DID WE 86 SOMETHING?","")
=IF(ROUND(G4/M4,4)<>ROUND(cost_card_unit_cost,4),"UNIT MISMATCH WITH COST CARD","OK")
That last check is the most valuable line in the whole sheet, and almost nobody builds it. A case price is not a pound price. The single most expensive spreadsheet error in restaurant costing is a pack-size change — the supplier switches from a 36 lb case of butter to a 30 lb case at a lower case price, the order guide records a price decrease, and every cost card that uses butter is now understating cost by 20%.
HOW IT MISLEADS
A par sheet has no idea what next week looks like. Pars are set once, usually in a normal week, and then they run. They do not know about the 40-top on Friday, the holiday closure, the patio opening, or the fact that the trout has been selling 30% better since the menu changed. An order guide is a replenishment tool. Operators use it as a forecasting tool, and the gap between those two is where either a stockout or a spoiled case lives.
Movement against "last order" is mostly noise. Romaine at +10.2% looks like a crisis. It may be one storm in one growing region, fully reversed in nine days. Compare against a rolling four-order average before you reprice anything or switch a supplier — and be aware that the four-week averages will also smooth a genuine, permanent step-change into something that looks temporary. Keep both columns.
It compares each item to its own history and never to an alternative. Because the guide is organized by what you buy and from whom, nothing on it prompts the question should I be buying this from someone else? Schedule that comparison deliberately — quarterly, on your top twenty items by spend — because the sheet will never raise it.
A low order total feels like a win, and it is not. A week where you underbought and 86'd two items has a beautiful order guide and a bad Saturday. The covers you could not serve appear on no sheet in this appendix.
F.6 Worksheet 5 — The inventory count sheet
WHAT IT ANSWERS — What product is physically in the building right now, and what is it worth?
WHEN YOU RUN IT — Weekly for the flash report, at minimum. Always on the last operating day of the accounting period, always at the same point in the cycle (after the last delivery, before the first prep), and always by the same two people.
LAYOUT — and why the order of the rows matters more than anything else on this page
The count sheet is organized by storage location, in the physical order a counter walks the room — not alphabetically, not by category, not by supplier.
This is not a stylistic preference. It roughly halves the count time, for two reasons. First, an alphabetical sheet sends the counter from the walk-in to the dry rack to the freezer and back to the walk-in, over and over, for two hundred lines. A location-ordered sheet walks each shelf exactly once. Second, and more important for accuracy: on a location-ordered sheet, a blank line is visibly a gap in the shelf, so missed items get caught during the count instead of at midnight when the food cost comes out at 24%.
| Row | A — Location | B — Position | C — Item | D — Count unit | E — Count | F — Unit cost | G — Extension |
|---|---|---|---|---|---|---|---|
| 4 | WALK-IN | Shelf A, top | Butter, unsalted | lb | 22.0 | \$4.48 | \$98.56 | |
| 5 | WALK-IN | Shelf A, top | Heavy cream | qt | 9.0 | \$3.85 | \$34.65 | |
| 6 | WALK-IN | Shelf B | Chicken, whole 3.5 lb | each | 18.0 | \$11.20 | \$201.60 | |
| 7 | WALK-IN | Shelf B | Striploin, whole | lb | 24.0 | \$14.40 | \$345.60 | |
| 8 | WALK-IN | Produce bay | Carrots, jumbo | lb | 41.0 | \$1.52 | \$62.32 | |
| 9 | WALK-IN | Produce bay | Romaine | lb | 18.5 | \$1.62 | \$29.97 | |
| 10 | WALK-IN SUBTOTAL | \$772.70 | |||||
| 11 | FREEZER | Rack 2 | Salmon, side | each | 5.0 | \$47.40 | \$237.00 | |
| 12 | FREEZER SUBTOTAL | \$237.00 | |||||
| 13 | DRY STORAGE | Rack 1 | Olive oil, blend | gal | 3.5 | \$31.50 | \$110.25 | |
| 14 | DRY STORAGE | Rack 1 | Flour, all-purpose | lb | 55.0 | \$0.62 | \$34.10 | |
| 15 | DRY SUBTOTAL | \$144.35 | |||||
| 16 | SHEET TOTAL (excerpt) | \$1,154.05 |
[the Bellwether plan — an excerpt; a real Bellwether food count runs about 190 lines across seven locations, and the bar count is a separate sheet of about 110]
THE FORMULAS
G4 =E4*F4 extension
G10 =SUMIF($A$4:$A$15,"WALK-IN",$G$4:$G$15) location subtotal
G16 =G10+G12+G15 sheet total — NOT =SUM(G4:G15), which would
double-count every subtotal row
F4 =VLOOKUP(C4,price_table,2,FALSE) unit cost pulled from ONE price table,
never typed on this sheet
E4 THE ONLY INPUT COLUMN ON THE ENTIRE SHEET
Column E is the only place a counter types anything. That is deliberate. The person walking the walk-in at eleven at night with a clipboard should be making exactly one kind of decision — how many — and should never be asked to remember what butter costs.
THE CHECKS
=IF(G16<>G10+G12+G15,"SUBTOTALS DO NOT ROLL UP","OK")
=IF(COUNTBLANK(E4:E15)>0,"UNCOUNTED LINES — "&COUNTBLANK(E4:E15)&" BLANK","OK")
=IF(F4=0,"NO PRICE FOR THIS ITEM","")
=IF(E4>par_case_equivalent*2,"COUNT LOOKS HIGH — RECOUNT","")
=IF(ABS(G16/prior_count_total-1)>0.20,"PERIOD-OVER-PERIOD SWING >20% — VERIFY","")
The blank-cell check is the one that saves you. A blank is not a zero. A blank line is an item somebody walked past, and it understates ending inventory by its full value — which overstates this period's usage dollar for dollar, and then understates next period's by the same amount. Two consecutive periods get corrupted by one skipped shelf.
HOW IT MISLEADS
Every counting error is doubled. Ending inventory is the beginning inventory of the next period, so a \$900 miscount does not average out — it produces a \$900 overstatement of usage this period and a \$900 understatement next period, which reads on a trend chart as a two-point food-cost spike followed by a two-point improvement, and an operator will go looking for a cause that does not exist.
Partial units are guesses wearing decimals. "0.4 of a case of romaine," "half a bag of flour," "about a third of that container of olive oil." Writing 0.4 does not make it a measurement. Standardize the convention — count to the nearest quarter, weigh anything expensive, and never eyeball a protein.
The count is a snapshot and the restaurant does not stop. If someone runs the fryer while you count the dry rack, if a delivery lands mid-count, or if the count starts Sunday and finishes Monday, the number is wrong in a way no formula can detect. Freeze the building. Count after close or before open, never during.
Priced inventory is not liquid. \$772.70 of walk-in product is not \$772.70 of cash. Some of it will spoil, some will be over-portioned, and some is a case you bought for a special in October. Valuing everything at what you paid is the only defensible convention and a systematically optimistic one.
Consistency beats accuracy. A count that is 3% high every single week produces a correct usage figure, because the error cancels between beginning and ending. A count that is 3% high one week and accurate the next produces a fictional spike. If you must choose — and with two hundred lines at eleven at night, you must — choose the same method, the same people, and the same hour, every time.
F.7 Worksheet 6 — The COGS worksheet
WHAT IT ANSWERS — What did I actually use this period, what did it cost as a percentage of sales, and how much of that belongs somewhere other than cost of goods sold?
WHEN YOU RUN IT — Every accounting period, without exception. Weekly in a simplified form for the flash report.
LAYOUT
Bellwether Period 8 (four weeks). Period sales **\$121,600** — food \$87,552 (72%), beverage \$34,048 (28%). Beginning inventory, purchases, and ending inventory are inputs; usage computes.
| Row | A — Category | B — Beginning | C — Purchases | D — Ending | E — Usage |
|---|---|---|---|---|---|
| 5 | Food — protein | \$3,120 | \$15,340 | \$3,340 | \$15,120 | ||
| 6 | Food — produce | \$780 | \$4,510 | \$690 | \$4,600 | ||
| 7 | Food — dairy | \$640 | \$2,660 | \$705 | \$2,595 | ||
| 8 | Food — dry goods | \$1,850 | \$3,690 | \$1,995 | \$3,545 | ||
| 9 | Food — bakery and other | \$410 | \$1,685 | \$375 | \$1,720 | ||
| 10 | FOOD SUBTOTAL | \$6,800** | **\$27,885 | \$7,105** | **\$27,580 | ||
| 12 | Beverage — liquor | \$4,200 | \$3,180 | \$4,410 | \$2,970 | ||
| 13 | Beverage — wine | \$6,900 | \$3,540 | \$7,120 | \$3,320 | ||
| 14 | Beverage — beer | \$980 | \$1,240 | \$1,015 | \$1,205 | ||
| 15 | Beverage — non-alcoholic | \$310 | \$640 | \$295 | \$655 | ||
| 16 | BEVERAGE SUBTOTAL | \$12,390** | **\$8,600 | \$12,840** | **\$8,150 | ||
| 17 | TOTAL | \$19,190** | **\$36,485 | \$19,945** | **\$35,730 |
[the Bellwether plan — illustrative]
Now the adjustments, which are the entire reason this worksheet exists rather than a single line on a P&L.
| Row | A — Adjustment | B — Food | C — Beverage |
|---|---|---|---|
| 20 | Unadjusted usage | \$27,580 | \$8,150 | |
| 21 | Less: transfers OUT to bar (citrus, herbs, cream, garnish) | (\$620) | — |
| 22 | Plus: transfers IN from bar (wine and spirits for cooking) | \$145 | — |
| 23 | Plus: transfers IN from kitchen | — | \$620 |
| 24 | Less: transfers OUT to kitchen | — | (\$145) |
| 25 | Less: employee meals, at cost | (\$1,140) | — |
| 26 | Less: comps and manager voids, at cost | (\$465) | (\$180) | |
| 27 | ADJUSTED USAGE | \$25,500** | **\$8,445 | |
| 29 | Category sales | \$87,552 | \$34,048 | |
| 30 | Unadjusted cost % | 31.5% | 23.9% |
| 31 | Adjusted cost % | 29.1% | 24.8% |
| 32 | Target | 30.0% | 22.0% |
THE FORMULAS
E5 =B5+C5-D5 usage = beginning + purchases - ending. The only honest
definition of food cost, and the one most operators skip.
E10 =SUM(E5:E9) food usage subtotal = 27,580
B27 =B20-B21+B22-B25-B26 adjusted food usage = 25,500
C27 =C20+C23-C24-C26 adjusted beverage usage = 8,445
B30 =B20/B29 unadjusted food cost % = 31.5%
B31 =B27/B29 adjusted food cost % = 29.1%
B33 =(B31-B32)*B29 the variance, converted back to DOLLARS
That last line is the one to build first. Adjusted food cost is 29.1% against a 30.0% target — nine tenths of a point better than plan, which on \$87,552 of food sales is \$788 in the restaurant's favor for the period. Unadjusted, it is 31.5%, or \$1,313 worse. Same restaurant, same four weeks, same invoices — a \$2,101 swing produced entirely by which convention you use. Both numbers are correct. Neither is the truth on its own.
🧮 Run the Numbers
The bar looks better than it is, by exactly the amount the kitchen subsidizes it.
Bellwether's cocktail program pulls \$620 a period of citrus, herbs, cream, and garnish out of the walk-in and never records it; the kitchen pulls \$145 of wine and spirits back for braises and pan sauces. Net: the kitchen hands the bar \$475 a period, thirteen times a year — about **\$6,175 a year** moving between cost lines with no invoice, no entry, and no argument.
Booked properly, pour cost reads 24.8%, not 23.9% — 2.8 points over target, or \$953 for the period. Unbooked, the bar appears to miss by 1.9 points and the kitchen carries the difference, so the beverage director gets a mild conversation, the chef gets a hard one, and a pour cost nearly three points over never gets addressed at all.
A transfer log is a clipboard on the wall by the walk-in door. It costs nothing, and it is the highest return-per-effort item in this appendix.
THE CHECKS
=IF(ROUND(SUM(E5:E9)-(B10+C10-D10),2)<>0,"SUBTOTAL FAILS THE IDENTITY","OK")
=IF(ROUND(B21-C23,2)<>0,"KITCHEN-TO-BAR TRANSFER DOES NOT NET TO ZERO","OK")
=IF(ROUND(C24-B22,2)<>0,"BAR-TO-KITCHEN TRANSFER DOES NOT NET TO ZERO","OK")
=IF(ROUND((B20+C20)-(B27+C27)-(B25+B26+C26),2)<>0,"ADJUSTMENTS DO NOT RECONCILE","OK")
=IF(E5<0,"NEGATIVE USAGE — CHECK THE COUNT OR THE INVOICE CUTOFF","")
=IF(ABS(D10/B10-1)>0.15,"INVENTORY SWUNG >15% — VERIFY BEFORE PUBLISHING","")
The transfer check enforces a physical fact: every dollar that leaves one category must arrive in the other. \$620 out of food is \$620 into beverage; \$145 out of beverage is \$145 into food. If those two pairs do not net to zero, product has been invented or destroyed on a spreadsheet.
The reconciliation check is the one that proves the whole sheet. Total unadjusted usage is \$35,730; total adjusted is \$33,945; the difference is \$1,785, which must equal employee meals (\$1,140) plus food comps (\$465) plus beverage comps (\$180) exactly — because transfers move product between categories without removing it from the pair, while meals and comps remove it from cost of goods sold entirely.
HOW IT MISLEADS
Usage is a residual, and residuals absorb every error in the sheet. Beginning inventory is last period's ending, which you cannot revisit. Purchases are documented by invoices, which can be audited. Ending inventory is the one number nobody will ever check again — and usage is what is left over after the other three. Every miscount, every missed shelf, every partial case guessed at 0.4 instead of 0.6 lands, in full, on the usage line, and therefore on your food cost.
Invoice cutoff is where periods go to die. A delivery signed for at 7:40 Monday morning, for a period that closed at midnight Sunday, is a purchase in the wrong period. It inflates one period's cost and deflates the next. Set the rule in writing — product physically in the building at close on the last day — and hold it even when it is inconvenient.
The sheet knows what you used. It has no idea what you sold. Usage of \$25,500 tells you product left the building. It does not distinguish between product that went out the door on a plate, product that went in the bin, product that went home in a backpack, and product that went onto plates at six ounces instead of five. That distinction requires theoretical usage from the cost cards, compared against this number. The variance between them is the whole diagnosis, and the COGS worksheet by itself never produces it.
Adjusted food cost is honest and comforting at the same time. Moving \$1,140 of employee meals out of COGS is correct accounting — it is a labor benefit, not a cost of goods. It is also \$1,140 of food that walked out of the walk-in and will never be sold. The adjustment makes your food cost percentage more accurate and your bank account not one cent richer. Never let a reclassification feel like a saving.
F.8 Worksheet 7 — The labor schedule and cost model
WHAT IT ANSWERS — What will next week's schedule actually cost, all-in, and what percentage of forecast sales is that?
WHEN YOU RUN IT — Every week, before the schedule is posted. Running it afterward is a report; running it beforehand is a decision.
LAYOUT
Bellwether, a week in August. Forecast sales \$29,800. Inputs are hours and rates; wages, burden, and every percentage compute.
| Row | A — Position | B — FOH/BOH | C — Fixed/Var | D — Hours | E — Rate | F — Wages |
|---|---|---|---|---|---|---|
| 5 | Chef / owner (salaried) | BOH | Fixed | 55 | \$20.00 | \$1,100.00 | |
| 6 | Sous chef (salaried) | BOH | Fixed | 48 | \$18.00 | \$864.00 | |
| 7 | Line cook A | BOH | Variable | 36 | \$18.00 | \$648.00 | |
| 8 | Line cook B | BOH | Variable | 34 | \$17.00 | \$578.00 | |
| 9 | Line cook C | BOH | Variable | 28 | \$16.00 | \$448.00 | |
| 10 | Prep cook | BOH | Variable | 30 | \$16.50 | \$495.00 | |
| 11 | Dishwasher A | BOH | Variable | 28 | \$14.00 | \$392.00 | |
| 12 | Dishwasher B | BOH | Variable | 24 | \$14.00 | \$336.00 | |
| 13 | FOH manager (salaried) | FOH | Fixed | 48 | \$19.00 | \$912.00 | |
| 14 | Servers (6) | FOH | Variable | 132 | \$9.50 | \$1,254.00 | |
| 15 | Bartenders (2) | FOH | Variable | 46 | \$12.50 | \$575.00 | |
| 16 | Hosts (2) | FOH | Variable | 30 | \$14.50 | \$435.00 | |
| 17 | Bussers / runners (3) | FOH | Variable | 51 | \$12.50 | \$637.50 | |
| 18 | TOTAL SCHEDULED | 590 | \$14.70** | **\$8,674.50 | |||
| 20 | Payroll taxes @ 9.25% | \$802.39 | ||||
| 21 | Workers' compensation @ 2.90% | \$251.56 | ||||
| 22 | Benefits and other @ 8.35% | \$724.32 | ||||
| 23 | TOTAL BURDEN @ 20.50% | \$1,778.27 | ||||
| 24 | ALL-IN SCHEDULED LABOR | \$10,452.77 | ||||
| 25 | Forecast sales | \$29,800.00 | ||||
| 26 | Labor % of forecast sales | 35.1% | ||||
| 27 | Modeled labor: fixed \$3,690.29 + 19.88% of sales | | | | | \$9,614.53 | |||||
| 28 | VARIANCE TO MODEL | +\$838.24 |
[the Bellwether plan — illustrative]
The blended rate in E18 displays as \$14.70**. The underlying arithmetic is \$8,674.50 ÷ 590 =
\$14.7025. The dollars are the canonical figure; the rate is a rounded display.** This is not
pedantry — F.14 explains what happens to a workbook that forgets it.
Salaried rows carry an "effective rate" of salary ÷ scheduled hours. It is a modeling convenience so the blended figure means something, and it is fiction: the chef works whatever the week requires.
THE FORMULAS
F5 =D5*E5 wages = hours * rate
D18 =SUM(D5:D17) total scheduled hours = 590
F18 =SUM(F5:F17) total scheduled wages = 8,674.50
E18 =F18/D18 blended hourly wage = 14.7025
F20 =ROUND(F18*0.0925,2) payroll taxes = 802.39
F21 =ROUND(F18*0.0290,2) workers' compensation = 251.56
F22 =ROUND(F18*0.0835,2) benefits and other = 724.32
F23 =ROUND(F18*0.2050,2) total burden = 1,778.27
F24 =F18+F23 ALL-IN SCHEDULED LABOR = 10,452.77
F26 =F24/F25 labor as % of forecast sales = 35.1%
F27 =$B$30+($B$31*F25) modeled labor (B30 = 3,690.29 fixed weekly;
B31 = 0.1988 variable rate)
F28 =F24-F27 variance to the model = +838.24
The variance line is the point of the whole sheet. This schedule runs \$838.24 over the model, which is 2.8 points of sales. That is a finding you can act on for free, on Thursday, before a single one of those hours has been worked. Discover it in the payroll report three weeks later and it is a fact you can only regret.
The fixed/variable split: \$3,690.29 a week comprises the three salaried roles all-in (\$2,876.00 in wages × 1.205 = \$3,465.58) plus \$224.71 of the minimum open-and-close hourly crew that happens whether you do 40 covers or 140. Over 52 weeks that is Bellwether's \$191,895 of annual fixed labor.
Sales per labor hour, by day:
| Day | Sales | Hours | SPLH |
|---|---|---|---|
| Tuesday (dinner) | \$3,100 | 71 | \$43.66 | ||
| Wednesday (dinner) | \$3,450 | 74 | \$46.62 | ||
| Thursday (dinner) | \$4,200 | 82 | \$51.22 | ||
| Friday (dinner) | \$6,150 | 103 | \$59.71 | ||
| Saturday (brunch + dinner) | \$8,400 | 145 | \$57.93 | ||
| Sunday (brunch) | \$4,500 | 115 | **\$39.13** | ||
| Week | \$29,800** | **590** | **\$50.51 |
Sunday brunch produces \$39.13 of sales for every labor hour on the floor — twenty dollars an hour worse than Friday and the worst service of the week by a wide margin. That is not a reason to close Sunday. It is a reason to find out whether Sunday brunch is a business or a habit, which is a question about menu, pricing, and staffing shape, and which nobody asks until this column exists.
THE CHECKS
=IF(ROUND(SUM(F5:F17)-F18,2)<>0,"WAGES DO NOT FOOT","OK")
=IF(ROUND(F20+F21+F22-F23,2)<>0,"BURDEN COMPONENTS DO NOT SUM TO TOTAL","OK")
=IF(SUM(day_hours)<>D18,"DAILY GRID DOES NOT TIE TO POSITION TOTALS","OK")
=IF(D7>40,"OVERTIME — STRAIGHT-TIME MATH UNDERSTATES THIS ROW","")
=IF(MIN(shift_crew)<minimum_crew,"SHIFT BELOW MINIMUM CREW","")
=IF(F25=0,"NO SALES FORECAST — PERCENTAGE IS MEANINGLESS","")
The overtime flag matters more than it looks. Any individual over 40 hours costs one and a half times
the regular rate on the excess, and =D7*E7 does not know that. A schedule with three people at 44 hours
understates itself by several hundred dollars a week, every week.
⚖️ Code and Compliance
The tipped-wage columns are where this sheet gets legally dangerous.
The \$9.50 server rate assumes a jurisdiction that permits a tip credit. Several states permit none at all, and among those that do, the rules on tip pooling, on who may participate, on notice, and on the treatment of non-tipped side work vary substantially and change.
Two mechanical points a straight-time spreadsheet gets wrong by default. Where a tip credit applies, overtime is generally calculated from the full applicable minimum wage rather than the reduced direct cash wage, so the overtime cell must not simply multiply the direct rate by 1.5. And if tips in a workweek do not bring an employee to the applicable minimum wage, the employer owes the difference — which no cell on this worksheet will tell you happened.
Build the sheet to your jurisdiction with your payroll provider and, for anything consequential, an employment attorney. This appendix teaches structure, not law, and the law here is genuinely local.
HOW IT MISLEADS
A schedule is an intention; payroll is a fact. The gap between them — early clock-ins, late clock-outs, the pre-shift meeting nobody scheduled, the manager who let someone stay because it got busy, an unrecorded break — runs three to eight percent in most restaurants that never compare the two. A cost model built from the schedule and never reconciled to the time clock is a wish with decimal places. Reconcile every week. The variance between scheduled and actual hours is a management report in itself, and it names the shift and the manager.
SPLH rewards cutting, not selling. There are two ways to move a ratio. A manager under pressure on sales per labor hour will cut the floor at 8:30, the number will improve, and the cost will land three weeks later in a review score and a table that did not come back — where this sheet cannot see it. Pair SPLH with covers per labor hour and with your service metrics, always.
The fixed/variable split is an assumption you chose, and moving \$50,000 a year between those two buckets changes your break-even by roughly \$35,000 (see F.11) without changing anything in the building. Draw the line once, in writing, and state which labor line it rests on.
It cannot see skill. Two cooks at \$17.00 for 34 hours produce identical cells and wildly different restaurants. The argument that your people are the product lives precisely in the gap this sheet cannot represent.
F.9 Worksheet 8 — The weekly flash report
WHAT IT ANSWERS — Eight days after the week closed, is this restaurant on plan, and if not, which line is off and by how many dollars?
WHEN YOU RUN IT — Every Monday or Tuesday for the week just ended. Two hours for a trained manager. It is the single most important recurring management task in this book.
LAYOUT
Bellwether, Week 32 (early August), inside Period 8.
| Row | A — Line | B — Dollars | C — % of sales | D — Target % | E — Variance, points | F — Variance, dollars |
|---|---|---|---|---|---|---|
| 4 | Total sales | \$29,800 | 100.0% | |||
| 5 | Food sales | \$21,456 | 72.0% | 72.0% | — | — |
| 6 | Beverage sales | \$8,344 | 28.0% | 28.0% | — | — |
| 7 | Covers | 790 | ||||
| 8 | Average check | \$37.72 | ||||
| 10 | Food cost | \$6,415 | 29.9% | 30.0% | −0.1 | (\$22) | ||||
| 11 | Beverage cost | \$1,970 | 23.6% | 22.0% | +1.6 | \$134 | ||||
| 12 | Total COGS | \$8,385** | **28.1%** | **27.8%** | **+0.3** | **\$112 | ||||
| 13 | Labor, all-in | \$10,180 | 34.2% | 32.3% | +1.9 | \$555 | ||||
| 14 | PRIME COST | \$18,565** | **62.3%** | **60.0%** | **+2.3** | **\$667 | ||||
| 16 | Card processing @ 2.81% | \$795 | 2.7% | |||
| 17 | Delivery commission @ 22% | \$273 | 0.9% | |||
| 18 | Channel cost | **\$1,068** | **3.6%** | 3.4% | +0.2 | \$55 | ||||
| 20 | Ramped sales target (Period 8 index 0.0810) | \$31,388 | ||||
| 21 | Variance to ramped target | (\$1,588) | −5.1% | |||
| 22 | Flat target (\$1,550,000 ÷ 52) | \$29,808 | |||||
| 23 | Variance to flat target | (\$8) | 0.0% |
[the Bellwether plan — illustrative]
Note lines 10 and 11 are percentages of their own category sales — food cost against food sales, pour cost against beverage sales. Dividing food cost by total sales is the single most common flash-report error and it makes every kitchen in America look like a genius.
The \$37.72 average check on line 8 is this week's base — 790 covers including bar covers — and it is not the \$41.07 annual blended check used in F.11. Different denominators, different numbers, both correct. Label the base every time you publish a check average.
Why the target must ramp. Line 23 says this week was dead on plan. Line 21 says it was 5.1% light. Both are arithmetically correct, and only one of them is useful — because August is Bellwether's second-strongest period, and a flat weekly target of \$29,808 in a period the plan expects to run \$31,388 is a target that has already been met before anyone did anything.
A flat target lies in both directions. Take a February week doing \$26,900. Against the flat target it is a \$2,908 miss and the manager gets a difficult Monday. Against February's ramped target of \$25,381 it is a **\$1,519 beat** — a genuinely good week in the worst period of the year. Punish that week and you have taught your manager that the report is noise, and the next time it says something true they will not listen.
THE PERIOD INDEX — thirteen four-week periods, summing to 1.0000 [the Bellwether plan]
P1 late Dec-Jan 0.0645 ██████ P8 Aug 0.0810 ████████
P2 Feb 0.0655 ██████ P9 Sep 0.0790 ████████
P3 Mar 0.0730 ███████ P10 Oct 0.0800 ████████
P4 Apr 0.0775 ███████ P11 Nov 0.0770 ███████
P5 May 0.0830 ████████ P12 early Dec 0.0770 ███████
P6 Jun 0.0845 ████████ P13 mid-late Dec 0.0780 ███████
P7 Jul 0.0800 ████████ ─────────────────────────
TOTAL 1.0000
Period 8 weekly target = 1,550,000 x 0.0810 / 4 = $31,387.50
Flat weekly target = 1,550,000 / 52 = $29,807.69
The gap between those two figures is $1,579.81 a week of pure measurement error.
THE FORMULAS
B8 =B4/B7 average check = sales / covers = 37.72
C10 =B10/$B$5 food cost as % of FOOD sales
C11 =B11/$B$6 beverage cost as % of BEVERAGE sales
B12 =B10+B11 total COGS
C12 =B12/$B$4 COGS as % of TOTAL sales
B14 =B12+B13 PRIME COST
C14 =B14/$B$4
E14 =C14-D14 variance in points
F14 =ROUND(E14*$B$4,0) THE VARIANCE, CONVERTED BACK TO DOLLARS
B20 =$B$40*INDEX(index_column,period)/4 ramped weekly sales target
B21 =B4-B20 variance to the ramped target
C21 =B21/B20
Column F is the column that changes behavior. "Labor is 1.9 points over" is a fact that produces nodding. "Labor cost us \$555 this week, which is \$28,860 a year if it holds" produces a schedule change on Wednesday. Convert every percentage variance to dollars before you take it into a meeting.
One detail in column F is worth naming because it is the F.14 rule appearing in the wild. The blended COGS target of 27.8% is a rounded display of 27.76% — the mix arithmetic is (0.72 × 30.0%) + (0.28 × 22.0%) = 27.76%. If you compute row 12's dollar variance from the displayed 27.8%, you get \$101; if you sum the two category variances above it, you get \$112. Sum the category lines. Never reconstruct a dollar figure from a rounded percentage, anywhere, ever.
THE CHECKS
=IF(ABS(SUM(index_column)-1)>0.0001,"PERIOD INDEX DOES NOT SUM TO 1.0","OK")
=IF(ROUND(B5+B6-B4,2)<>0,"FOOD + BEVERAGE <> TOTAL SALES","OK")
=IF(ROUND(B14-(B12+B13),2)<>0,"PRIME COST DOES NOT TIE","OK")
=IF(B7=0,"NO COVER COUNT — AVERAGE CHECK IS UNDEFINED","")
=IF(ROUND(SUM(daypart_sales)-B4,2)<>0,"DAYPARTS DO NOT TIE TO TOTAL","OK")
=IF(C10>0.45,"FOOD COST OVER 45% — ARE YOU DIVIDING BY TOTAL SALES?","")
That last one is a deliberate trap for the most common error on the sheet. If food cost as a percentage of food sales comes out over about 45%, the odds are overwhelming that the denominator is wrong, not that the kitchen collapsed.
HOW IT MISLEADS
It is fast because it is approximate, and people forget the second half of that sentence. The flash report uses a twenty-minute inventory rather than a two-hour one, a purchase log rather than posted invoices, and raw time-clock data before anyone has edited it. That trade is exactly right for a weekly instrument. The failure comes six weeks later when the accountant's period close lands two points different and nobody can say which number to believe. Decide in advance: the flash report governs this week's decisions; the period close governs the financial statements. They are not competing for the same job.
One week is a very small sample. A 40-top private party, a holiday, a heat wave, a street closure — any of these moves every ratio on the sheet. Read four weeks on one page and the noise cancels; read one week in isolation and you will chase ghosts.
The ramp is an assumption, and in year one it is a guess. A restaurant with no history has no seasonal index, so the index is built from a market assumption, a landlord's anecdote, and hope. A guessed ramp misleads more confidently than a flat target, because it looks like knowledge. In year one show both columns, label the ramp "provisional," and rebuild it from your own data after the first full year — at which point it becomes the most valuable single row in the workbook.
Channel cost is usually missing entirely, and it is three to four points. Card processing, delivery commissions, reservation-platform cover fees, gift-card program fees. None sits inside prime cost, so a report built around prime cost alone can show 60.0% beside a bank account that disagrees.
A good flash report can make a bad week look fine. Every line here is a ratio, and ratios hold when both numerator and denominator fall together. A week at \$24,000 of sales with all cost lines perfectly on target is a week where prime cost reads 60.0% and the restaurant lost money, because the fixed half of labor and all of occupancy did not shrink. Always read the dollar column beside the percentage column.
F.10 Worksheet 9 — The three-year P&L
WHAT IT ANSWERS — If the plan happens, what does this business earn in each of its first three years, and what does the shape of those years look like?
WHEN YOU RUN IT — Once, at planning. Rebuilt annually thereafter against actuals, which is the only version of it worth anything.
LAYOUT
Bellwether's projection. Dollar columns are canonical; percentage columns are computed displays.
| Row | A — Line | B — Year 1 \$ | C — Yr 1 % | D — Year 2 \$ | E — Yr 2 % | F — Year 3 \$ | G — Yr 3 % | |---|---|---|---|---|---|---|---| | 4 | REVENUE | \$1,550,000** | **100.0%** | **\$1,720,000 | 100.0% | \$1,850,000 | 100.0% | | 5 | Food sales (72%) | \$1,116,000 | 72.0% | \$1,238,400 | 72.0% | \$1,332,000 | 72.0% | | 6 | Beverage sales (28%) | \$434,000 | 28.0% | \$481,600 | 28.0% | \$518,000 | 28.0% | | 8 | Food cost | \$334,800 | 30.0% | \$365,328 | 29.5% | \$392,940 | 29.5% | | 9 | Beverage cost | \$95,480 | 22.0% | \$105,952 | 22.0% | \$113,960 | 22.0% | | 10 | TOTAL COGS | \$430,280** | **27.8%** | **\$471,280 | 27.4% | \$506,900 | 27.4% | | 11 | Labor, all-in with burden | \$500,000 | 32.3% | \$545,000 | 31.7% | \$580,000 | 31.4% | | 12 | PRIME COST | \$930,280** | **60.0%** | **\$1,016,280 | 59.1% | \$1,086,900 | 58.8% | | 14 | Occupancy (rent + NNN, escalating) | \$95,200 | 6.1% | \$96,600 | 5.6% | \$98,000 | 5.3% | | 15 | Other operating | \$217,000 | 14.0% | \$243,000 | 14.1% | \$262,000 | 14.2% | | 16 | General and administrative | \$46,500 | 3.0% | \$51,600 | 3.0% | \$55,500 | 3.0% | | 17 | TOTAL COSTS | \$1,288,980** | **83.2%** | **\$1,407,480 | 81.8% | \$1,502,400 | 81.2% | | 18 | OPERATING PROFIT | \$261,020** | **16.8%** | **\$312,520 | 18.2% | \$347,600 | 18.8% | | 19 | Debt service | \$69,500 | 4.5% | \$69,500 | 4.0% | \$69,500 | 3.8% | | 20 | After debt service | \$191,520 | 12.4% | \$243,020 | 14.1% | \$278,100 | 15.0% |
[the Bellwether plan — illustrative; before income taxes and owner distributions]
Two structural notes on reading this. First, food cost and beverage cost are percentages of their own category sales (rows 5 and 6); every other percentage is of total revenue. Second, the chef-owner's compensation is inside line 11, at \$1,100 a week — which means line 18 is not the owner's income, it is what the business earns after paying the owner a wage.
THE FORMULAS
B5 =B4*$B$40 food share of sales (B40 = 0.72)
B6 =B4*$B$41 beverage share (B41 = 0.28)
B8 =B5*$B$42 food cost = food sales * food cost %
B9 =B6*$B$43 beverage cost = beverage sales * pour cost %
B10 =B8+B9 total COGS
B12 =B10+B11 PRIME COST
B17 =B12+B14+B15+B16 total costs
B18 =B4-B17 OPERATING PROFIT
B20 =B18-B19 after debt service
C8 =B8/B$5 food cost % — of FOOD sales, note the row anchor
C10 =B10/B$4 COGS % — of TOTAL sales
C12 =B12/B$4
D4 =B4*(1+$B$44) Year 2 revenue from a growth assumption
D14 =B14*(1+$B$45) occupancy escalated per the lease
Growth: Year 2 is \$1,720,000 ÷ \$1,550,000 − 1 = 11.0%; Year 3 is \$1,850,000 ÷ \$1,720,000 − 1 = 7.6%. Every dollar on this page descends from those two assumptions plus the cost ratios, and nothing on the page will tell a reader that.
On debt service coverage. The general formula a lender applies is:
$$\text{DSCR} = \frac{\text{net operating income}}{\text{total annual debt service}}$$
A business with \$180,000 of net operating income and \$120,000 of annual debt service has a DSCR of 1.50. What counts as "net operating income" is not standard — some lenders add back owner compensation, some add back depreciation, some subtract a replacement reserve — so never compute the ratio without first asking whose definition you are using. Two honest people can produce two very different numbers from this identical P&L.
THE CHECKS
=IF(ROUND(B4-(B12+B14+B15+B16+B18),2)<>0,"P&L DOES NOT FOOT","OK")
=IF(ROUND(B5+B6-B4,2)<>0,"SALES MIX DOES NOT TIE","OK")
=IF(ABS(SUM(C12,C14,C15,C16,C18)-1)>0.002,"ROUNDING DRIFT BEYOND TOLERANCE","OK")
=IF(C8>0.45,"FOOD COST OVER 45% — CHECK THE DENOMINATOR","")
=IF(D4/B4-1>0.25,"GROWTH ASSUMPTION ABOVE 25% — DEFEND IT","")
=IF(B18<B19,"OPERATING PROFIT DOES NOT COVER DEBT SERVICE","")
The third check has a tolerance, and the reason is visible in the table above. Add Year 1's displayed percentages: 60.0 + 6.1 + 14.0 + 3.0 + 16.8 = 99.9%. Add Year 3's: 58.8 + 5.3 + 14.2 + 3.0 + 18.8 = 100.1%. Neither year sums to exactly 100%, and neither is an error — they are rounded displays of figures that foot perfectly in dollars. A check written without a tolerance will scream at you every period forever, and a check that screams every period is a check people turn off.
HOW IT MISLEADS
A three-year projection is a document about its author's assumptions. Its apparent precision is entirely borrowed. Move turns from 1.4 to 1.3 and every number in all three columns changes; nothing on the page identifies which cell did it. Build a visible assumptions block — revenue drivers, cost ratios, escalations — at the top of the sheet, and make every projected figure descend from it. If a reader cannot find the assumption, they cannot argue with it, and a projection nobody can argue with is not a plan, it is a brochure.
The percentage columns invite exactly the wrong reading. Prime cost improves from 60.0% to 58.8% across the three years, which reads as progress. In dollars, prime cost goes from \$930,280 to \$1,086,900 — **up \$156,620.** The ratio improved and the checks you write got larger by more than a hundred and fifty thousand dollars. Both facts are true. Only one of them clears the bank.
Percentage-driven costs make a wrong revenue forecast look internally consistent. This is the most dangerous property of any pro forma built this way. If revenue is 15% optimistic, then food cost, pour cost, and variable labor are all 15% optimistic in the same direction, so the percentages still land where you expected and the profit line stays plausible while being entirely wrong. The costs that will not shrink with revenue — occupancy, debt service, insurance, fixed labor — are precisely the ones a percentage model treats most casually. Build at least one column at 85% of forecast revenue with the fixed costs held constant, and look at it before you sign anything.
Operating profit is not cash and never was. Line 18 excludes the principal portion of debt repayment, income taxes, owner distributions, capital replacement, and any inventory build. A restaurant can show \$261,020 of operating profit and still be unable to make payroll on February 12. That is not a paradox; it is the difference between a period result and a Thursday. Worksheet 11 is the answer.
Straight-line growth is not how restaurants grow. Real ones ramp, plateau, step when something changes — a patio, a new daypart, a review, a competitor closing — and plateau again. A smooth 11%-then-7.6% curve is a modeling convenience, and every experienced reader of plans knows it.
F.11 Worksheet 10 — The break-even worksheet
WHAT IT ANSWERS — How much revenue, and how many covers, must this restaurant produce before it stops losing money — and how much room is there between that line and the plan?
WHEN YOU RUN IT — Once at planning, again whenever a fixed cost changes (a lease step, a hire onto salary, a debt refinance), and again whenever the menu mix moves enough to shift the contribution margin ratio.
LAYOUT
| Row | A — Line | B — Value |
|---|---|---|
| 5 | Fixed labor (three salaried positions \$168,935 + open/close hourly floor \$22,960) | \$191,895 |
| 6 | Occupancy (\$28/sq ft base + \$6/sq ft NNN on 2,800 sq ft) | \$95,200 |
| 7 | Other operating — genuinely fixed (marketing, technology, insurance) | \$60,950 |
| 8 | Other operating — fixed base of the semi-variable lines | \$43,090 |
| 9 | General and administrative | \$46,500 |
| 12 | TOTAL FIXED COSTS | \$437,635 |
| 13 | Variable costs (COGS \$430,280 + variable labor \$378,566 + variable operating \$112,960) | \$921,806 | |
| 14 | Variable cost ratio | 59.47% |
| 15 | CONTRIBUTION MARGIN RATIO | 40.53% |
| 16 | Blended average check (\$1,550,000 ÷ 37,740 plan covers, patio season included) | \$41.07 | |
| 17 | ACCOUNTING BREAK-EVEN SALES | \$1,079,815 |
| 18 | Break-even covers, annual | 26,292 |
| 19 | Annual debt service | \$69,500 |
| 20 | CASH BREAK-EVEN SALES | \$1,251,298 |
| 21 | Cash break-even covers, annual | 30,467 |
| 22 | Plan revenue | \$1,550,000 |
| 23 | Plan covers | 37,740 |
| 24 | Margin of safety, dollars | \$470,185 |
| 25 | Margin of safety, percent | 30.3% |
[the Bellwether plan — illustrative]
Break-even takes 69.7% of the plan's covers; cash break-even takes 80.7%. That is the sentence this worksheet exists to produce, and it is worth more than any percentage on the page, because it says: you need roughly seven guests out of every ten the plan assumes merely to stop losing money on paper, and four out of every five to also pay the bank. Chapter 32 states the same result per service as 66 covers a night at accounting break-even and 77 at cash break-even, on its own service-count basis.
Which labor line this sheet is built on — read this before comparing it to F.10.
The plan's P&L in F.10 carries labor at \$500,000. The bottom-up staffing model built position by position from a real schedule in Chapter 19 carries it at \$570,461. Both are defensible, and this book does its break-even work on the bottom-up figure, because break-even asks what the restaurant costs to run, not what the plan hoped it would cost.
Every number on this worksheet sits on the bottom-up basis. The consequence is that operating profit at plan revenue reads \$190,559 here, not the \$261,020 on F.10's P&L, and the \$70,461 gap is the labor difference, not an error (\$570,461 − \$500,000 = \$70,461). Never mix the two bases inside one calculation.
HOW IT MISLEADSbelow explains why that particular mistake hides itself.
THE FORMULAS
B12 =SUM(B5:B9) total fixed costs = 437,635
B14 =B13/B22 variable cost ratio = 921,806/1,550,000 = 59.4714%
B15 =1-B14 contribution margin ratio = 40.528645%
B17 =B12/B15 ACCOUNTING BREAK-EVEN SALES = 1,079,815
B18 =B17/B16 break-even covers = 1,079,815/41.07 = 26,292
B20 =(B12+B19)/B15 CASH BREAK-EVEN SALES = 1,251,298
B21 =B20/B16 cash break-even covers = 1,251,298/41.07 = 30,467
B24 =B22-B17 margin of safety in dollars = 470,185
B25 =B24/B22 margin of safety as a percentage = 30.3%
Round last, and never divide by a display. B15 holds 40.528645%, not 0.4053. Divide \$437,635 by
the displayed 0.4053 and you get \$1,079,780 — about **\$35** below the published break-even of
\$1,079,815. Thirty-five dollars is immaterial to an operator and fatal to a workbook, because it is the
amount by which this sheet will refuse to agree with Chapter 32 forever. Keep full precision in the cell
and round only at the point of display. Appendix A works this same demonstration; F.14 states it as a
rule.
Cash break-even is the more useful number. Accounting break-even at \$1,079,815 is the point at which the P&L stops bleeding. It still leaves the principal portion of debt service unpaid, so the account keeps draining. Add the full \$69,500 of annual debt service to the fixed block and the real line — the one where the bank balance stops falling — is **\$1,251,298**, another \$171,483 of revenue further out. Quote the cash figure when you are deciding anything.
The reconciliation that proves the model — and the condition that makes it a proof. Operating profit
at any revenue level is = revenue × CM ratio − fixed costs. At plan revenue on this sheet's basis:
1,550,000 × 0.40528645 − 437,635 = \$190,559, which is operating profit at Chapter 19's labor line,
to the dollar. If your break-even model does not reproduce your P&L's operating profit, one of the two
is wrong — but only when both sit on the same cost base. A model built on one labor assumption and
checked against a P&L built on another will disagree, or worse, agree by accident. Build the tie check
first, name the base in the cell next to it, and only then do the sensitivity work below.
THE SENSITIVITY BLOCK
Operating profit at combinations of revenue and food cost. A food cost of f instead of 30% changes the contribution margin ratio by (f − 0.30) × 0.72, since food is 72% of sales.
| Food cost | CM ratio | Rev \$1,300,000 | Rev \$1,550,000 (plan) | Rev \$1,700,000 | Break-even sales | Break-even covers | |---|---|---|---|---|---|---| | 28.0% | 41.97% | \$107,957 | \$212,879 | \$275,832 | \$1,042,767 | 25,390 | | 30.0% | 40.53% | \$89,237** | **\$190,559 | \$251,352** | **\$1,079,815 | 26,292 | | 32.0% | 39.09% | \$70,517 | \$168,239 | \$226,872 | \$1,119,596 | 27,261 |
And labor, the other half of prime cost, at plan revenue. Because fixed labor of \$191,895 already sits
inside the fixed block, this table moves total labor and reads operating profit off
= 761,020 − total labor. The two published labor lines are both on it, which is the clearest picture in
this appendix of what the cost-base question is actually worth:
| Total labor | % of sales | Operating profit |
|---|---|---|
| \$500,000 (the plan's P&L line)** | **32.3%** | **\$261,020 | ||
| \$535,000 | 34.5% | \$226,020 | ||
| \$570,461 (Chapter 19 bottom-up — this sheet)** | **36.8%** | **\$190,559 | ||
| \$605,000 | 39.0% | \$156,020 | ||
| \$640,000 | 41.3% | \$121,020 |
D29 =(D$28*($B$15-(($C29-$B$32)*$B$33)))-$B$12
D$28 = the revenue for this column
$C29 = the food cost percentage for this row
$B$32 = plan food cost percentage (0.30)
$B$33 = food share of sales (0.72)
$B$15 = contribution margin ratio, FULL PRECISION (0.40528645)
$B$12 = total fixed costs (437,635)
Absolute references on the row and column anchors are what let one formula fill
the whole grid. Type this once, drag it, and never type into the grid again.
⚠️ Where the Money Leaks
Four points of food cost is worth \$76,829 of break-even.
Read across the sensitivity table. At 28% food cost, Bellwether breaks even at \$1,042,767 of annual sales. At 32%, it breaks even at \$1,119,596. The same restaurant, the same rent, the same staff — and \$76,829 more revenue required before the lights pay for themselves, because four points of food cost moved the contribution margin ratio by 2.88 points.
In covers: 25,390 versus 27,261. That is 1,871 additional covers a year, or about five more guests every single service, forever, to stand still. Nobody notices five covers. That is precisely why cost drift kills restaurants that look busy.
THE CHECKS
=IF(ROUND(B12-SUM(B5:B9),2)<>0,"FIXED COSTS DO NOT FOOT","OK")
=IF(ROUND(B12+B13-total_plan_cost_same_base,2)<>0,"FIXED + VARIABLE <> TOTAL COST","OK")
=IF(ROUND(B14+B15-1,6)<>0,"VARIABLE AND CONTRIBUTION RATIOS DO NOT SUM TO 1","OK")
=IF(B15<=0,"NO BREAK-EVEN AT ANY VOLUME","")
=IF(ROUND((B22*B15-B12)-operating_profit_ON_THE_SAME_BASE,2)<>0,"MODEL DOES NOT TIE","OK")
=IF(labor_line_used<>labor_line_in_the_P_and_L,"COST BASES DIFFER — LABEL BOTH","")
=IF(B16=0,"NO AVERAGE CHECK — COVER BREAK-EVEN UNDEFINED","")
=IF(B17>B22,"BREAK-EVEN EXCEEDS PLAN REVENUE","")
=IF(B20<B17,"CASH BREAK-EVEN BELOW ACCOUNTING BREAK-EVEN — IMPOSSIBLE","")
The second check is the one to build first, because it fails loudly the moment two cost bases get mixed. On this sheet's basis: \$437,635 + \$921,806 = \$1,359,441, which must equal total cost at Chapter 19's labor line. On the plan's basis the same fixed block plus \$851,345 of variable cost gives \$1,288,980 — the P&L's total cost exactly. Both reconcile; neither reconciles against the other's variable figure. That is the whole trap in one line of arithmetic.
The fourth check exists because a sheet with a zero or negative contribution margin ratio will otherwise return an enormous, confident, meaningless break-even figure instead of the correct answer, which is: there is no volume at which this works; the problem is the model, not the marketing.
HOW IT MISLEADS
A model built on one cost base and validated against a P&L built on another looks like it agrees, and does not. This is the most dangerous failure in the whole appendix, because it produces no error message and no obviously wrong number. Pair the plan's \$500,000 labor line with the bottom-up model's 40.53% contribution margin ratio and the arithmetic returns \$261,020 — the correct-looking operating profit, reached by cancelling two mismatched assumptions against each other. The sheet foots. The P&L agrees. The break-even underneath it is understated by more than \$170,000. A tie check only proves something when both sides name the same labor line, which is why the second validation above tests fixed plus variable against total cost rather than testing the profit figure alone.
The fixed/variable split is an opinion, and it moves the answer more than anything else on the page. Labor is the worst offender: a scheduled cook is fixed for the shift, semi-variable for the week, and fully variable over a quarter. Reclassify \$50,000 a year from variable to fixed — a bookkeeping judgment, nothing happening in the building — and fixed costs rise to \$487,635 while the contribution margin ratio rises to 43.75%, putting break-even at **\$1,114,481**. That is \$34,666 higher, a 3.2% swing, produced by an accounting opinion. Write your split down, justify each line, and never change it mid-year without restating the prior figure beside it.
The model assumes linearity, and restaurants are not linear. The contribution margin ratio is held constant at every revenue level in that grid. In reality, at 140 covers a night you add a cook and lose a point of labor leverage; at 40 covers you still pay the dishwasher and the ratio collapses. Break-even math is most accurate near the volume you actually run and least accurate exactly where you are using it — out at the edges, in the bad scenario.
Breaking even on the P&L means losing cash. Debt service appears on a P&L only as its interest portion; the principal is a cash payment no operating-profit line captures. A restaurant sitting exactly at \$1,079,815 of revenue is losing cash by the full principal component of its debt, plus taxes, plus anything the owner draws — which is precisely why line 20 exists. Break-even is not survival, and even cash break-even at \$1,251,298 is a static annual figure that says nothing about which week the account runs dry. Worksheet 11 is where you find that.
Any per-cover figure is meaningless until you name the revenue base. Break-even covers here use \$41.07, which is \$1,550,000 divided by 37,740 plan covers with the patio season included. Divide by the 36,140-cover base that excludes the patio and the same revenue produces a \$42.89 check — and a break-even that looks about a thousand covers lighter. Neither figure is wrong; a figure with no stated base is. State the denominator beside every check average you publish, and never let a per-night cover figure travel without the service count it was divided by.
The average check will not hold on the way down. Break-even covers assume \$41.07 a guest. When a room empties out, guests skip the second glass, the dessert, and the appetizer — so the check falls alongside the covers, and the true break-even cover count rises at precisely the moment you need it to fall.
A margin of safety is a statement about a forecast, not a fact. 30.3% sounds like room. It is 30.3% below a revenue figure this restaurant has never achieved, because this restaurant does not exist yet. Margin of safety measures the plan's ambition, not the business's resilience.
F.12 Worksheet 11 — The thirteen-week cash flow forecast
This is the most important worksheet in this appendix. A restaurant does not close because its profit-and-loss statement was disappointing. It closes on a Thursday when payroll clears and the money is not there. Every other worksheet in the toolkit tells you how you are doing. This one tells you whether you will still be here.
WHAT IT ANSWERS — In which week, over the next quarter, does this business have the least money in the bank, how little is it, and what put it there?
WHEN YOU RUN IT — Build it once, then roll it forward every single week: drop the week that closed, add a new week thirteen, replace forecasts with actuals. A thirteen-week forecast built in January and not touched again is a historical document by March, and worse than useless, because people still consult it.
LAYOUT
Bellwether, the winter quarter — the thirteen weeks beginning Monday December 29. This is the dangerous window in most American markets: the year's weakest revenue running into a full stack of fixed obligations. Sales are forecast; everything below is disbursed on its own calendar.
| Week | Starting | Sales | Opening bal. | Receipts | Food | Bev | Payroll | Rent | Debt | Sales tax | Insur. | Other | Total disb. | Net change | Closing bal. | Trough |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Dec 29 | \$34,600 | \$46,000 | \$34,160 | \$6,998 | \$1,996 | **\$19,945** | \$7,933 | — | — | \$4,200 | \$5,619 | \$46,691 | (\$12,531) | \$33,469 | \$33,469 | ||||||||
| 2 | Jan 5 | \$21,900 | \$33,469 | \$24,440 | \$7,474 | \$2,131 | — | — | \$5,792 | — | — | \$4,159 | \$19,556 | \$4,884 | \$38,353 | \$33,469 | |||||||
| 3 | Jan 12 | \$22,700 | \$38,353 | \$22,540 | \$4,730 | \$1,349 | **\$18,613** | — | — | — | — | \$4,251 | \$28,943 | (\$6,403) | \$31,950 | \$31,950 | |||||
| 4 | Jan 19 | \$23,800 | \$31,950 | \$23,580 | \$4,903 | \$1,398 | — | — | — | \$9,268 | — | \$4,377 | \$19,946 | \$3,634 | \$35,584 | \$31,950 | ||||||||
| 5 | Jan 26 | \$24,400 | \$35,584 | \$24,280 | \$5,141 | \$1,466 | **\$16,625** | \$7,933 | — | — | — | \$4,446 | \$35,611 | (\$11,331) | \$24,253 | \$24,253 | |||||||||
| 6 | Feb 2 | \$23,600 | \$24,253 | \$23,760 | \$5,270 | \$1,503 | — | — | — | — | — | \$4,354 | \$11,127 | \$12,633 | \$36,886 | \$24,253 | ||||||||||
| 7 | Feb 9 | \$27,100 | \$36,886 | \$26,400 | \$5,098 | \$1,454 | **\$16,923** | — | \$5,792 | — | — | \$4,757 | \$34,024 | (\$7,624) | \$29,262 | \$24,253 | ||||||||
| 8 | Feb 16 | \$22,900 | \$29,262 | \$23,740 | \$5,854 | \$1,669 | — | — | — | \$7,112 | — | \$4,274 | \$18,909 | \$4,831 | \$34,093 | \$24,253 | ||||||||
| 9 | Feb 23 | \$24,200 | \$34,093 | \$23,940 | \$4,946 | \$1,411 | **\$17,321** | \$7,933 | — | — | — | \$4,423 | \$36,034 | **(\$12,094)** | \$21,999** | **\$21,999 | |||||||||
| 10 | Mar 2 | \$26,300 | \$21,999 | \$25,880 | \$5,227 | \$1,491 | — | — | — | — | — | \$4,665 | \$11,383 | \$14,497 | \$36,496 | \$21,999 | ||||||||||
| 11 | Mar 9 | \$27,400 | \$36,496 | \$27,180 | \$5,681 | \$1,620 | **\$17,420** | — | \$5,792 | — | — | \$4,791 | \$35,304 | (\$8,124) | \$28,372 | \$21,999 | ||||||||
| 12 | Mar 16 | \$28,600 | \$28,372 | \$28,360 | \$5,918 | \$1,688 | — | — | — | \$6,986 | — | \$4,929 | \$19,521 | \$8,839 | \$37,211 | \$21,999 | ||||||||
| 13 | Mar 23 | \$29,100 | \$37,211 | \$29,000 | \$6,178 | \$1,762 | **\$18,513** | — | — | — | — | \$4,987 | \$31,440 | (\$2,440) | \$34,771 | \$21,999 | |||||
| Totals | \$336,600** | | **\$337,260 | \$73,418** | **\$20,938 | \$125,360** | **\$23,799 | \$17,376** | **\$23,366 | \$4,200** | **\$60,032 | \$348,489** | **(\$11,229) |
[the Bellwether plan — illustrative]
Reading the sheet in one pass. Thirteen weeks of sales total \$336,600 — 21.7% of the annual plan in 25% of the year, which is what a winter quarter looks like. Cash falls \$11,229 over the quarter and ends at \$34,771, which is uncomfortable but survivable. And the ending balance is the least useful number on the page. The number that matters is \$21,999, in week 9, the last week of February.
Why the trough is where it is — and it is not sales
Look at weeks 6 and 9.
| Week 6 (Feb 2) | Week 9 (Feb 23) | |
|---|---|---|
| Sales | \$23,600 | \$24,200 | |
| Payroll disbursed | — | \$17,321 |
| Rent disbursed | — | \$7,933 |
| Net change in cash | +\$12,633** | **(\$12,094) |
Week 6 has \$600 *less* revenue than week 9 and finishes \$24,727 better in cash. Nothing operational changed. What changed is that week 9 is a pay week and a rent week, and week 6 is neither. Payroll and rent together are \$25,254 of week 9's \$36,034 in disbursements — seventy percent of the week's outflow, landing on the same five days.
This is the general rule and it is the reason this worksheet exists: payroll timing, not sales, is what usually creates the trough. Sales in a restaurant arrive smoothly, seven days a week, in small increments, settled in a day or two. Payroll arrives in a wall, every fourteen days, and does not negotiate. Rent arrives in a wall once a month. When two walls land in the same week at the bottom of the season, that is your trough, and it is scheduled on a calendar you could have read in October.
Seven pay runs, not six
The biweekly payroll in this window lands in weeks 1, 3, 5, 7, 9, 11, and 13 — seven pay runs in thirteen weeks. Most operators assume six, because thirteen weeks is three months and payroll "is twice a month." It is not twice a month; it is every fourteen days, which is twenty-six times a year, and in any thirteen-week window it is six or seven depending purely on where the calendar falls.
The consequence is arithmetic and it is large:
🧮 Run the Numbers
The quarter that pays for fourteen weeks of labor.
Labor earned in weeks 1 through 13, on the model of fixed \$3,690.29 a week plus 19.88% of sales: \$114,890.
Labor disbursed in weeks 1 through 13: \$125,360.
The gap is \$10,470**, and it is entirely timing. Week 1's pay run of \$19,945 covers two holiday weeks worked in the prior quarter; week 13's labor of \$9,475 will not be paid until the next quarter. \$19,945 − \$9,475 = \$10,470.
Had the pay calendar fallen one week differently — six runs instead of seven — this quarter would have disbursed roughly \$18,000 less and the trough would sit near \$40,000 instead of \$22,000. Nothing about the restaurant would be different. The worst week of your year is set, in part, by which Friday your payroll provider chose.
Count the pay dates on a real calendar before you build the sheet. Every time.
The disbursement calendar, line by line
Each disbursement category runs on its own clock, and modeling them as one blended weekly outflow — which is what most first attempts do — destroys the entire value of the worksheet.
- Receipts are not sales. Card settlement lags roughly two days, so the model here books 80% of the current week's sales plus 20% of the prior week's. Over thirteen weeks receipts total \$337,260 against sales of \$336,600 — \$660 more, because the quarter opens on a holiday week whose tail settles inside the window.
- Food and beverage are paid on terms, one week in arrears: 21.6% and 6.16% of the prior week's sales, being 30% of 72% and 22% of 28%. Purchases are assumed equal to usage, which is a simplification and should be stated as one.
- Payroll is the all-in figure — wages plus the full 20.5% burden — for the two weeks ended the prior Sunday, paid biweekly.
- Rent of \$7,933 is \$95,200 of annual occupancy ÷ 12, due the first, landing in weeks 1, 5, and 9.
- Debt service of \$5,792 is \$69,500 ÷ 12, due the tenth, landing in weeks 2, 7, and 11.
- Sales tax at 7% is remitted on the twentieth for the prior month, landing in weeks 4, 8, and 12. Rates and filing frequencies vary by state and locality, and some jurisdictions tax prepared food and alcohol differently — verify locally.
- Insurance is a quarterly premium of \$4,200 in week 1.
- Other is 11.5% of the week's sales plus \$1,640 fixed, covering utilities, card processing, smallwares, repairs, marketing, linen, technology, and general and administrative costs.
THE FORMULAS
C5 =B4 opening balance = prior week's closing
C6 =0.80*sales_this_week + 0.20*sales_prior_week receipts, with settlement lag
C8 =$B$40*sales_prior_week food paid on terms (B40 = 0.216)
C9 =$B$41*sales_prior_week beverage paid on terms (B41 = 0.0616)
C10 =IF(MOD(week_number,2)=1,labor_prior_two_weeks_all_in,0) payroll, biweekly
C11 =IF(rent_due_flag=1,$B$42,0) rent
C12 =IF(debt_due_flag=1,$B$43,0) debt service
C13 =IF(tax_due_flag=1,prior_month_sales*$B$44,0) sales tax remittance (B44 = 0.07)
C14 =IF(insurance_due_flag=1,$B$45,0) insurance
C15 =($B$46*sales_this_week)+$B$47 other operating and G&A
C17 =SUM(C8:C15) total disbursements
C18 =C6-C17 net change in cash
C19 =C5+C18 CLOSING BALANCE
C20 =MIN($C$19:C19) running trough — note the EXPANDING range:
the anchor stays, the end grows as you fill right
C21 =IF(C19<$B$48,"BELOW MINIMUM OPERATING BALANCE","")
The expanding-range trick in C20 is worth learning properly. $C$19 is anchored and C19 is not, so as
the formula fills across the thirteen columns each cell takes the minimum of everything so far — which
is exactly the definition of a cumulative trough. It is four keystrokes and it turns thirteen closing
balances into one actionable number.
Do not use the flag cells as inputs you retype each quarter. Derive them: a rent flag is
=IF(MONTH(week_start)<>MONTH(week_start+6),1,0) for a payment due on the first, or an explicit
lookup against a payment calendar you built once from real dates.
THE CHECKS
=IF(ROUND(C19-(C5+C6-C17),2)<>0,"WEEKLY IDENTITY BROKEN","OK")
=IF(ROUND(closing_wk13-(opening_wk1+SUM(all_receipts)-SUM(all_disbursements)),2)<>0,
"QUARTER DOES NOT RECONCILE","OK")
=IF(MIN(all_closing_balances)<0,"INSOLVENT WEEK IN THE FORECAST","")
=IF(COUNTIF(payroll_row,">0")<>7,"CHECK THE PAY CALENDAR AGAINST REAL DATES","")
=IF(ROUND(SUM(category_totals)-SUM(weekly_disbursement_totals),2)<>0,"CATEGORIES DO NOT TIE","OK")
=IF(sales_tax_remitted<>prior_month_collected,"REMITTANCE DOES NOT MATCH COLLECTIONS","")
The quarter reconciliation is the master check: \$46,000 opening + \$337,260 receipts − \$348,489 disbursements = \$34,771, which must equal week 13's closing balance to the penny. And the category totals must tie to the weekly totals: \$73,418 + \$20,938 + \$125,360 + \$23,799 + \$17,376 + \$23,366 + \$4,200 + \$60,032 = \$348,489. Two independent paths to the same number is the only real proof a spreadsheet ever offers.
The insolvency check must test the minimum, not the ending balance. A forecast that ends at \$34,771 and dips to negative \$4,000 in week 9 is a forecast of a failed business, and a sheet that only reports the last cell will not say so.
A first-order stress test. Run the quarter at 8% under forecast — \$309,672 instead of \$336,600. Receipts fall about \$26,900. Variable disbursements fall with them: food, beverage, and other operating together are 39.26% of sales, or about \$10,571, and variable payroll at 19.88% gives back roughly \$4,800 inside the window. Net cash impact: about **\$11,500 worse, putting the trough near \$10,500 — and note that rent, debt service, insurance, and fixed labor gave back nothing at all. An 8% revenue miss is a 52% cut to your worst week.** Rebuild the sheet properly rather than adjusting by hand; this estimate is only good enough to tell you the real one is worth running.
HOW IT MISLEADS
The ending balance is the wrong number and it is the one everybody quotes. \$34,771 sounds fine. \$21,999 in week 9 is the fact. And if you had built this monthly instead of weekly, February would have closed at either \$34,093 or \$21,999 depending entirely on which side of month-end the pay date fell — which means a monthly cash forecast can miss a \$12,000 trough completely. Weekly, or do not bother.
Receipts are not sales, and the differences are not small. Gift cards are cash today and a liability until redeemed. Private-event deposits are cash today and an obligation. A corporate account billed on terms is a sale with no cash for thirty days. A forecast that treats sales as receipts runs systematically optimistic in a month when those balances are growing and systematically pessimistic when they unwind — and it never tells you which is happening.
Sales tax is the most dangerous line on this sheet. It is collected daily and remitted up to fifty days later, which means several weeks of somebody else's money sits in your operating account looking exactly like working capital. On this sheet, the account shows \$29,262 in week 7 and \$34,093 in week 8 — and \$7,112 of that is a tax remittance due on the twentieth. It was never yours. An operator who covers a payroll with it has borrowed from a taxing authority on the worst terms available anywhere, and the sheet — showing a healthy balance right up to the remittance week — makes that very easy to do. Consider holding sales tax in a separate account. It costs nothing and it removes the temptation structurally rather than relying on discipline in a bad week.
The alternating pattern makes every other week look like a crisis. Weeks 1, 3, 5, 7, 9, 11, and 13 are all negative; weeks 2, 4, 6, 8, 10, and 12 are all positive. An operator who checks the bank balance on a Friday and reasons from it will draw the wrong conclusion roughly half the time. Read the trough line, not the balance.
The forecast inherits every weakness of the sales forecast that drives it. In year one you have no history, so the weekly sales column is a construction. That is not an argument against building the sheet — it is an argument for building it with a low case beside the plan case, and for rolling it weekly so the guess is replaced by fact one week at a time.
A forecast that is not rolled is a liability. It ages into confident wrongness. Every Monday: drop week 1, replace week 2's forecast with actuals, add a new week 13. Fifteen minutes. It is the cheapest insurance in this business.
F.13 Worksheet 12 — The capacity and RevPASH worksheet
WHAT IT ANSWERS — How much of my room am I actually selling, hour by hour, and where is the real ceiling — the seats, the demand, or the kitchen?
WHEN YOU RUN IT — Quarterly on a representative week, and before any decision that assumes more covers: a hiring plan, a lease expansion, a marketing spend, a patio build.
LAYOUT
A Saturday dinner service at Bellwether. Available seats 68; service hours 5:00 to 10:00 p.m.; seat-hours available 340.
| Row | A — Hour | B — Covers seated | C — Revenue | D — Avg check | E — Seats occupied | F — Occupancy | G — Hearth items fired | H — RevPASH |
|---|---|---|---|---|---|---|---|---|
| 5 | 5:00–6:00 | 14 | \$588 | \$42.00 | 12 | 17.6% | 9 | \$8.65 | |
| 6 | 6:00–7:00 | 31 | \$1,364 | \$44.00 | 38 | 55.9% | 26 | \$20.06 | |
| 7 | 7:00–8:00 | 38 | \$1,824 | \$48.00 | 61 | 89.7% | 37 | \$26.82 | |
| 8 | 8:00–9:00 | 34 | \$1,598 | \$47.00 | 58 | 85.3% | 31 | \$23.50 | |
| 9 | 9:00–10:00 | 25 | \$1,100 | \$44.00 | 39 | 57.4% | 18 | \$16.18 | |
| 10 | SERVICE | 142 | \$6,474** | **\$45.59 | 41.6 avg | 61.2% | 121 | \$19.04 | |
| 12 | Theoretical covers (340 seat-hours ÷ 1.867 h per seating) | 182 | ||||||
| 13 | Actual as a share of theoretical | 78.0% | ||||||
| 14 | Hearth capacity, items per hour | 28 | ||||||
| 15 | Hearth capacity, full service (28 × 5) | 140 | ||||||
| 16 | Hearth attachment rate (121 ÷ 142) | 85.2% |
[the Bellwether plan — illustrative]
THE FORMULAS
D5 =C5/B5 average check for the hour
F5 =E5/$B$3 seat occupancy (B3 = 68 available seats)
H5 =C5/($B$3*1) RevPASH for one hour: revenue / (seats x 1 hour)
B10 =SUM(B5:B9) total covers
C10 =SUM(C5:C9) total revenue
H10 =C10/($B$3*$B$4) SERVICE RevPASH = 6,474 / (68 x 5) = 19.04
H12 =($B$3*$B$4)/($B$20+$B$21) theoretical covers: seat-hours / (dwell + turnaround)
B20 = 1.667 h dwell (100 min); B21 = 0.20 h turnaround
H13 =B10/H12 actual covers as a share of theoretical
G16 =G10/B10 hearth attachment rate
RevPASH — revenue per available seat-hour — treats a seat-hour as what it is: perishable inventory that expires at the end of the hour whether or not anybody sat in it. Bellwether's Saturday runs \$19.04 across the service, and the hour-by-hour column is where the money actually is: \$8.65 at five o'clock against \$26.82 at seven. You are selling one third of the peak hour's value in the first hour of service, every Saturday, forever.
Theoretical capacity — and the constraint that is actually binding
The seat arithmetic says 182 covers are possible: 340 seat-hours divided by 1.867 hours per seating (a hundred-minute dinner plus twelve minutes to turn the table). Actual was 142, or 78.0% of theoretical. At a \$45.59 average check that gap is \$1,823 a Saturday, or \$94,796 a year.
Do not go and spend that. Look at column G.
THE HEARTH IS THE CEILING, NOT THE ROOM [the Bellwether plan]
capacity, items per hour ─── 28 ───────────────────────────────────────────
▲ 37 over by 9
5-6 ████████ 9 │
6-7 ██████████████████████ 26 │ ▲ 31 over by 3
7-8 ████████████████████████████████ 37 ────────┘ │
8-9 ███████████████████████████ 31 ─────────────────┘
9-10 ███████████████ 18
└────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────
0 4 8 12 16 20 24 28 32 36 40
Total fired: 121 items on 142 covers = 85.2% attachment.
The 7-8 hour asks the hearth for 37 items against a capacity of 28.
Those nine tickets did not disappear. They ran long.
The hearth produces about 28 items per hour, which caps the kitchen near 132 dinner covers. The room can seat 182 and the kitchen can cook for roughly 132 — so the missing \$94,796 is not available at this restaurant, in this building, with this equipment. Chasing it would put covers on a station that is already nine items underwater in the peak hour, and the cost would land as slow tickets, a bad Saturday, and guests who do not return.
But the shape of the demand is worth money, and it is free.
🧮 Run the Numbers
Flatten the curve, gain twenty-two covers, spend nothing.
Reservation pacing moves seven covers from the 7–8 hour into the first hour and eight into the last. Nothing is added; nothing is cut. The hearth's firing profile becomes:
Hour Before After Capacity Headroom 5:00–6:00 9 16 28 12 6:00–7:00 26 26 28 2 7:00–8:00 37 25 28 3 8:00–9:00 31 28 28 0 9:00–10:00 18 26 28 2 Total 121 121 140 19 No hour is over capacity, and there are 19 items of unused hearth capacity in the service. At an 85.2% attachment rate that supports 22 additional covers, worth 22 × \$45.59 = **\$1,003 a Saturday, or \$52,156 a year** — on the same seats, the same staff, the same equipment, and the same marketing budget.
The tools are a 5:30 incentive, a late menu after nine, and a reservation system with a pacing rule instead of an open grid. The constraint was never the seats and it was never the demand. It was the shape of the demand against one station.
THE CHECKS
=IF(ROUND(SUM(C5:C9)-C10,2)<>0,"REVENUE DOES NOT FOOT","OK")
=IF(MAX(E5:E9)>$B$3,"MORE GUESTS THAN SEATS — IS THE PATIO OPEN?","")
=IF($B$3<>dining_seats+bar_seats+patio_seats_in_service,"SEAT COUNT MISMATCH","OK")
=IF(H13>1,"ACTUAL EXCEEDS THEORETICAL — YOUR DWELL ASSUMPTION IS WRONG","")
=IF(ABS(AVERAGE(H5:H9)-H10)>0.01,"HOURLY RevPASH DOES NOT AVERAGE TO SERVICE RevPASH","OK")
=IF(MAX(G5:G9)>$G$14,"A STATION EXCEEDED CAPACITY THIS HOUR","")
The fourth check is a genuinely useful humility device. If actual covers ever exceed the theoretical maximum, your service is not miraculous — your dwell-time assumption is too long, and every capacity conclusion downstream of it is wrong in the same direction.
HOW IT MISLEADS
RevPASH rewards turning tables and punishes the thing that produces second visits. A manager optimizing this number will pace guests out the door, and the unhurried table — the one that orders another glass, the one that becomes a regular — is exactly what the metric penalizes. RevPASH is a capacity metric wearing the costume of a performance metric. Use it to find structural gaps in the service shape. Never put it on a manager's scorecard by itself.
The denominator is a policy choice, which means the number can be anything you want. Bellwether has 68 seats plus a 16-seat seasonal patio. Include the patio year-round and winter RevPASH collapses for a reason that has nothing to do with anyone's performance. Include only "seats we intended to sell this hour" and you can manufacture a flattering number in an empty room. Write the denominator definition down, put it at the top of the sheet, and do not change it mid-year. If you must change it, restate the prior periods beside the new ones.
It measures revenue, not margin. An hour at \$26.82 RevPASH driven by \$48 entrées and an hour driven by \$14 cocktails contribute very differently. Run the same grid at least once on contribution margin instead of revenue and the picture changes, usually in favor of the bar and usually by a lot.
It presumes the demand exists. In a room at 61.2% average occupancy, RevPASH is largely measuring how many people wanted to come — a concept and marketing question. It cannot distinguish a room you cannot fill from a room you are filling badly, and those two problems have opposite solutions.
The theoretical-to-actual gap is not a revenue forecast. It is the most misused figure in restaurant capacity work, and treating \$94,796 as recoverable is how operators end up staffed for covers that never arrive. The honest version is the one above: identify the binding constraint first, then ask what portion of the gap that constraint permits — here \$52,156, and only by changing the shape of the service rather than the size of the demand.
F.14 Building the workbook
Twelve sheets are not a workbook. Twelve sheets linked are a workbook, and the links are where both the value and the danger live.
THE WORKBOOK — WHAT FEEDS WHAT
[2] YIELD TEST LOG ───────┐
│ cost per usable unit
▼
[4] ORDER GUIDE ────► [1] RECIPE COST CARD ─────► [3] MENU MATRIX
│ case prices, │ plate costs │ mix %, contribution
│ unit costs │ │ margin, quadrants
▼ ▼ │
[5] COUNT SHEET ─────► [6] COGS WORKSHEET ◄─────────────┘
beginning & │ food %, pour %,
ending inventory │ adjusted usage
▼
[7] LABOR MODEL ─────► [8] WEEKLY FLASH ────────► [9] THREE-YEAR P&L
│ all-in labor, prime cost, │ revenue, costs,
│ fixed/variable variance to ramp │ operating profit
│ ▼
└──────────────────────────────────────► [10] BREAK-EVEN
│ fixed costs,
│ CM ratio
▼
[12] CAPACITY / RevPASH ──────────────────────► [11] 13-WEEK CASH
the covers the room and the only sheet that tells you
the kitchen can actually whether you are still open
produce — which is what in March
the sales forecast rests on
In one sentence: the cost card feeds the menu matrix; the menu matrix and the count
sheet feed the COGS worksheet; the COGS worksheet and the labor model feed the flash
report; the flash report feeds the P&L; the P&L feeds the break-even; and the
break-even and the capacity sheet feed the cash forecast.
Five rules keep a linked workbook honest. They are not preferences. Every one of them exists because a workbook that broke this rule produced a wrong number that somebody acted on.
One number, one place. Any figure that appears in two cells is a future contradiction. The price of butter lives in exactly one table — the price table — and the order guide, the cost cards, and the count sheet all look it up. The day you type \$4.48 into a second cell, you have created a version of your workbook that will be wrong on a date you cannot predict, in a direction you will not notice, because half of it updated and half of it did not.
Inputs on one sheet, computations everywhere else. Every assumption the workbook rests on — cost ratios, wage rates, burden percentages, seat counts, growth rates, the period index, the fixed/variable split — goes in a single labeled assumptions block. Never type a number into a formula cell. The moment a hard number lives inside a calculation, the sheet has a secret, and secrets in spreadsheets are found by accident, usually in a meeting.
Dollars are canonical; percentages are rounded displays. This is the rule that most often gets broken and it is the single most common source of a workbook that stops footing. Four demonstrations from this appendix, all live:
- Bellwether's labor is \$500,000** on \$1,550,000 of revenue, split \$191,895 fixed and \$308,105 variable. The variable rate is 19.8777%, displayed as 19.88%. Rebuild labor from the rounded rate — \$191,895 + (19.88% × \$1,550,000) — and you get \$500,035. **The workbook is now \$35 out of balance and there is no error in it.
- The blended COGS target of 27.8% is a rounded display of 27.76%. Compute a variance from the display and you are off by \$11 a week, which is \$572 a year, which is a reconciliation somebody will spend an afternoon chasing.
- Year 1's P&L percentage column sums to 99.9% and Year 3's to 100.1%. Both years foot perfectly in dollars.
- Break-even is \$437,635 ÷ the contribution margin ratio. Divide by the displayed 0.4053 and you get \$1,079,780; divide by the full-precision ratio and you get the published **\$1,079,815**. Another \$35, in the one figure a lender is most likely to recompute.
The rule: compute in dollars, display in percentages, and never go backwards. Where a check has to compare percentages, give it a tolerance.
Name the cost base on every sheet that has one. Bellwether has two defensible labor lines — \$500,000 in the plan's P&L and \$570,461 in the bottom-up staffing model — and every ratio downstream of labor differs depending on which you used. A workbook that does not label the base will eventually pair a contribution margin ratio from one with an operating profit from the other, and the result will look correct, because two mismatched assumptions cancel. Put the base in a labeled cell at the top of every sheet that consumes a labor figure, and make the tie checks compare like to like.
Every sheet has a check row that must equal zero or must equal a known total. Not a check you run occasionally — a row that is always visible and always computing. Put it at the top, not the bottom, so you see it before you see the answer. And write checks that test relationships, not single cells: food cost % plus contribution margin ratio must equal 1; transfers out of one category must equal transfers into the other; the break-even model must reproduce the P&L's operating profit on the same cost base; the cash forecast's category totals and its weekly totals must arrive at the same number by two different routes.
Date and version the workbook. Every printout carries the file version and the date it was produced, in the footer, automatically. You will be asked which version produced a number — by a partner, an accountant, a landlord, a lender, or by yourself in eight months — and "I think that was the March one" is not an answer. Keep the versions. Never overwrite the file you handed to somebody.
F.15 What a worksheet cannot do
Every one of the twelve sheets in this appendix ends in a number. Not one of them ends in a decision.
That gap is the job. The cost card produces \$8.52; it has no view on whether \$29 is the right price in your neighborhood on a Tuesday in February. The menu matrix produces a quadrant; it does not know that the Dog is the only thing the vegetarian in a party of six will eat. The break-even model produces 26,292 covers a year; it cannot tell you whether seven guests in ten are available on your corner, and it will not notice if you feed it the wrong labor line. The cash forecast produces \$21,999 in week 9; it will not draw down the line of credit, move a payroll date, negotiate terms with the produce company, or decide that February is the month you do not take a distribution.
A worksheet computes. Deciding is a separate act, performed by a person who has stood in the room.
A worksheet does not know whether its inputs are true. This is the deepest limitation and the least appreciated. The cost card with \$3.20 for chicken computes flawlessly to a plate cost of \$8.52 and a 29.4% food cost. If poultry went to \$3.44 in March the true plate cost is \$8.94 — except the sheet will never say so, because nobody changed the cell. It has no opinion about whether \$3.20 is still the price, and it will return the same confident answer forever.
Nor do errors stay put. A wrong yield in one cell becomes a wrong usable cost, a wrong plate cost, a wrong quadrant, a wrong menu decision, a wrong variance, and a wrong three-year projection — getting more authoritative at every step, because by the end it is printed, bound, and in front of somebody whose opinion of you matters.
Which brings us to the real danger: a well-built model producing a confident wrong answer is worse than no model at all. Not because it is wrong — everything is wrong sometimes — but because it is persuasive. You built it. You checked it. It foots. You will defend it. You will overrule the sous chef who says the portions look bigger than they used to, because the sheet says 29.4% and the sous chef says "it looks like more chicken." An operator without a model would have gone and weighed a plate.
So the defenses have to be operational, not intellectual. Five of them, in order of how often they save someone:
- Re-cost your top ten items every quarter, and every item after every contract renewal. Put it on the calendar the way you put a deep clean on the calendar. A cost card is perishable inventory too.
- Reconcile theoretical to actual, always. Any sheet that produces a "should be" number must be checked against something physically counted. Theoretical food cost from the cost cards against actual usage from the COGS worksheet. Scheduled hours against the time clock. Forecast cash against the bank statement. The variance is the finding. A model that is never reconciled is a model that is never wrong, which means it is never useful either.
- Never make a decision from a sheet you cannot rebuild. If you inherited a workbook and cannot trace how a number was produced, do not act on it. Open a blank sheet and rebuild the calculation independently. If the two agree, you have learned something. If they disagree, you have learned considerably more.
- When the sheet disagrees with the person standing at the station, investigate before you overrule. The sheet is almost always right about arithmetic and frequently wrong about the world. The cook who says the birds are coming in heavy, the server who says the portions look small, the dishwasher who says a lot of the squash plate comes back — these are observations from inside the system, and no cell in your workbook has access to them.
- Write the assumption next to the number. A cell containing 1.4 should carry a note saying turns; assumed, not observed; test at week 12. A cell containing 85.2% should say hearth attachment, measured one Saturday in August. A workbook whose assumptions are invisible is a workbook nobody — including you, in six months — can argue with.
Here is the honest summary. These twelve worksheets will not save a restaurant with a bad concept in a bad location, and no arrangement of cells produces hospitality. What they do is make the invisible visible early — cost drift in week two instead of month sixteen, a cash trough in February that you saw in October, a station running nine items underwater at 7:30 on a Saturday. Roughly a quarter of restaurants do not reach their first anniversary and close to six in ten are gone within three years, and most of those were businesses that worked for a while and then bled quietly. Bleeding is countable. That is the entire proposition.
Build them yourself. Check them against the walk-in. And when the number and the room disagree, go stand in the room.