WFM Scheduler

WFM Scheduler Workforce Management

Demand forecasting, Erlang staffing, shift rosters and a metrics report, for contact centre planners and operations leads.

“We are fully staffed and still missing SLA.” SLA is your service level agreement — answering a set share of contacts inside a set time. A day is not flat, so every interval is staffed on its own arrivals.
“Can you take five heads out of the budget?” Handle time, shrinkage and the answer-time promise are each measured in FTE (full-time equivalents) by re-running the plan. When the number cannot move, it says so and names why.
“What will we need next December?” Twelve months ahead from your own history, with trend, seasonality, working days and holidays separated out, and a backtest so you know the error.

Free. Your figures never leave your browser — no signup, nothing you enter is uploaded. The chat assistant is the one part that talks to a server, and only what you type into it is sent.

Create 12 months Volume Forecast

Showing 36 months of sample history so you can see how it works. Paste your own over it.

Calendar

February has 20 working days against December's 23. That swing is calendar, not demand, so it is divided out of the history before any seasonality is measured.
Working week
Normalise history

Trend, cycle, outliers

Damping below 1.00 flattens the trend as the horizon extends, which beats a straight line run twelve months out. The cycle reverts towards normal rather than being projected flat forever.
Cyclical
Outlier months
Confidence band

Adjustments

Anything the history cannot know about. YYYY-MM, +12%, reason. Holidays here mean behaviour that survives the working-day count, a Christmas lull or a New Year surge, not the lost days themselves.

Budget headcount

Used only for the Budget FTE column. It ignores the intraday peak, so it reads lower than the Staffing tab on purpose.

Weekly plan

Showing 8 weeks of sample data so you can see how it works. Paste your own history over it.

The volumes here come from the Volume Forecast tab. This history is used only to measure the day of week shape, which decides where inside each month the volume falls.

Week shape

Weeks are built from days, never by cutting months, because a week that straddles a month boundary has to carry each month's own volume.
Week starts on
Weeks to show

Interval staffing

Day of week to staff

Contact handling

Applies to both a pasted day and the single interval below it.
Interval length

Hours of operation

How long you are open decides where the volume lands, not how much of it there is. The same Saturday volume squeezed into six hours instead of twelve roughly doubles the peak.
Days open shared setting
Operating hours

Targets and constraints

Three separate constraints. The panel names which one is actually driving your headcount, because fixing the wrong one costs money and changes nothing.

Shift roster

Requirement

Agents needed per interval, comma separated, first value = opening time. The Staffing tab fills this in for you with its Send to Roster button.

Shift pattern

Coverage driven, not an optimiser: shifts are added until every interval is covered, and any interval it cannot cover is listed rather than hidden.
Interval length

Breaks

An agent on lunch is not on the phone, so breaks are placed where there is spare coverage and any interval they push short is listed rather than hidden.

Days off

Days off are placed where the work is not. Spreading them evenly across the week understaffs Monday and wastes people on Sunday.

Service versus cost scenarios

Pricing model

Whether you are spending this money or billing it changes which service target is the right one. In-house you are minimising cost. As a BPO you are maximising margin, and on some contracts those two point in opposite directions.
You are

Client contract

The basis matters more than the rate: it decides whether putting another agent on the floor earns you anything or just costs you.
Billing basis

Cost basis

Same volume, AHT and constraints as the Staffing tab. Shows what each service target actually costs in people, and which constraint is binding at each one. The 12,000 is a placeholder, not a benchmark — fully loaded cost per agent varies enormously by country and contract, so put your own number in before quoting any of this.

Metrics report

Volumes

What actually happened over the period you are reporting on.

Hours

Occupancy is handle time over hours logged in, not over scheduled hours. Dividing by scheduled understates it by roughly the shrinkage rate.

Every WFM tool rests on a model. These are the ones behind these numbers, so you can judge where they hold and where they do not.

