Understaffing: The Signs, the True Costs, and the Fixes
Understaffing rarely announces itself. It arrives as overtime that became normal, breaks that quietly stopped happening, and a roster that only works when nobody is sick — which is to say, a roster that doesn't work. Naming it early is cheaper than every alternative.
The signals, in the order they appear
Overtime above ~5% of hours, persistently — the single clearest marker that headcount, not scheduling, is the problem. Unfilled open shifts recurring on the same slots. Breaks and training skipped to hold coverage. Swap requests fleeing specific shifts — your team is telling you which block is broken. Sickness rising on the heaviest lines (fatigue converts to absence with remarkable reliability — see the fatigue mechanics). Then the lagging pair every operator knows: service slipping, and resignations citing 'the roster'.
What it actually costs
The visible line is overtime at 1.5×. The larger, less visible lines: error and incident costs from fatigue; churn (replacing a trained shift worker routinely costs months of salary); the recruiting drag of a team known to be ground down; and the managerial hours consumed daily by coverage Tetris. Understaffing is a loan — the interest is paid in people.
The fixes, fastest first
1. Repair the roster you have: re-run the coverage math — sometimes the headcount exists but the pattern wastes it (cover mismatched to demand, no relief layer, seniors clustered on one crew). Staggering and power shifts fix shape problems cheaply. 2. Buy flexibility honestly: a voluntary extra-hours list at premium rates, a casual/bank pool, on-call for surprises — all priced, consensual and visible, none of them mandatory-overtime-by-stealth. 3. Resize: if the math says four crews and you have three, the options are hire or shrink the covered hours. Operations that choose neither choose attrition — they just choose it slowly.
Build this schedule in Tommy
Set the rotation once and Tommy fills the weeks ahead — shift swaps, leave and coverage gaps handled in one place, with your team always seeing the latest version.



