Workforce management

WFM is the first engine.

Every other operating promise sits on top of the forecast. If the staffing model is built around a number the operation wishes were true, the schedule lies, coaching disappears, supervisors absorb the gap, agents pay with their own recovery time, and the dashboard calls the result attrition.

Not the scheduling department.

WFM is not the scheduling department. It is Strategic Inventory Management. The inventory is human attention.

The inventory framing is not decoration. It is what lets coaching hours, training, and exception time be argued in the same sentence as service level, instead of being the first things surrendered when the day gets tight.

Intraday operator sheet: capacity, need, and the origin of every varianceA dense table with one row per hour. Each row carries a horizontal ribbon splitting that interval's scheduled capacity into nine activity codes grouped in four color families, with tick marks showing the headcount the forecast said the interval needed and the headcount it actually needed. To the right, tabular columns give capacity, agents on the phones, both need figures, the variance, and that variance split exactly into a forecast gap, a planning gap and an execution gap, followed by an adherence bullet against the ninety percent the schedule was sized at and the interval's service level. Intervals where the phones fell short of actual need are marked with a bar in the left gutter.On the phones302.7 agent-hrs · 69% of capacityAnswering contacts302.7Scheduled off-phone55.0 agent-hrs · 13% of capacityBreaks30.7Lunch14.9Team meetings9.4Funded development32.0 agent-hrs · 7% of capacityTraining7.7Coaching13.5One-to-ones10.8Unplanned49.3 agent-hrs · 11% of capacityAbsence13.2Adherence loss36.1CAPACITY, ONE INTERVAL GRAINAGENTSORIGIN OF THE VARIANCEEXECUTION · OUTCOMEIntervalWhere that capacity went →0204060Sched.OnphonesNeedforecastNeedactualVarianceagentsForecastgapPlanninggapExecutiongapAdherenceaxis 78–92%Servicelevel08:002316.61616+0.6·0.6·90.084%09:003426.62626+0.6·0.6·90.084%10:005536.13636+0.1·0.1·90.085%11:004833.63333+0.6·0.7−0.189.885%12:003826.62626+0.6·0.7−0.189.680%13:004021.92327−5.1−4.0·−1.185.60%14:004025.92629−3.1−3.00.7−0.887.432%15:004933.43333+0.4·0.5−0.189.683%16:003929.12929+0.1·0.1·90.082%17:003123.22323+0.2·0.2·90.086%18:002516.41616+0.4·0.4·90.084%19:001713.31313+0.3·0.3·90.087%DAY439 scheduled agent-hours · 69% of it on the phones439302.7300307−4.3−7.04.9−2.289.371%need, actualneed, forecastphones short of needforecast is the originplanning is the originexecution is the originCapacity, activity codes, need and adherence all ETL'd to one interval grain. Headcount is the common denominator throughout.Forecast + planning + execution partition the variance exactly on every row. They do not compete for it.2 of 12 intervals missed · day 71% service level against an 80% targetSchedules were sized at 90% adherence. The tick on each bullet is that plan. The bullet axis is truncated to 78–92%. Every other scale on this sheet starts at zero.
This reads the way an intraday report actually reaches an ops manager: one row per interval, the whole scheduled headcount split into its nine activity codes, and the numbers beside the picture rather than instead of it. The three gap columns do not compete to explain the miss. They partition it exactly, and sum to the variance on every row. Read the day: 13:00 and 14:00 are the only intervals that fell short, and both fell short because demand arrived above forecast, 4.0 and 3.0 agents of it. Execution shaved a fraction off several other rows without pushing any of them under, and planning never once cost an agent. Development is funded capacity, and it never appears as an origin, because it cannot be one. The day itself is simulated: model output, not a real operation's data.

When the day misses, name which gap it was.

The core of the work is forecast, schedule, and execution analysis: taking a missed day apart and attributing the miss to where it was actually created. Every miss has an origin, and the origin decides the fix: treat an execution problem with a bigger forecast and the operation buys headcount while keeping the miss. The vocabulary the attribution runs on (adherence, shrinkage, service level) is laid out in the groundwork.

  • Forecasting gap

    The demand was not what the plan was told to expect: volume, mix, or handle time arrived different. The miss was born before the first schedule was cut, and no amount of day-of heroics was going to close it.

  • Planning gap

    The forecast was right and the schedule never covered it. Coverage was traded away in the staffing plan, which means the miss was designed in, and it will repeat until the plan changes.

  • Execution gap

    The forecast and the plan were both right, and the day drifted from them: adherence (the share of scheduled time worked the way the schedule laid it out), unplanned shrinkage (the scheduled hours lost on the day to absence, lateness, and sick time the plan did not budget), and work handled off-plan. The only one of the three the floor can actually fix on the floor.

