Staff Schedule Builder

A free tool for building a week's schedule. Enter how busy the hotel will be and who is on your team, then press Build schedule. You get a schedule that covers the work at the lowest cost, respects day-off requests and follows Ontario's hours-of-work rules. You can change any shift by hand and export it to Excel or print it.

Saves automatically in your browserNo sign-upWorks for any departmentLoaded with a sample: housekeeping, Summit Tower Hotel, 44 staff

See the sample schedule

1Hotel and work standards

How long each type of room takes to clean, and how many supervisors and evening staff the work needs.

Full clean after a guest checks out
Lighter service while the guest stays
Time actually cleaning, after breaks and set-up
Turndown and guest requests

2Shift types

The shifts your team can work. "Room attendant" shifts cover cleaning hours, "Inspector" shifts cover supervision and "Evening" shifts cover turndown.

CodeNameRoleStartsEndsPaid hours

Times use the 24-hour clock. A shift ending after midnight can be entered as, for example, 23:00 to 07:00.

3This week's workload

Enter the rooms occupied the night before and the expected check-outs for each day, from your PMS forecast. The tool works out the cleaning hours and staff needed.

DayOccupied last nightCheck-outsStayoversCleaning hoursAttendantsInspectorsEvening

4Your team

Who can work which shifts, at what wage. Tap a day to cycle it through available asked off can't work.

NameContractWage $/hCan workMon to Sun

CSV columns: name, contract (FT/PT), wage, shifts (e.g. AM|MID), off (days asked off, e.g. Mon|Sat), unavailable (e.g. Sun).

5Rules

Defaults follow the Ontario Employment Standards Act (hours of work, rest and overtime) plus common union and HR practice. Change them to match your agreement.

ESA s.17: 48 without a written agreement
ESA s.22: 44 hours, paid at 1.5×
ESA requires 8 between shifts and 11 a day
Full-timers get topped up to this
Used to price uncovered work
Takes under a second. Building again replaces any changes you made by hand.
How the schedule is built (for BI reviewers)

The builder runs entirely in your browser. It fills the hardest shifts first (evening, then inspector, then room attendants), spreading each day's need across the people who are allowed, rested and under their weekly limits. It picks the lowest-cost person, so it avoids overtime, keeps weekend shifts fair, and only uses someone on a requested day off when nobody else can work. Full-timers are then topped up to their guaranteed hours. A separate checker re-tests every rule on the final schedule, including your hand edits.

The same problem is also solved exactly as a mixed-integer program with PuLP in the analytics pipeline (schedule.py). Its optimised schedules for the three sample weeks are available as Excel workbooks: coming week, peak summer week and quiet winter week.

Your inputs are saved only in this browser (local storage). Nothing is sent anywhere.