Guide · Updated 13 July 2026
How to make a staff roster that survives contact with reality.
Every duty manager learns rostering the same way: inherit a spreadsheet, copy last week, fix complaints. Here is the method behind a good roster — the one worth following whether you build it by hand or let software do the heavy lifting.
Step 1 — Start from demand, not from people
The first question is never "who works Monday?" It is "how many people does Monday actually need, per shift, per role?" Pull it from something real: reservations and expected covers in a restaurant, occupancy forecast in housekeeping, the function sheet in banquets, arrival volume at the desk. Write the number down per shift. A roster built from demand can be judged; a roster copied from last week can only be defended.
Step 2 — Collect the constraints before you place a single shift
Availability and approved leave. Contracted hours per person, and who is casual. Skills — who can hold the bar, run the desk alone, supervise a floor. And the legal floor beneath all of it: in Hong Kong that means at least one rest day in seven, alternative holidays for statutory holidays worked, and everything else in our Employment Ordinance rostering guide. Collecting these first matters because a constraint discovered late invalidates work already done.
Step 3 — Place the hardest shifts first
Fill the shifts with the fewest qualified people before the ones anyone can work: the overnight, the solo-capable opener, the statutory-holiday dinner. If the roster is going to be infeasible, you want to find out at the start — while every other slot is still flexible — not at 6pm on Sunday when the easy shifts are all spoken for.
Step 4 — Check the rules across boundaries
The classic hand-rostering failures live at the edges: a closing-then-opening double at the join of two days, eight consecutive working days straddling two printed weeks, a casual quietly drifting past their hour limit across a month. Check consecutive days and rest gaps across week boundaries explicitly — that is where the violations hide.
Step 5 — Balance fairness over weeks, not within one
One week is never fair; someone always has the worse draw. Fairness is a running account: weekends off rotated, unpopular shifts shared, hours near contract for everyone. Keep the score across the month and correct it deliberately, or your best people will keep the score for you — in interviews elsewhere.
Step 6 — Cost it before you publish, then publish once
Total the projected hours and cost against the revenue you expect. Overstaffing caught on the draft costs nothing; overstaffing found on next month's P&L is already spent. Then publish once, visibly, where the team actually looks — in hospitality that is WhatsApp — and treat post-publication edits as the exception with a clear swap process, not the norm.
Where spreadsheets stop working
Every step above is possible in Excel. The problem is that steps 2, 4 and 5 are checkingproblems, and spreadsheets don't check — they display. At ten staff a careful manager holds the rules in their head. At twenty-five, with casuals, stations, leave balances and a public holiday in the week, the combinatorics defeat everyone; the failures just stay invisible until someone works a double or a rest-day complaint lands.
That checking problem is precisely what constraint-solving AI is for: RosterProject takes the demand, rules and availability from steps 1–2 and performs steps 3–6 in seconds — hard rules enforced by construction, fairness weighted across the period, cost on screen before you publish. (How that works is its own guide: AI roster generators, explained.)