ProChefDesk
← Blog
Labour · Operations

Staff Scheduling: Building a Roster to Demand, Not Habit

Most rotas get written to who's free and what we did last week. That's how you end up paying four cooks to lean on a bench at 3pm and running one short at 8. Restaurant staff scheduling done right starts from a demand forecast and a labour-cost target — set before the week, not confessed after it.

Ask a chef how they built next week's rota and the honest answer is usually some version of: "Same as last week, minus whoever asked for a day off." The shape of the schedule is inherited. Nobody sat down and asked what the week actually needs.

That's the whole problem. A rota built from habit and availability is a rota built backwards. You're solving for "who can I put on" when the only question that matters is "what does the trade require, and what will it cost me to cover it." Get that order right and everything else — overtime, morale, the labour line on your P&L — falls into place. Get it wrong and you'll spend every week firefighting a schedule that was never fit for the demand in the first place.

Schedule to demand, not availability

The instinct is understandable. Availability is the thing shouting at you — Marco can't do Tuesday, Sara's got an exam, the new commis is still on trial hours. So you build the puzzle around the pieces you have, and demand becomes an afterthought you notice on Saturday night when the pass is drowning.

Flip it. Start with the demand curve. What are you forecasting to sell, hour by hour, across the week? Only once that's on paper do you lay bodies against it. Availability is a constraint you solve within the demand shape — not the thing that defines the shape.

Here's a concrete example. A 60-cover bistro, mid-week versus weekend. Written to habit, you'd probably run a flat five-in-the-kitchen most nights because that "feels safe." Written to demand, it looks nothing like that:

ServiceForecast coversKitchen onFront on
Tue lunch1822
Tue dinner3433
Fri dinner7255
Sat dinner8866
Sun lunch5544

Same restaurant, same team, wildly different daily headcount because the demand is wildly different. The habit rota would have over-staffed Tuesday by two heads and probably under-staffed Saturday by one. Two over-staffed shifts a week at, say, $110 a shift is $220 of pure waste — call it $11,000 a year for one small mistake repeated fifty times.

Reading the demand pattern

You can't roster to demand if you can't see demand. The good news is you almost certainly already have the data; the bad news is it's sitting unread in your POS.

Pull the last eight to twelve weeks of sales, broken down by day and — this is the part people skip — by hour or half-hour. Daily totals tell you which days are busy. Hourly totals tell you when to bring people in and when to send them home, which is where the real money hides. A day that does the same covers spread evenly needs a different rota from a day that does 70% of its trade in a two-hour spike.

Layer three things on top of the raw history:

You don't need a data scientist. A rolling average of "same weekday, last four weeks," nudged up or down for the calendar and anything booked, gets you 90% of the value. Write the forecast number at the top of each day before you place a single name. That number is the brief the rota has to answer to.

Watch this trap: don't forecast from a single blowout or a single dead night. One freak Saturday during a festival will drag your average up and have you over-staffing for weeks. Use the median of the last four to six matching days, not the peak, and eyeball anything that looks like an outlier before you trust it.

The labour-cost target comes first

Demand tells you the shape of the week. Your labour-cost target tells you how much of it you can afford to cover. Both belong on the page before you start assigning shifts.

Labour cost percentage is your total labour cost — wages, plus the on-costs most chefs forget: employer taxes, holiday pay accrual, pension, any agency premium — divided by sales for the same period.

Labour Cost % = (Total labour cost incl. on-costs) ÷ (Sales) × 100

Most full-service kitchens aim for total labour (front and back combined) somewhere in the 28–35% band; quick service can run leaner, high-touch fine dining higher. The exact target is yours to set — but you set it before the roster, as a ceiling, and then build a schedule that lives under it. That's the whole discipline. A target you only calculate on Monday after the week's already been worked is not a target; it's a post-mortem.

Here's how it plays out with the numbers. Say Saturday forecasts $6,400 in sales and you've set a 30% labour ceiling. That gives you $1,920 to spend on the whole day's crew, front and back. Six kitchen at an average all-in $22/hour across a nine-hour spread is roughly $1,190. That leaves about $730 for front of house — which, at a similar rate, is another six or seven hours of server coverage than you'd first guess, so you stagger them: two on early for setup, the rest landing before the 7pm push. The point is you're doing this arithmetic against a budget, live, while you build — not discovering on the following Monday that you blew through 38%.

Skill mix, not just headcount

Five bodies is not five bodies. A section that needs a competent grill cook is not covered by rostering two commis who can both do larder. Headcount that ignores skill is how you end up "fully staffed" and still in the weeds because the one person who can run sauce called in sick and nobody flagged it until service.

Roster by station and by capability, not by warm bodies. For each shift, the checklist is blunt:

