1Hotel and work standards
How long each type of room takes to clean, and how many supervisors and evening staff the work needs.
2Shift types
The shifts your team can work. "Room attendant" shifts cover cleaning hours, "Inspector" shifts cover supervision and "Evening" shifts cover turndown.
| Code | Name | Role | Starts | Ends | Paid 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.
| Day | Occupied last night | Check-outs | Stayovers | Cleaning hours | Attendants | Inspectors | Evening |
|---|
4Your team
Who can work which shifts, at what wage. Tap a day to cycle it through available asked off can't work.
| Name | Contract | Wage $/h | Can work | Mon 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.
Your schedule
Tap any shift to change it. The totals, costs and rule check update instantly. A red outline marks a shift on a day the person asked off.
Is the work covered?
Cleaning hours needed against cleaning hours scheduled, day by day.
Rule check
Checked separately from the scheduler, so hand edits are checked too.
| Rule | Breaks | Result |
|---|
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.