Where a missed day was actually lostThe day required 307 agent-hours and 290.7 were on the floor, a shortfall of 16.3 hours or 5.3 percent, which produced a service level of 64 percent against an 80 percent target. That shortfall breaks into a forecasting gap of 7.0 hours and a planning gap of 3.9 hours, both created before the day began, and an adherence gap of 3.3 hours and an absence gap of 2.1 hours, both created during it.The dayRequired307.0 ahOn the floor290.7 ahshort 16.3 ah, 5.3% of the dayService level64%against an 80% target. A five percent shortfall does not cost five percentof the service level. Queues do not fail proportionally.Where those 16.3 hours wentForecasting gap7.0Planning gap3.9Adherence gap3.3Absence gap2.1before the day10.9 ahduring the day5.4 ahThe four sum exactly to the shortfall, so nothing is hidden and nothing is counted twice.
One missed day, taken apart. The three cards above become four bars here because the execution gap is read at its finer grain: adherence and absence are that one gap split here into its two measured parts. Every number comes from the same staffing model the simulator runs, not from a real operation, and this is a different simulated day from the operator sheet above, the same demand met with a different set of staffing decisions. The point of the top panel is the disproportion: the floor was five percent short and service level landed sixteen points under target. The point of the bottom panel is that those hours have an address. Two thirds of them were lost before anyone took a call, which is not something the floor could have fixed on the day, and treating it as an execution problem would have bought coaching nobody needed.

The same analysis reads schedule churn: how many times the schedule was updated between the day it was posted and the day it was worked. A schedule that had to be rebuilt in flight is pointing at which gap keeps recurring, and that churn deserves to be a number the operation watches, not an anecdote about a rough week.

What the diagnostic keeps finding.

Run the gap analysis for long enough and the same structural findings recur. None of them is a number on a dashboard, and all of them decide whether the numbers can be trusted, or acted on.

  • Span of Influence

    WFM owns the math and Operations owns the people, and they share one target, so the disagreement between them is structural rather than personal. Span of Influence is the contract that settles it before the bad Monday: who owns what, who feeds whom, and how a dispute gets resolved. The name is deliberate: classical management calls this span of control, but coaching, trust, schedule discipline, and floor intelligence all travel in both directions. The same number doubles as a coaching-capacity read: past a certain leader-to-agent ratio, protecting real development time gets progressively harder, and where that line sits is something an operation calibrates rather than inherits.

  • The Lever Ledger

    Attribution tells you which gap caused the miss. The ledger is what the operation did next, written down. Each entry carries the condition and the evidence behind it, the ask and the response, the lever pulled, who held the authority to pull it, the effect expected and over what horizon, the effect actually observed, and the stop condition. Six months of that is the first real organizational memory the work produces, and the only document that reliably separates a working lever from a beloved habit.

  • Development time as protected capacity

    Development hours belong in the staffing model as budgeted demand, not as whatever survives the day. And protection cuts both ways: once the time is funded, operations is accountable for how it is spent (coaching that actually happened, development that moved someone), not protected time quietly converted back into coverage.

  • Policy, process, and platform alignment

    A standing friction point: the policy says one thing, the process assumes another, and the technology enforces a third. The floor inherits the difference. The data has the same problem. Without the right ETL work, forecast, schedule, and actuals arrive at different grains, and the gap analysis cannot be run honestly until they are represented in the same one.

The ledger is easier to show than to describe. The levers below were declared before the day broke (who may pull what, under which named condition) because the alternative is deciding the escalation path during the argument it exists to prevent. What follows is one simulated day’s entries.

Condition: intraday volume sustained above the locally declared emergency point, second interval running. Evidence: interval volume against forecast, and a wait that had stopped recovering between intervals. Stop condition, set before the first pull: if the wait is not recovering within two intervals of the surge, escalate to the declared contact controls.

Three pulls, recorded. Expected effect is the hypothesis. Actual effect is the day’s answer.
Lever pulledAuthorityExpected effectActual effect
The ask: a flex request. Agents volunteer to move breaks and lunchesTeam leaderAbout six agent-hours back, inside the afternoonSeven and a half volunteered. Asks that stay voluntary keep getting answered
The pause: two team huddles deferred to tomorrow. One-to-ones, calibration, and training untouched: that protection carries its own carve-out, a named emergency, director-authorized, logged with a recovery date. And this day never met itOperations managerFour agent-hours, immediateFour agent-hours, as expected
The surge. Cross-coverage first: trained agents from an adjacent queue, no premium, before any overtimeWFM with the adjacent queue’s leaderTen agent-hours across the peakEight. Two borrowed agents returned early when their own queue tightened
The wait recovered in the second interval after the surge, so the stop condition was never met: overtime and the contact controls stood declared and unpulled, which is the ladder working. The last resort stayed a last resort. Every number above is simulated. The entry demonstrates the record, not any operation’s day. The expected column is a hypothesis and the actual column is the day’s answer, with the stop condition set before the pull.

The forecast is the contract with the floor.

That sentence is the argument compressed into one line. The longer version (why the disposable-agent model is over, and what the human layer inherits once AI takes the clean work first) is the operating argument this site is built on.