Executive summary
- Growth won't carry the P&L this year. UK restaurant like-for-like sales were down 0.7% in June 2026, while April's National Living Wage rise to £12.71 landed on top of 2025's employer NIC increase.
- The biggest controllable lever is the gap between theoretical and actual food cost. It's what you should have spent against what you did spend. A 1.2-point gap on £6.3m of food sales is about £76k a year of EBITDA.
- Most groups can't see that gap because their definitions don't agree. Trading days, GP, covers and "food cost" mean different things in different spreadsheets. Fix the definitions and the dashboard is the easy part.
- Delivery is a margin question, not a sales question. Platform commission is charged on the VAT-inclusive order, so a 30% headline rate costs about 36% of your net sales.
Restaurants & bars at DataHexis
"Covers per service, food cost %, labour ratios, menu engineering, and booking analytics." This article goes one level deeper: which of those numbers actually moves EBITDA, and why most groups can't see it yet.
— from the Industries section of the DataHexis websiteAsk a restaurant group how trading is going and you'll get a sales number. Ask where last month's margin went and you'll usually get a pause, then a theory.
That pause is expensive. Sales are the number everyone can see: the EPOS shows them by the minute. Margin lives in the join between systems: recipe specs, supplier invoices, stock counts, rotas and platform statements. Nobody owns that join, so nobody sees the leak until the month-end pack arrives three weeks later and the money has already gone.
Why margin is found, not grown
For most of the last decade, a group could grow its way out of a soft margin. New sites and rising covers covered a lot of sins. In 2026 that option has largely gone.
Put those together and the maths is unforgiving. Labour has stepped up two years running while like-for-like sales go nowhere, so prime cost (food, drink and labour together) drifts towards the top of the usual 55–65% band. Nobody decided that; it just happened a few pence at a time. At that point the groups that protect EBITDA aren't the ones with the best sales. They're the ones that can see, site by site and week by week, where the pennies are going.
Seeing that clearly comes down to four numbers: the food-cost gap, prime cost, contribution by sales channel and site EBITDA. Each one sounds simple and is surprisingly hard to calculate honestly across sites.
The two-point gap: theoretical vs actual food cost
Theoretical food cost is what you should have spent: every dish sold multiplied by its recipe cost. Actual food cost is what you did spend: opening stock plus purchases minus closing stock. The gap between them is waste, over-portioning, comps that weren't rung through, theft and recipe drift. It's the single most controllable number in a restaurant P&L.
Most groups track actual food cost %. Far fewer track it against theoretical, because theoretical needs three things to line up: item-level sales from the EPOS, a costed recipe for every dish, and a recipe cost that updates when supplier prices move. Get those joined and the variance usually lands somewhere between half a point and two points. There's no official industry standard; experienced operators treat roughly one point as normal for a simple menu, and one-and-a-half to two points as tolerable for scratch or seafood-heavy kitchens.
The value is easy to put a number on. Take a group with £6.3m of annual food sales and a blended gap of 1.2 points: that's about £76k a year leaving the business with nothing to show for it. Close it to the 0.6 points your best site already manages and you recover around £38k of EBITDA. You haven't touched a menu price, renegotiated a supplier or cut a shift.
Theoretical is what you should have spent. Actual is what you did. The gap between them is your margin, walking out the back door.
The site with the widest gap is rarely the one with the worst chef. It's usually the site where spec sheets haven't been updated since the last menu change, deliveries go unchecked on a busy Friday, or staff meals and comps don't get recorded. Those are process problems, and a weekly variance number is how you find them.
Two GPs, one business
Here's a conversation that plays out in a lot of groups: a GM says the site is running at 72% GP, and the FD says the business made 40% gross profit. Both are right. The GM means food and drink margin. The statutory accounts, like many in UK hospitality, put site staff costs inside "cost of sales". Same business, two definitions, and a monthly argument that isn't really about performance at all.
That's why the first deliverable in this kind of project isn't a dashboard. It's a measure library: one written definition of every number that matters, built once into the data model and reused everywhere. The definitions that cause the most trouble in restaurant groups are:
- Trading day. A table that closes at 12:40am belongs to the previous day's service. Get this wrong and Friday's late trade inflates Saturday, which breaks every day-part comparison and every rota decision built on it.
- Covers. Is a drinks-only table a cover? A child? A delivery order? Pick one rule, apply it at every site, and spend per head finally becomes comparable.
- Food cost %. Against food sales or total sales? Before or after staff meals? Wastage logged or estimated? Each choice is defensible. Mixing them isn't.
- Site EBITDA. Before or after central costs? Before or after IFRS 16 rent adjustments? Comparing sites on anything other than a consistent four-wall number rewards the site with the cheapest lease, not the best team.
A worked example: the GM's view
To make this concrete, here's what the finished reporting looks like for a typical central London operator: a multi-site restaurant and bar group trading across Covent Garden, Soho, Marylebone and the City, with about £8.75m of annual net sales. It's a composite of typical multi-site set-ups rather than a single client. The figures are illustrative, but they're built to be realistic against the benchmarks cited in this article.
The data comes from five places, and none of them were designed to talk to each other:
Every GM opens the same live view each morning. It's refreshed overnight and judged against their own site's targets, not a group average that suits nobody.
Site view: Covent Garden
Week ending Sunday 6 SeptemberStatus is always a word and an icon as well as a colour, so the signal survives a phone screen in a dark back office.
RevPASH by day-part: revenue per available seat-hour, last 4 weeks (£)
Covers tell you how busy you were. RevPASH tells you what your seats earned. Pre-theatre carries the week from Tuesday to Saturday, and collapses on Sunday when most West End theatres are dark. That's a rota and pricing decision hiding in plain sight.
Menu engineering matrix (Kasavana & Smith)
High cash margin, high popularity. Protect the spec; feature them.
Popular, thin margin. Re-cost the recipe before touching the price.
Good margin, few takers. Reposition, rename or retrain the pitch.
Low margin, low popularity. The shortest route to a simpler kitchen.
Classified on cash margin per dish, not GP%. A burger making £9 a plate beats a salad making £6, even at a lower percentage.
The board view: five charts that replace the month-end pack
A GM needs this week. The board needs the pattern: whether rising wages are being absorbed or passed on, which sites are leaking, and whether delivery growth is adding profit or just adding sales. It's the same data model and the same definitions, just a different altitude.
Prime cost vs the 60% ceiling
April's wage rise pushed prime cost to 62.3%. It came back under the ceiling within three months, from tighter rotas on quiet day-parts and from closing the food-cost gap. There was no across-the-board price rise.
The food-cost gap, by area
Same menu, same suppliers, and a gap that runs from 0.6 to 2.1 points. The City site's 2.1 is the two-point gap in the title.
What's left of £100 of food sales
Commission is charged on the VAT-inclusive order: 30% of £120 is £36 against £100 of net sales. Dine-in still has to pay for front-of-house labour, but the gap is wider than most boards assume.
Where each £1 of sales goes
The same P&L shape every founder carries in their head. The bracket is the part the team can change this week.
Site EBITDA by area
The City site trades hard Monday to Thursday and pays a full week's rent for a two-day weekend. That's a structural question for the board, not a performance question for the GM, and the data now makes that distinction obvious.
Under the hood (for the data team)
Everything above depends on a model that's boring in the best way: predictable, documented and reconciled to the ledger. Here's how it's put together.
Data model, pipeline and refreshStar schema, trading-day logic, row-level security
A lightweight warehouse (Azure SQL or Microsoft Fabric, depending on scale) sits between the source systems and Power BI. Nightly extracts land raw, then get conformed into a star schema:
| Table | Grain | Why it matters |
|---|---|---|
| Fact Sales Line | One row per item sold, per ticket | Theoretical cost and menu engineering both need item-level sales, not daily totals |
| Fact Purchases | Invoice line, mapped to purchase category | PDF and CSV invoices are standardised into proteins, dairy, dry goods and beverage |
| Fact Stock Count | Site × category × count date | Actual food cost needs opening and closing stock, not purchases alone |
| Fact Labour | Shift, with scheduled and worked hours | SPLH and labour % by day-part, including employer on-cost |
| Dim Menu Item | Conformed dish, recipe cost by date | A dish rolls up the same way at every site |
| Dim Date | Trading day, day-part, week, period | One calendar, including the 5am cut-over |
Trading day is assigned once, upstream, so every report inherits it:
-- Trading day: anything closed before 05:00 belongs to the previous day's service
CAST(DATEADD(HOUR, -5, ticket_closed_at) AS date) AS trading_date
Row-level security gives each GM their own site, area managers their patch, and the board everything, all from one semantic model. Incremental refresh keeps the nightly load to minutes rather than hours.
The measures behind the food-cost gapSample DAX, including the detail that usually gets missed
Theoretical Food Cost % =
DIVIDE (
SUMX ( 'Sales Line', 'Sales Line'[Quantity] * 'Sales Line'[Recipe Cost at Sale] ),
[Food Net Sales]
)
Actual Food Cost % =
DIVIDE ( [Opening Stock] + [Food Purchases] - [Closing Stock], [Food Net Sales] )
Food Cost Gap (pts) =
( [Actual Food Cost %] - [Theoretical Food Cost %] ) * 100
The detail that usually gets missed is Recipe Cost at Sale. Recipe cost is snapshotted onto each sales line when the sale happens. If you look it up live instead, last month's variance quietly changes every time a supplier price moves, and nobody trusts the number twice.
Is Power BI the right tool for restaurants?An honest answer, including when it isn't
A fair criticism from parts of the restaurant-tech world is that Power BI is slow and fragile for hospitality. Pointed straight at raw EPOS exports, it often is. The fragility comes from skipping the warehouse and the measure library, which is exactly the layer described above.
Where Power BI isn't the answer: live rota building, automated ordering and shift-by-shift labour forecasting. Specialist hospitality platforms do those jobs better, and many groups already run one. Our view is that they're complementary. The operational tool runs the shift. The Power BI model sits across all your systems, including that tool, reconciles to the finance ledger, and belongs to you rather than to a vendor.
If you run one venue, the same four numbers matter more
None of this is exclusive to groups. A single, well-run restaurant or bar feels a one-point food-cost gap or a bad rota week more, not less, because there's no other site to average it out. The difference is scale: one site means one EPOS, one supplier list and a much lighter model. A first dashboard often comes in under the two-week average, built on the systems you already pay for.
Whether it's one venue or twenty, the test is the same: could you tell someone where last week's margin went, to the nearest point, by Monday lunchtime?
Frequently asked questions
What is a good food cost percentage for a UK restaurant?
UK benchmarks typically put food cost at roughly 28–35% of food sales and drink cost somewhat lower, for a gross profit of around 65–70% in casual dining and 70–80% in bars. The more useful measure is the gap between theoretical and actual food cost: around one point is normal for a simple menu, and consistently above two points signals waste, portioning or recording problems worth investigating.
What is prime cost, and what should it be?
Prime cost is food and drink cost plus total labour cost (including employer NIC and pension), as a percentage of net sales. Most UK full-service operators work within 55–65%, and above 70% is a warning sign. After the April 2025 NIC changes and April 2026 wage rises, many groups are running near the top of that band. That's why a weekly prime cost number, rather than a monthly one, matters.
Which KPIs should a multi-site restaurant group track weekly?
At minimum, track these by site: net sales against forecast and like-for-like, spend per head, the food-cost gap (actual vs theoretical), labour % and sales per labour hour, prime cost, RevPASH by day-part, and contribution by channel. Monthly, add four-wall site EBITDA on a consistent pre-central-cost basis.
How much do delivery platforms really cost a restaurant?
Uber Eats publishes UK rates of 30% for orders it delivers and 13% for pick-up or your own delivery, plus VAT on the fee. Because commission is calculated on the VAT-inclusive order value, a 30% rate costs around 36% of your net (ex-VAT) sales before packaging, which is why delivery should be reported as contribution, not just revenue.
Can this work for a single restaurant, and how long does it take?
Yes. The model is lighter for one site, and a first working dashboard is typically live in around two weeks (often sooner for a single venue), built on the EPOS, rota and accounting systems you already use.
Sources
- NIQ-RSM Hospitality Business Tracker, June 2026 (published 23 July 2026). nielseniq.com
- UKHospitality, "Annual cost increases hit hospitality" (April 2025). ukhospitality.org.uk
- GOV.UK, National Minimum Wage and National Living Wage rates. gov.uk
- Jelly, UK restaurant gross profit margin benchmarks (2026). getjelly.co.uk
- Chef's Resources, "Theoretical food cost vs actual food cost: acceptable variances". chefs-resources.com
- Uber Eats UK merchant pricing (accessed September 2026). merchants.ubereats.com
- Kasavana, M. L. & Smith, D. I. (1982). Menu Engineering: A Practical Guide to Menu Analysis. Hospitality Publications.
Related reading
Find your two-point gap
In a free 60-minute discovery call, we'll look at how your EPOS, purchasing, rota and delivery data fit together, and tell you honestly whether a dashboard would pay for itself.
Book a free discovery call → First dashboard typically live in about two weeks · UK-based team