Sample result
Interactive KPI Dashboard Builder for Restaurants
The owner asked this:«I want the full board: sales, costs, service and team for my two locations, with who answers for each number.»
① PHASE 1 · the dictionary, approved before a line of code is written
| KPI | Formula | Source | Frequency | Owner (role) | Target | Traffic light |
|---|---|---|---|---|---|---|
| Food cost % | Consumption ÷ Food sales | Inventory + POS | Weekly | Head chef | The ceiling the house declares | ⬇️ lower is better |
| Prime cost % | (Consumption + Payroll) ÷ Sales | Inventory + payroll | Weekly | Manager | The ceiling the house declares | ⬇️ lower is better |
| Average ticket per channel | Sales ÷ Checks, dining room and delivery kept apart | POS | Daily | Manager | Quarter's target | ⬆️ higher is better |
| Table turnover | Services ÷ Available tables | POS + floor plan | Weekly | Floor manager | House range | 🎯 ideal range |
| Complaints per 100 covers | Complaints ÷ covers × 100 | Service log | Weekly | Floor manager | Quarter's target | ⬇️ lower is better |
SUPUESTO: no industry food cost or prime cost ceiling is hard-coded here: they shift by country, by format and by year. Until the house declares its own, the traffic light compares against the median of the sheet's own last 8 weeks, and says so on the KPI card. If the real ceiling were 2 points lower, the Centro location's food cost would go from green to amber.
② The delivered sheet, with its filters and its timestamp
Filters on top: `[All areas ▾] [Location: Centro ▾] [Channel: all ▾] [Period: Week 32 ▾]`.
| Area | KPI | Wk 32 | Target | Traffic light |
|---|---|---|---|---|
| Sales | Weekly sales | 21.4 M COP | 22.0 M | 🟡 |
| Sales | Average ticket (dining room) | $46,200 | $45,000 | 🟢 |
| Sales | Average ticket (delivery) | $38,900 | $42,000 | 🔴 |
| Costs | Food cost | 31.2% | declared ceiling | 🟢 |
| Costs | Prime cost | 56.8% | declared ceiling | 🔴 |
| Service | Complaints ×100 covers | 1.8 | 1.0 | 🟡 |
Every row opens on a click and shows the KPI card: formula, source, frequency, owner and its 8-week trend. The red prime cost explains itself on its card: August's extra staffing weighed on labor cost, and the note is dated.
The two tickets are kept apart on purpose. Averaging dining room and delivery into one row would have produced a «healthy» $43,400 ticket and hidden the channel that is losing. Same with the two locations: they are never averaged.
Bottom right, the seal: `Backup exported 25/08 · Safe merge active` — and in cells with no real figure, the grey `DEMO` label waiting for the data.
The full example has 1 more part(s): you see them inside the library, with your account.