What is assumedWhy it matters
Service level assumes nobody abandonsAbandonment itself is modelled properly (Erlang A, an M/M/n+M queue), and it is one of the three constraints that can drive headcount. But the service level figure is still Erlang C, which assumes callers wait forever. That makes service level mildly conservative, which is the safe direction. The Erlang A service-level formula was written and deliberately not shipped, because it counts an abandoned caller as a success.
Monthly forecast: the pattern holdsThe 12 month forecast assumes next year behaves like the last two or three: same seasonal shape, same direction of travel. It cannot know about a contract won, a product recalled or a competitor collapsing. That is what the holiday and external adjustment boxes are for, and using them is not cheating, it is the job.
Monthly forecast: two methods, not oneWith 24 months or more the tool does full classical decomposition: measured trend, seasonal indices, business cycle and an out-of-sample backtest. With 12 to 23 months it switches to seasonal naive, repeating the same calendar month a year earlier with a working-day correction and a growth rate you supply; in that mode no seasonality and no trend are estimated, because under two years a seasonal peak and a year of growth are the same wiggle and nothing can separate them. Below 12 months no monthly method applies. The panel always states which method produced the numbers you are looking at.
At exactly 24 months, every index rests on one observationFull decomposition becomes possible at 24 months, but each calendar month has a single ratio behind it, so no outlier can be detected and one freak month sets that month's index outright. Three years is materially better, and the tool shows how many observations each index rests on.
Trend dampingA straight line extrapolated twelve months out is the classic way to forecast a business into a number it never reaches. Damping below 1.00 flattens the trend as the horizon extends, which is what the forecasting literature consistently finds beats an undamped line. Set it to 1.00 if you want the pure straight line.
Poisson arrivalsContacts arrive randomly and independently. Marketing bursts, outage spikes and scheduled campaigns break this, and those intervals will be understaffed by any Erlang model.
Exponential handle timesThe maths assumes handle time varies exponentially around the AHT. Very consistent handle times make it slightly pessimistic; very variable ones make it optimistic.
Steady state inside the intervalEach interval is solved on its own, with no queue carried in or out. Short intervals with heavy overflow between them will read better here than in reality.
One skill, one queueNo multi-skill routing or overflow groups. Pooled multi-skill operations need fewer agents than the sum of separate queues.
Occupancy uses handled contactsOccupancy is handle time over agent time, and abandoned callers are excluded because they never reach an agent. The occupancy ceiling that drives headcount uses the same basis. Measuring it on contacts offered instead reads high by roughly the abandonment rate.
Occupancy uses logged-in timeHandle time divided by time actually logged in, not by scheduled hours. Judging occupancy against scheduled hours understates it by roughly the shrinkage rate.
Service level is measured on contacts offeredAnswered within target divided by offered. Some clients contract it on contacts answered, which produces a flattering number. Check which basis your contract uses.

Erlang C is the industry standard for staffing a single queue and is what most WFM platforms use. It is a model, not a measurement. Sense-check the output against what your operation actually did.

Voice and chat in one plan

Chat is not just cheaper voice. An agent runs several chats at once, so each one consumes a fraction of an agent rather than a whole one — and if the two channels share a pool rather than sitting in separate teams, the whole operation needs fewer people. This works out both, and the gap between them is what cross-training is worth.

Channel mix

Voice comes from the Staffing tab, so there is one set of voice inputs in this app rather than two that can drift apart.
The centre handles

Chat

Concurrency is the number of chats one agent handles at the same time. It is the single most powerful input on this page, and the easiest one to be optimistic about.

What would change the headcount

The Staffing tab tells you how many people this day needs. This asks the next question: what could change that number, and what is each lever measured to be worth? Every figure is produced by re-running the staffing engine over the same day with one change applied — nothing here is a rule of thumb. Where the number cannot practically be improved, it says so and names the reason.

WFM Scheduler by CMK Sons Labs. Erlang C staffing with an occupancy ceiling and Erlang A abandonment; a 12 month volume forecast by classical decomposition, and a daily forecast by trend plus day-of-week seasonality, both with MAPE shown so you can judge the fit. Every figure is computed on your own device and nothing is sent to a server. Sense-check the output before it reaches a client, the way you would check anyone's numbers.
More free tools at cmksons-aicompany.com · Ask Muse to explain any of these numbers.