/ Insights
← All insightsHotel labor models that survive a bad week
Picture the Tuesday a group cancels. A hundred and twenty rooms fall off the block for the back half of the week, and the catering attached to them goes with it. The revenue manager sees it within the hour and starts repricing. The GM sees it by end of day. The schedule does not see it at all. Housekeeping is already posted for the original occupancy, the restaurant is staffed for covers that are not coming, and the front desk has a swing shift built for arrivals that just evaporated. By Thursday the building is carrying labor for a week that no longer exists, and the only person who notices is the controller, three weeks later, reading it off the P&L.
That gap is the whole problem. Labor is the single biggest controllable line an operator owns, usually thirty to forty percent of revenue at a full-service hotel and often more in the restaurant. It is also the line that moves slowest when demand moves fastest. Rooms reprice in minutes. Rates flex by the hour. The schedule gets built once a week, off a number that was already stale when it was set, and then it ossifies. We manage the most controllable cost in the building with the least responsive tool in the building. This is the playbook we use to fix that.
Why the static par fails
Most hotel labor models are par-based, and most pars are static. Housekeeping is staffed at a fixed number of rooms per attendant. The restaurant runs a set number of servers per shift. The front desk has a template that repeats every week with minor tweaks for weekends. None of it is wrong, exactly. A par is a reasonable starting point. The failure is that the par was built for an average week, and there is no such thing as an average week. There is a strong week and a soft week and a group week and a holiday, and the par is wrong for every one of them in a different direction.
When demand runs high, the static par understaffs. Service slips, the team burns out, overtime creeps in to cover the gap, and you pay a premium for labor you should have scheduled at straight time. When demand runs low, the par overstaffs. You carry hours against rooms that did not sell and covers that did not come, and that money is gone the moment the shift is worked. The static par guarantees you are wrong in both directions. It just hides the cost, because nobody reconciles scheduled labor against actual demand until the period closes.
The deeper issue is that the par does not know what the rest of the building already knows. The forecast exists. The occupancy projection is in the PMS or the RMS. The covers forecast lives in the catering system and the restaurant’s own history. The group pickup, the in-house count, the banquet event orders for the week are all sitting in systems the scheduler never opens. The schedule is built off last week and a gut feel, when a defensible demand signal was available the whole time. The data is in the building. It just never reaches the person posting the schedule.
What a labor model that flexes actually means
A labor model that survives a bad week is not a smarter par. It is a par that moves. Three distinctions separate a flexing model from a static one, and you need all three or the model drifts back to a template inside a month.
Drivers, not headcount. A static schedule starts with people: how many servers, how many attendants. A flexing model starts with the demand driver and derives the people. Housekeeping is driven by checkout and stayover rooms, not a fixed posting. The restaurant is driven by forecasted covers, not a standing four-server floor. The driver is the number that moves, and the labor follows it. If you schedule headcount first and check it against demand never, you do not have a model. You have a habit.
Forecast, then reconcile. The schedule gets built off the forecast. That is the easy half. The half that almost everyone skips is reconciling actual hours worked against actual demand after the fact, every day, so the model learns. A forecast you never check against reality is a guess you repeat forever. The reconcile loop is what turns the labor model from a one-time build into a thing that gets more accurate every period.
Productivity, expressed in the operator’s unit. Labor as a flat dollar figure tells you nothing about whether it was right. The same dollar of labor is a triumph on a sold-out night and a disaster on a dead one. The model has to express labor in productivity terms the operator already thinks in: hours per occupied room, minutes per cover, labor as a percent of departmental revenue. Those are the units that tell you whether the week was well run, independent of how busy it was.
The playbook
Step 1. Build one demand signal the whole building schedules against
Before you touch a single schedule, build the forecast that every department will staff against. Pull forecasted occupancy and arrivals from the PMS or RMS, forecasted covers from the restaurant’s own history and the reservation book, and the week’s banquet event orders from the catering system. Stack them into one weekly demand picture, by day, by daypart where it matters. This is the artifact most properties do not have. Not a rooms forecast the revenue manager keeps and a covers guess the chef keeps and a banquet sheet the catering office keeps. One demand signal, shared, that the housekeeping schedule and the restaurant schedule and the front desk schedule all read from. If you build only one thing, build this. Everything after it is just applying labor to a number you can trust.
Step 2. Set drivers and standards per department
For each department, define the demand driver and the productivity standard that ties labor to it. Housekeeping: rooms cleaned per attendant hour, split for checkout versus stayover, because a checkout is not the same work as a stayover. Restaurant and banquet: covers per server hour and the kitchen’s hours per cover, by daypart. Front desk and bell: a curve tied to arrivals and departures, not a flat shift. Write the standard down as a number, not a feeling. These are your labor standards, and they are the ratios the whole model runs on. They will be wrong at first. That is fine. Step 5 fixes them.
Step 3. Generate the schedule from the forecast, then post against it
Now multiply. Forecasted drivers times your standards gives you required hours by department by day. That is the schedule the model wants. Post against it, then look at the gap between what the model asked for and what you actually staffed. The gap is where the judgment lives. You will override the model sometimes, for a VIP arrival, for a new server still in training, for a banquet that needs a captain regardless of the cover count. Good. The point of the model is not to remove judgment. It is to make every override a visible, deliberate decision instead of an invisible default baked into a stale template.
Step 4. Watch the leading signals, not just the dollar
The labor dollar is the lagging number. By the time it is wrong, the shift is worked and the money is spent. Watch the leading signals instead. Productivity per occupied room and minutes per cover tell you whether the week was run to standard, busy or slow. Labor as a percent of revenue, by department, tells you where the model is leaking, because a portfolio number averages a tight restaurant and a bloated housekeeping line into one figure that warns you about neither. Overtime as a share of total hours is the smoke alarm: rising overtime means the schedule is fighting the forecast, either because the forecast is wrong or because nobody is flexing to it. These signals turn before the P&L does. Plot them weekly and you fix the model in real time instead of explaining it at month-end.
Step 5. Reconcile and recalibrate every week
This is the step that separates a model from a spreadsheet. Every week, lay actual hours worked next to actual demand and compare both to what the model predicted. Where the standard held, leave it. Where you consistently needed more hours than the standard called for, the standard is wrong, raise it. Where you consistently beat it, tighten it. The static par never does this, which is exactly why it stays wrong forever. A flexing model gets more accurate every period because the reconcile loop feeds the standards back into Step 2. Six months of honest reconciliation and the model knows your building better than any consultant’s benchmark ever could, because it is built on your actual demand and your actual team.
The data is already in the building
Here is the honest part. Nothing in this playbook requires new software. The occupancy forecast is in the PMS or the RMS. The covers history is in Toast and the reservation book. The banquet demand is in Tripleseat or Delphi as event orders. The actual hours worked are in the time-and-attendance system you already run payroll through. You pay for every system that holds a piece of this.
The reason you do not have the model is that those systems do not talk to each other, and a flexing labor model needs all of them at once. The forecast lives in one place, the schedule in another, the actuals in a third, and nobody joins them. So the scheduler builds off a template because pulling the real demand signal by hand, every week, for every department, is a job nobody has time for. Building a flexing labor model is not a buying problem. It is an integration problem, the same single-source-of-truth problem underneath almost every reporting gap we see. It is the same disconnect that leaves an operator running the building on five systems that disagree, each one holding a piece of the answer and none of them holding the whole.
That is the work we do, and labor is one instance of it. Connect the forecast, the schedule, and the actuals into one view and the schedule starts moving the way demand moves. Connect the rest of the operation the same way and the building stops running every department off its own stale template. That is the foundation of the Operator Intelligence model: one connected source of truth, an intelligence layer that reads the way an operator already thinks in hours per room and covers per server, and an operating cadence that makes the reconcile loop a weekly habit instead of a quarter-end autopsy. A flexing labor model is just the part of it that touches your biggest controllable first.
You can build this yourself from the steps above, and some teams should. The standards are yours, the demand signal is yours, the discipline is the whole game. If you would rather it just existed and stayed current without someone rebuilding the pull every Sunday night, that is the kind of thing we build. Either way, stop scheduling next week off last week. Labor is too big a line to manage with a template, and the demand signal that would fix it is already sitting in the building, waiting for someone to connect it.