Building an interactive Power BI dashboard to track daily sales, labor costs, and food waste metrics for a multi-concept restaurant operation — enabling data-driven staffing and menu decisions that reduced waste by 15%.
Restaurant operators make hundreds of micro-decisions every week — how many staff to schedule on a Tuesday dinner, whether to 86 a low-margin special, when to cut labor on a slow night. Most of these decisions are made on gut feel. This project replaces intuition with data.
Using real POS transaction data, staff schedules, and ingredient cost sheets, I built an interactive dashboard system that surfaces the metrics operators actually need: revenue per labor hour, true margin per menu item (including labor cost per unit), daypart profitability, and staffing variance — updated weekly.
This methodology was formalized into the TableStandards 90-Day Pilot Program, a productized analytics service for independent restaurant operators.
Staffing was based on “what we always do” rather than actual hourly revenue data. The result: overstaffed slow periods burning payroll, understaffed peaks degrading service. A gelato-and-cocktail concept has wildly uneven demand curves — cocktail rush at 9 PM, gelato traffic at 3 PM — and a flat staffing model doesn’t account for either.
The best-selling item (espresso martini) was treated as the most profitable. But when you factor in bartender labor time per unit vs. a scoop of gelato, the margin picture inverts at certain dayparts. No one was tracking true margin per item including the labor component — only food cost percentage.
Weekly P&L reports arrived too late and too aggregated to drive real-time decisions. By the time a manager saw that last Tuesday was overstaffed, three more Tuesdays had already passed. The operation needed a system that delivered actionable variance data every Monday morning.
The analysis follows a three-phase approach — each phase builds on the last, and each delivers standalone value. All models are built in R Studio from raw POS exports, making them reproducible, transparent, and vendor-agnostic.
Pull 4–6 weeks of POS transaction data. Map staffing against actual revenue by hour and day. Identify the gaps between labor cost and demand, then build an optimized staffing grid with projected savings.
Calculate true margin per item factoring in both ingredient cost and labor time per unit. Run basket analysis to identify what sells together, break down profitability by daypart, and map upsell and cross-sell opportunities.
Deliver the optimized schedule, product mix insights, and a weekly performance dashboard. Track results together and refine the model as the business evolves through the season.
The flagship cocktail was the #1 seller by volume. But when we factored in bartender labor time per unit (2.5 minutes vs. 30 seconds for a gelato scoop), the true margin per item told a different story at different dayparts:
| Item | Food Cost % | Labor/Unit | True Margin | 3 PM Margin | 9 PM Margin |
|---|---|---|---|---|---|
| Espresso Martini | 22% | $1.85 | $8.15 | $5.20 | $8.15 |
| Gelato (double) | 18% | $0.35 | $5.65 | $5.65 | $5.65 |
| Affogato | 20% | $0.90 | $6.10 | $6.10 | $6.10 |
| Negroni | 19% | $1.20 | $8.80 | $4.60 | $8.80 |
At 3 PM with only one customer ordering a cocktail, the bartender’s labor cost per unit spikes because they’re on the clock for the full hour. At 9 PM during peak cocktail volume, labor cost per unit drops as throughput increases. The dashboard surfaces this daypart margin variance in real time.
Mapping staff-on-clock against hourly revenue revealed consistent overstaffing on Monday and Tuesday dinner shifts (2.1 staff per $100 revenue vs. 1.3 on Friday). The optimized grid reduced Monday/Tuesday dinner staffing by one position while adding a half-shift on Saturday afternoon gelato rush — net labor savings with no service degradation.
| Day | Before: Staff/$100 Rev | After: Staff/$100 Rev | Change |
|---|---|---|---|
| Monday | 2.1 | 1.5 | −29% |
| Tuesday | 1.9 | 1.4 | −26% |
| Wednesday | 1.6 | 1.5 | −6% |
| Thursday | 1.4 | 1.3 | −7% |
| Friday | 1.3 | 1.3 | 0% |
| Saturday | 1.5 | 1.4 | −7% |
| Sunday | 1.7 | 1.4 | −18% |
Visual labor demand map by hour and day — see exactly when you need people and when you’re burning payroll.
True profitability of every menu item including labor cost per unit — not just food cost percentage.
Scheduled vs. actual labor, revenue trends, and rolling performance metrics delivered every Monday.
Specific scheduling changes, menu positioning, and staffing adjustments with projected dollar impact.
The industry standard of evaluating menu items by food cost percentage ignores the labor component entirely. An espresso martini at 22% food cost looks great — until you realize each one requires 2.5 minutes of bartender time. The dashboard makes this visible by daypart so operators can make real margin decisions, not food-cost-only decisions.
The single highest-impact change was reducing Monday/Tuesday dinner staffing by one position. No service complaints, immediate payroll savings. The data made it obvious; gut feel never would have.
A monthly P&L is a rearview mirror. A weekly variance dashboard delivered every Monday morning is a steering wheel. The shift from “here’s what happened last month” to “here’s what to adjust this week” is the difference between reporting and operations intelligence.