← bensunter.com

Capacity planning

Staffing Headroom

Every staffing plan is built on a forecast, and every forecast is wrong. This works out how many people the forecast implies, then how many you should actually hire once you account for the fact that being short and being over do not cost the same. Nothing you type leaves your browser.

Start from a scenarioLoads typical numbers for that kind of work. Change anything after.

Inputs

What the month looks like

These two move the answer most. Each choice sets the figure shown in brackets; pick "I know the number" to type your own.

Capacity assumptions
%
%
Cost
Hiring reality
%

Forecast says
Hire to
The gap is worth

What being wrong costs

  • Cost of being short
  • Cost of being over

Expected cost per month of missing, at every headcount you could pick. Not the payroll, which you owe either way. Just the waste. The curve is lopsided because the two mistakes are not priced the same, and its low point is almost never where the forecast lands.

What moves this answer most

If each input were 10% off, this is how far the recommendation would move. Spend your evidence on the top of the list. The rest you can estimate.

    Holding the number

    How it works

    Effective hours per person are paid hours less shrinkage, times occupancy. Divide the month's work by that and you get the headcount the forecast implies. Your spreadsheet already does that part.

    The rest is the newsvendor problem, which is a hundred years old and still the right tool. If being short costs r times what being over costs, the cost-minimizing plan covers demand r / (r + 1) of the time. At 3× that is the 75th percentile, not the 50th. Treating the forecast as the target quietly chooses a coin flip, and prices the two sides of it as though they matched.

    This does not assume demand is random. It assumes your forecast is good and misses anyway, which is a different claim. Whatever you built the forecast from, history, seasonality, market signal, third-party data, some error is left over, and that leftover is what the error field describes. Build a better forecast and it shrinks, and so does the buffer this recommends. Set it to zero and the model tells you to staff to the forecast, which is the right answer for a forecast that never misses.

    That residual is treated as normal around the forecast, and expected shortfall and overage come from the standard normal loss function, so the curve is exact rather than simulated.

    Where it will mislead you: forecast error in operations is often skewed rather than symmetric, because surges run further above plan than lulls run below it, and a normal residual will understate the upside tail. It is a single month in steady state, so a sharp ramp or a seasonal peak needs its own run. It assumes your people are interchangeable, which they stop being once skills specialize. And the short-versus-over ratio is a judgment call carrying most of the weight, which is why it sits at the top of the sensitivity list rather than buried down here.

    Take it. One file, no build step, no dependencies, no analytics, nothing sent anywhere. Save the page and it works offline. Change the numbers, copy the link, and the model travels with it.