The same logic runs front of house. Three servers where none can run the section, handle a wine list, or close a till confidently is not a covered floor. Balance the experienced and the green across the week so no single shift is carried entirely by rookies — and so no shift is so top-heavy with your best people that you're paying senior rates to polish glasses on a dead Tuesday.

Compliance is not optional, and it's not free

A roster that ignores the law isn't a cheaper roster — it's a deferred bill with penalties on top. The specifics vary by country and state, so know your own jurisdiction, but the same categories bite everywhere.

Breaks and rest periods

Most jurisdictions mandate rest breaks tied to shift length and minimum gaps between shifts. A closer who finishes at 1am and opens at 9am the same morning ("clopening") is both a compliance risk in many places and a guaranteed way to burn out your best people. Build the break into the schedule as a real, unpaid, uncovered block — and make sure someone else covers the section while it's taken, or the break exists only on paper.

Overtime and penalty rates

The moment a schedule pushes someone past the overtime threshold, every extra hour costs you 1.5× (or more). In the US that's a federal Fair Labor Standards Act matter — the US Department of Labor (Wage and Hour Division) sets the overtime and recordkeeping rules, and the same page is a good starting point for the records you're legally required to keep. Elsewhere you'll have weekend, public-holiday or late-night penalty loadings that can push a Sunday hour to 1.75× or double. A roster that quietly parks your top earner into overtime every week is silently inflating your labour percentage — the antidote is seeing the cost climb as you build, which is exactly what a live labour readout gives you.

Publishing lead time

Publish the rota with enough notice that people can plan their lives — a week ahead is a sensible floor, and in some places "fair workweek" or predictive-scheduling laws make advance notice a legal requirement with penalties for last-minute changes. Beyond the law, a rota published on Sunday night for a Monday start is how you lose good staff. Notice is a retention tool as much as a compliance one.

In ProChefDesk

The Roster tool shows a live labour-cost percentage as you drag shifts in. Set your weekly sales forecast and your target %, and the number colours green while you're under target, amber as you approach it, and red once a shift tips you over — before the week is worked, not after. You can see the labour percentage move as you add each shift, so you catch the over-staffed Tuesday while it's still fixable.

The live check while you build

This is the habit that changes everything, and it's worth stating plainly: you should know your labour-cost percentage while you're building the roster, not once the week is done.

A static spreadsheet gives you the number only after you've summed the columns — which in practice means you find out you're over budget on Monday, when the shifts are already worked and paid. A live figure that updates as you assign each shift turns rostering into a steering exercise. Add a body to Saturday's grill, watch the percentage tick from 29% to 31%; decide whether that head is worth two points. Trim the over-staffed Tuesday and watch it drop back. The decisions are the same ones you always made — but now you're making them with the price tag visible, in the moment, instead of guessing and reconciling later.

Tie it back to the demand forecast and you've closed the loop. Forecast covers set the shape; the labour target sets the ceiling; the live percentage keeps you honest as you fit the two together. Roster planning stops being an inherited ritual and becomes a decision you can defend line by line.

Events change the maths

If you cater or run functions, your roster isn't just answering to the à la carte covers — it's answering to whatever's on the events book that week. A confirmed 80-guest wedding lunch on Saturday doesn't just add revenue; it adds a labour requirement that has to sit inside the same percentage ceiling.

The mistake is to plan the à la carte rota and the event staffing in two separate universes, then wonder why the week's labour line came in hot. Fold the event's confirmed revenue into the week's sales figure and fold its staffing into the same headcount plan. If Saturday's function bills $4,000 on top of $6,400 à la carte, your labour budget for the day grows accordingly — but so does the crew you need, and the two have to be reconciled against one target, not two.

What to do this week

Don't try to rebuild your entire scheduling system on a Sunday. Do one week, properly, and feel the difference:

  1. Pull hourly sales for the last four matching weeks from your POS. Write a forecast cover count at the top of each day for next week.
  2. Set a labour-cost ceiling as a percentage of forecast sales. Write it down before you touch a single name.
  3. Build the rota against the forecast shape — headcount tracking the demand curve, not a flat line — and lay the skill mix over it so every station has a competent owner and every shift a senior.
  4. Watch the labour percentage as you go. When a shift tips you over the ceiling, decide deliberately whether the demand justifies it. Sometimes it does; the point is you chose it.
  5. Publish it early. A week's notice, minimum. Respect the breaks and rest gaps you're legally on the hook for.

Do that for a month and the habit rota starts to feel absurd — like driving with your eyes on the rear-view mirror. You'll trim the shifts that were never earning their keep, cover the pushes that used to bury you, and watch the labour line settle into the band you actually chose.

"We were always 'fully staffed' and always in the weeds. Turned out we were fully staffed for a Tuesday, every single night."

Rostering to demand doesn't mean cutting people to the bone. It means putting the right number of the right people on at the right hours — and knowing what it costs before the week begins, not after it's already been paid for.