Wiki:Packs/Workforce Planning as a Control System
| Pack | |
|---|---|
| ID | CP-WFM-027
|
| Name | Workforce Planning as a Control System |
| Slug | workforce-planning-as-a-control-system
|
| Type | Pack |
| Domain | WFM |
| Status | Active |
| Version | 1.0 |
| Contents | 1 instruction block + 4 reference files + briefing prompt |
| Builds on | Workforce Planning as a Control System Feedback Loops in Workforce Planning The Annual Plan as an Open-Loop Controller Variance Routing by Horizon The Supply Line in Capacity Planning Planning Nervousness and Frozen Zones Assumption Ledgers and the Continuous Annual Plan Continuous Planning Cycle (generic process) The Data Layer Beneath Continuous Planning |
A pack is a deployable set for a Claude project: one instruction block pasted into the project's custom instructions, plus reference files saved as Markdown and uploaded as project knowledge. See Wiki:Packs.
This pack supports a workforce leader who wants to read their planning process as a set of feedback loops rather than as a sequence of documents, and to act on what the reading shows. It does five jobs: it diagnoses which loops are open in the operation, horizon by horizon; it routes a week's variance to the loop whose delay matches each component's persistence; it computes the capacity gap net of the supply line and shows what the operation's current gap formula leaves out; it drafts an assumption ledger so that the annual plan can be recomputed rather than re-signed; and it localizes the generic process card GP-107 so that the cycle can be run and audited.
The problem it addresses
A conventional planning cascade builds an annual plan once, decomposes it downward into monthly, weekly and daily targets, and explains variance upward at the end of each period. Read as a controller, it has one closed loop and several open ones. Only the interval loop changes a decision inside its own cycle. The monthly cycle reconciles to the annual plan and computes its gap as plan minus people on the floor, so hiring continues while earlier hires are still in the pipeline and then freezes when they land. The annual plan carries a forecast, a target and a commitment in one number, so every re-forecast reads as a challenge to the commitment and the forecast is bent toward the budget. Variance that persists for weeks is carried by overtime and occupancy because no slower loop is armed to take it, and the slow loops never learn.
The pack treats planning as five loops, five couplings and three ledgers. Each horizon becomes a balancing loop with its own sampling rate, lever, delay and frozen zone. The couplings carry state between horizons in both directions. The forecast, the target and the commitment are kept as separate ledgers, and the annual plan survives as the commitment ledger, recomputed continuously from named assumptions.
What this pack does not restate. Forecasting method is covered at Three-Step Forecast Build and the versioning it needs at Forecast Vintages; the levers the structural loop chooses from are at Supply Elasticity Lever Inventory; the monthly and weekly cycles the card connects are GP-102 and GP-103; the definitions register the loops read from is at Workforce Data Definitions Framework. The pack's files are derived from the nine articles in the infobox and summarize the rest in a line where a block needs them.
When to use it
- Diagnosing why an operation that forecasts well still oscillates between hiring and freezing, or runs hot on overtime for a quarter without a capacity decision
- Replacing a forecast-versus-actual review that ends in an explanation with one that ends in an assignment: this component, to this loop, by this rule
- Auditing the gap formula a capacity cycle uses, and the supply-line report behind it
- Turning an annual plan that is defended or abandoned whole into a ledger of assumptions with tolerance bands and owners
- Localizing
GP-107, or running its first three stages read-only beside an existing cascade for a quarter
Not needed for an operation with a short pipeline, flat demand and a disciplined reforecast, which can run an annual plan without visible pathology; nor for the interval loop on its own, which is already closed in most operations.
How to deploy
- Create a project, named for the operation rather than the method
- Copy Block 1 into the project's custom instructions
- Save Blocks 2–5 under the filenames given in their headings and upload as project knowledge, together with the operation's planning calendar, its capacity model or gap worksheet, its recruiting or supply-line report, a sample forecast-versus-actual review, and the annual plan's assumption list if one exists
- Start a conversation with the briefing prompt in Block 6
Block 1 — Project instructions
This project reads a service operation's workforce planning process as a
control system: five loops, one per horizon, each with its own sampling
rate, lever, delay and frozen zone, coupled so that state moves between
them in both directions. The work is to find which loops are open in this
operation, route each week's variance to the loop whose delay matches its
persistence, compute the capacity gap net of the supply line, hold the
annual plan as a ledger of named assumptions, and localize the generic
process card GP-107 so the operation can run the cycle.
Governing idea: a plan is not a number. It is a set of stocks and the
policies that move them, and the annual plan and the intraday plan are the
same system observed at different sampling rates. The question is never
"how do we reconcile to the annual plan?" but "which loop owns this
variance, and is it closed?"
WHICH FILE TO OPEN
The five loops, five couplings and three ledgers;
the design rules; the test for an open loop -> loop-architecture.md
Naming a loop by polarity, delay and signature;
the pathology loops and their published pedigree;
what to pull from the operation's own data -> loop-catalogue-and-signatures.md
Routing a week's variance; the hiring rule that
counts the supply line; the assumption ledger;
the persistence and frozen-zone settings -> routing-supply-line-and-ledger.md
GP-107's six stages, variants, L3 register and
automation candidates; what each loop reads and
writes; the two new data objects -> process-card-and-data-contract.md
Open one. Answer from here if none is needed.
DISCIPLINES
- Index, not quantities. Average week = 100; any headcount is a marked illustration on a stated, assumed base.
- The companion simulation shows structure, not effect sizes. Its figures are [estimated], from one model with round parameters; never quote them as predictions of what this operation will save or see.
- Every local value (persistence window, frozen zone, adjustment time, tolerance band, authority band, cadences, pipeline length) is SET LOCALLY. Where the operation has not set one, say so and show the simulation's value as a worked default, marked as such.
- A loop is closed only if the measurement changes the decision inside the same cycle. A report that exists but changes nothing until the next planning event is an open loop; say so plainly.
- The gap is plan minus floor minus landing supply line. Never accept "plan minus floor" as a gap without naming it as a supply-line weight of zero.
- Nothing persistent lives in the interval loop. A component that has held its sign for the window has an owner upstream; name the owner.
- Three ledgers, never one number: forecast, target, commitment. Never bend a forecast toward a budget, and name it when the operation's process does.
- Commit only the first step; keep a frozen zone shorter than the delay it protects; charge a stated cost to break it. Re-planning without these is nervousness, not continuous planning.
- Controller names B1-B5 and coupling names L1-L5 are this wiki's; pathology loop names inside cited papers are quoted as published. Never mix the two numberings.
- Never name a vendor, platform, employer, client or industry. Platforms are named at L3 by the deploying function, never in this project's outputs.
OUTPUT
Lead with the diagnosis or the routing, then the arithmetic. State which
loop owns each finding. Mark every local value SET LOCALLY and every
simulation-derived figure [estimated]. Where the data cannot settle a
question, say what would settle it and which data object is missing.
Source: Wiki:Packs/Workforce Planning as a Control System (CP-WFM-027) v1.0
Block 2 — loop-architecture.md
# The loop architecture: five loops, five couplings, three ledgers
*Derived from the wiki articles "Workforce Planning as a Control System"
and "The Annual Plan as an Open-Loop Controller". The five loops are a
design, not a description of any organization. Figures marked [estimated]
come from one simulation with round, illustrative parameters and show
structure, not effect sizes.*
## The reading
A controller measures a quantity, compares it with a goal, and acts through
a lever after a delay. The loop is closed only if the measurement changes
the decision inside the same cycle rather than at the next planning event.
Read that way, the cascade has one closed loop: the interval loop, which
absorbs variance that belongs to slower loops, so they never learn. The
annual plan samples once a year and defends its number against a step
change. The monthly plan reconciles to the annual plan, bends the forecast
toward the budget, and leaves the pipeline out of the gap, so hiring
overshoots and freezes in turn. The weekly plan is nervous when re-planned,
rigid when frozen, with no route upward. Variance has no owner, and the
annual plan is a target treated as a forecast.
## The five controller loops
| Loop | Controls | Lever | Dominant delay | Samples | Frozen zone |
|---|---|---|---|---|---|
| B1 Interval correction | the queue or occupancy gap now | real-time actions, skill flex, voluntary overtime and time-off offers | minutes | every 15 to 30 minutes | none; this is the committed step |
| B2 Short-term reforecast | the hours gap in the next one to two weeks | the hours band, overtime and time off, schedule trades, cross-skill routing | days | daily | the published week |
| B3 Pipeline-aware capacity | the rolling planning-window surplus or deficit by pool, net of the supply line | moves, requisitions, the partner's band, class starts | the hiring pipeline, eight to sixteen weeks in many operations | weekly roll, monthly decision | the plan of record |
| B4 Structural elasticity | the cost of variance; the share of the swing carried by the cheap levers | contract bands, cross-trained groups, working-time averaging, location and automation mix | quarters | quarterly | contract notice |
| B5 Finance envelope | spend against a rolling envelope | the envelope itself, authority bands | a month | monthly | the fiscal quarter |
Thirteen weeks is an illustrative planning window for B3; the operation's
own window is SET LOCALLY.
## The five couplings
Without them the loops are five separate controllers that fight; with them
they are one system. Two carry state upward, one across, two downward.
| Coupling | Direction | Mechanism | What it needs |
|---|---|---|---|
| L1 Vintage learning | up | forecast error, measured by the horizon at which the forecast was made, retunes the model or assumption that owns that horizon | a version on every forecast; coherent forecasts across horizons |
| L2 Assumption ledger | up | the annual plan held as named assumptions (volume, mix, handle time, shrinkage, attrition, ramp, productivity), each a stock with a tolerance band; the plan is recomputed from the ledger, not re-signed | a definitions register the ledger reads from |
| L3 Variance routing | across | each component of a week's gap is assigned to the slowest loop whose delay matches its persistence; nothing persistent is allowed to live in B1 | variance decomposed by cause |
| L4 Envelope feed-down | down | a rolling envelope and authority bands inside which B3 acts without escalation; "reconcile to the plan" becomes "stay inside the band or trigger the decision" | a commitment ledger separate from the forecast |
| L5 Anticipation | down | each slow loop carries a model of how the fast loop will respond, so its plan arrives feasible once disaggregated | the fast loop's levers and their limits known to the slow loop |
## Three ledgers, never one number
The annual plan carries a forecast (what is expected), a target (what is
wanted) and a commitment (what has been bought) in one number. A forecast
should move whenever the world moves, a target only when leadership
decides, a commitment only when something is bought or released. One
number cannot do all three, so the commitment wins and the forecast is
bent toward it. The budgeting literature reached the same diagnosis for
the financial budget and recommended severing the links.
| Ledger | Owned by | Moves when | Signed? |
|---|---|---|---|
| Forecast | the learning loops (L1) | the world moves | never |
| Target | leadership | leadership decides | yes, as a goal |
| Commitment | the finance loop (B5), as an envelope with authority bands | something is bought or released | only when a band is breached |
## Four design rules
1. **Commit only the first step.** Plan over the horizon, commit only the
first decision, measure, re-solve. The far horizon is provisional by
design (model predictive control, stated as a planning rule).
2. **Frozen zone shorter than the delay it protects.** Decisions inside it
are not reversed: for B3 a fraction of the requisition-to-seat time, for
B2 the published week, for B4 the contract notice period. The
production-scheduling studies found freezing up to half the horizon
cost little; "shorter than the delay" is this wiki's rule. SET LOCALLY.
3. **A change cost.** Every change to the plan of record is charged at a
stated rate, so the plan's own stability is a term in the objective.
SET LOCALLY.
4. **The supply line in every gap.** The gap B3 closes is plan minus
people on the floor minus people on the way, weighted for the attrition
they will suffer before arriving. A rule that ignores what is already
on order oscillates.
Continuous planning does not mean updating everything all the time. It
means every loop commits its first step, holds its frozen zone, and pays
to break it.
## The test for an open loop
| Question, asked at each horizon | Closed if | Open if |
|---|---|---|
| Does this horizon's measurement change a decision inside its own cycle? | yes, by rule | only at the next planning event |
| Does a requisition opened last month reduce the gap computed this month? | yes | the gap is plan minus floor |
| When the forecast disagrees with the plan, which one moves? | the plan, or a decision opens | the forecast |
In most operations B1 is closed by real-time management, B2 is partly
closed (the forecast is refreshed but the schedule rarely re-cut), and B3,
B4 and B5 are open.
## What the reading showed in one application [estimated]
One weekly stock-and-flow model, run under the cascade and under the
closed loop on identical synthetic demand with the same pipeline,
absorbers, cost function and change charge. Indices, never predictions.
- Flat world, one step: the two policies tie on cost, because overtime
bridges a shortfall cheaply for a long time; the cascade then rings at a
period near three pipelines while the closed loop settles.
- Seasonality, slow trend and disruption spikes: the closed loop costs
about three percent less per contact, service is a statistical tie, and
hiring churn is about a quarter lower. A slow decline alone widens the
gap to about nine percent.
- Pipeline delay removed: the policies converge to within about two
percent; roughly half the seasonal gap is attributable to delay, the
rest to forecast anchoring and churn smoothing.
- No single switch carries the result. Counting the supply line reduces
ringing modestly; forecasting weekly on actuals is often the largest
single gain; slowing the adjustment and routing only persisted variance
removes the ringing and bounds the churn. Some switches hurt until the
ones after them are thrown.
## Prerequisites that are not planning decisions
One definition of a productive hour and one headcount, read from the same
data by every loop. A version on every forecast (L1). A decomposition of
variance by cause (L3). A commitment ledger separate from the forecast,
without which the three-ledger split is a slogan.
Block 3 — loop-catalogue-and-signatures.md
# Loop catalogue and signatures
*Derived from the wiki article "Feedback Loops in Workforce Planning". The
controller and coupling names are this wiki's. The loop names inside the
cited papers are reproduced from their published figures and keep their
own numbering; do not confuse the two. Signatures are proposals for what
to measure, not validated diagnostics.*
## Vocabulary
A balancing loop (B) moves a stock toward a goal and is the structure of
every controller. A reinforcing loop (R) amplifies whatever direction it is
already moving in and is the structure of every spiral. A loop's dominant
delay sets its natural period: a balancing loop with a long delay and an
aggressive correction oscillates at a period of several delays (two to
four by the stock-management rule of thumb; about three in the companion
simulation [estimated]), which is why the hiring pipeline is a frequent
source of the cycles an operation blames on forecasting.
## The controller loops and their open-loop signatures
| Loop | Polarity | Dominant delay | Frozen zone | Closed today? (typical) | Signature of the open loop |
|---|---|---|---|---|---|
| B1 Interval correction | B | minutes | none | yes, by real-time management | rare |
| B2 Short-term reforecast | B | days | the published week | partly | the forecast is refreshed but the schedule is not re-cut; overtime offered to a gap the roster could have absorbed |
| B3 Pipeline-aware capacity | B | the pipeline | the plan of record | no | the gap is plan minus floor; the deficit is reconciled to the annual plan |
| B4 Structural elasticity | B | quarters | contract notice | rarely | elasticity requested from a partner, not designed; billed capacity flat through a seasonal swing |
| B5 Finance envelope | B | a month | the fiscal quarter | no | the envelope is annual and fixed; a reforecast that is mostly the annual plan |
## The couplings and their absence
| Coupling | Direction | Carries | Signature when absent |
|---|---|---|---|
| L1 Vintage learning | up | forecast error by the horizon at which the forecast was made | no accuracy-by-horizon report; the forecast table overwrites itself |
| L2 Assumption ledger | up | named assumptions with tolerance bands | "we are over plan" with no statement of which assumption moved |
| L3 Variance routing | across | each gap component to the loop whose delay matches its persistence | the forecast-versus-actual review ends in an explanation |
| L4 Envelope feed-down | down | a rolling envelope and authority bands | every hire above plan is an escalation |
| L5 Anticipation | down | each slow loop's model of the fast loop's response | plans that arrive infeasible once disaggregated |
## The pathology loops
When the controller loops are left open, reinforcing loops take over. The
source column quotes loop names as the authors published them.
| Loop | Polarity | Chain | Source and published loop names | Signature in the data |
|---|---|---|---|---|
| R1 Plan defence | R | gap against the annual plan up -> explanation effort up -> decision latency up -> gap up | policy resistance (Sterman, "System dynamics modeling: tools for learning in a complex world", California Management Review 43(4), 2001) | decision latency rising with the size of the gap; re-forecasts that move toward the budget |
| R2 Understaffing spiral | R | gap up -> occupancy and overtime up -> attrition up -> gap up | the field's own signature loop | attrition rising a quarter after sustained overtime |
| R3 Quality erosion | R | pressure up -> handle time squeezed -> repeat contacts and rework up -> workload up; the quality aspiration follows the squeezed handle time down | Oliva and Sterman, "Cutting corners and working overtime: quality erosion in the service industry", Management Science 47(7), 2001. Their loops, as published in their Figure 4: "Goal Erosion" (R1), "Death Spiral" (R2), with "Corner Cutting" (B1) as the balancing relief that feeds them. Calibrated on a back-office service centre | handle time falling while repeat rate rises; the handle-time standard revised downward "to reflect performance" |
| R4 Capability trap | R | firefighting up -> improvement time down -> planning capability down -> firefighting up | Repenning and Sterman, "Nobody ever gets credit for fixing problems that never happened", California Management Review 43(4), 2001. Their loops, as published in their Figures 4 and 5: "Shortcuts" (B3) and "Reinvestment" (R1), alongside "Work Harder" (B1) and "Work Smarter" (B2) | the share of planner time spent on exceptions rising; improvement projects that never start |
| R5 Forecast credibility | R | forecast bent toward the budget -> misses up -> trust down -> manual overrides up -> misses up | the budgeting critique (Jensen, "Corporate budgeting is broken", Harvard Business Review 79(10), 2001) and the plan-to-budget bias described in sales and operations planning practice (Ling and Goddard, Orchestrating Success, 1988) | the share of forecast values overridden rising with the age of the forecast |
| R6 Hiring oscillation | B3 with its delay: a balancing loop that oscillates, listed among the pathologies though not reinforcing | gap -> hire -> the pipeline lands late -> surplus -> freeze -> attrition drains the surplus -> gap | the beer game: decision-makers ignore the supply line and overshoot (Sterman, "Modeling managerial behavior: misperceptions of feedback in a dynamic decision making experiment", Management Science 35(3), 1989) | headcount deviation with a period of several pipelines once the calendar is removed (about three in the simulation [estimated]); requisitions opened and cancelled in alternate quarters |
| R7 Cohort rollover | a delayed echo, reinforcing only where the next wave is sized to the last wave's attrition | wave hiring -> wave ramp -> wave plateau -> wave attrition -> wave hiring, larger | the laddered-tenure argument on this wiki | attrition concentrated at one tenure band; classes that are all the same size |
Service supply chains have their own amplifier: with no inventory to
buffer, backlog can only be managed by changing capacity, and
capacity-adjustment delays amplify variance upstream; uniform targets
across stages make it worse (Anderson, Morrice and Lundeen, System
Dynamics Review 21(3), 2005). A cascade that pushes one target through
every tier is a uniform-target chain.
## What to pull from the operation's own data
| Series | Tests for | Read it as |
|---|---|---|
| Requisitions opened and cancelled, by month, two years | R6 | alternation by quarter; cancellations inside a freeze are the supply line ignored twice |
| Headcount by week with the seasonal calendar removed | R6 | a dominant period of several pipelines |
| Overtime hours by week against hiring-decision dates | R6, R2 | overtime peaking a quarter after a decision |
| Attrition by tenure band and by month | R2, R7 | a rise a quarter after sustained overtime; concentration at one band |
| Handle time against repeat-contact rate, with the dates the standard was revised | R3 | handle time falling while repeats rise; a standard revised toward performance |
| Share of forecast values overridden, by forecast age | R5 | overrides rising with age |
| Planner time on exceptions versus improvement | R4 | the exceptions share rising |
| Decision latency against gap size | R1 | latency rising with the gap |
| The last six forecast-versus-actual reviews | L3 | explanations or assignments |
Why the open loops are rarely blamed [estimated]: in the companion
simulation the overtime band and the real-time absorb carry about
six-tenths of the weekly gap-hours under either policy, so a sustained
shortfall is survivable for many weeks at a cost that shows up as overtime
and repeat contacts rather than missed service. The fast loops hide the
slow loops' failure.
## Limitations
No organization has been observed running all five controller loops; the
couplings are the least tested part. The signatures are proposals. No
peer-reviewed system-dynamics model calibrated on contact-centre staffing
was found; the nearest is the service-centre calibration cited for R3.
Block 4 — routing-supply-line-and-ledger.md
# Variance routing, the supply line and the assumption ledger
*Derived from the wiki articles "Variance Routing by Horizon", "The Supply
Line in Capacity Planning", "Planning Nervousness and Frozen Zones" and
"Assumption Ledgers and the Continuous Annual Plan". Indices throughout,
average week = 100. Worked figures are [estimated], from one application
of the method. Every threshold and setting is SET LOCALLY.*
## Part 1: routing a week's variance (coupling L3)
Four steps, at the cadence of the short-term loop.
1. **Decompose the week's gap by cause**: level (contacts against
forecast), mix (work in a different pool than planned), handle time
(the same contacts taking longer), shrinkage (fewer productive hours per
paid hour than assumed), supply (fewer people than the plan of record,
from attrition, delayed starts or training loss). Arithmetic on the
capacity equation, against the forecast vintage the plan was made from.
2. **Measure each component's persistence**: consecutive weekly cycles
with the same sign. Flipped inside the window: transient. Held for the
window: persistent at the capacity scale. Held for a pipeline length:
persistent at the structural scale.
3. **Assign each component to a loop.** Transient components stay with B1
and B2. Components persisted for the window go to B3, into the gap the
hiring rule closes net of the supply line. Components persisted beyond
one pipeline go to B4, as a question about bands, cross-training and
location mix rather than headcount. Nothing persistent lives in B1.
4. **Report what each loop carried**: the share of the week's gap-hours
carried by real-time actions, the hours band, the contracted band,
deferral, handle-time compression, unmet contacts and hiring. A large
share in handle-time compression is quality erosion in progress; a
large share in the hours band for a quarter is a capacity decision not
taken.
When a persisted component moves the plan of record, move it by the
smallest excursion in the window, not the latest reading. That rule and
the persistence test are what keep B3 from being nervous.
### Worked decomposition [estimated]
The operation needs 112 and has 100.
| Component | Size | Persistence | Routed to | Why |
|---|---|---|---|---|
| Level | +7 | fifth consecutive week over forecast | B3, into the gap net of the supply line | past the window, inside one pipeline: a hiring decision |
| Mix | +2 | flipped sign last week | B2, hours band and cross-skill routing | transient |
| Handle time | +3 | third consecutive week over standard | waits one more week; then to the assumption ledger as a breach, not a hiring request | has the standard, the work or the training changed? |
| Supply | -2 | a class that started late; known one-off | B2 | transient |
Nothing goes to B4 this week; if the level component is still present at
the pipeline length, the question becomes band or hire. What routing
changes: the review ends in an assignment, not an explanation; the
capacity deficit becomes "the persisted components, net of the supply
line"; the overtime report gains a column for the variance it should not
carry; the slow loops begin to learn.
## Part 2: the supply line (loop B3's gap)
Capacity decided on but not yet arrived: requisitions open, offers
accepted, classes in training, graduates still ramping, and decisions
committed but not yet released. Three readings of "agents we have" are in
use, usually without anyone noticing which one a report takes.
| Reading | Counts | Used by |
|---|---|---|
| Agents on the floor | seated and productive, sometimes ramp-weighted | the operation; most headcount reports |
| Floor plus people on the way | the above plus trainees, accepted offers, open requisitions | the recruiting report; the hiring decision in a well-run cycle |
| Approved positions | the above plus decisions taken but not released, inside an envelope | finance, in position control |
The supply line is the difference between the first two readings,
weighted for the attrition it will suffer before landing and the
productivity it will deliver. At a replacement rate of half a percent a
week and a twelve-week pipeline the steady-state supply line is about six
percent of the floor, and during a ramp it can be a quarter [estimated].
### The decision rule
hires this period = expected losses
+ (plan of record - agents on floor) / adjustment time
- w x (supply line - desired supply line)
/ supply-line adjustment time
desired supply line = expected losses x pipeline length
The first term replaces leavers; the second closes the gap over an
adjustment time rather than at once; the third is the supply-line
correction. The weight w is the whole argument: at w = 1 the rule counts
everything on the way; at w = 0 it ignores the supply line. Subjects in
the beer-game experiments behaved as though w averaged about a third
(0.34 in secondary reports of the fitted rules). A plan that computes its
gap as "plan minus people on the floor" has set w = 0 whether or not
anyone intended to.
The same w belongs in the cancellation rule. A policy that ignores the
pipeline when it hires also ignores it when it decides it has too many,
and cancels requisitions it will need in a quarter. Net the replacement
flow out before calling anything excess, and review requisitions on the
same cadence as the hiring decision, never weekly against a monthly batch.
At w = 0 the gap is hired in months one, two and three while nothing has
arrived; the first batch lands in month four with two more behind it; the
floor overshoots, requisitions are frozen or cancelled, attrition drains
the surplus, and the cycle repeats at a period set by the pipeline (about
three times its length in the simulation [estimated]), not by the
forecast. Counting the supply line alone reduces the ringing but does not
remove it while the whole gap is still hired at once; the adjustment time
must lengthen too (about two-thirds of the pipeline in the simulation).
Counting it in practice needs one supply-line report by pool; a ramp
curve per pool, so the stock is counted in productive-equivalents, not
heads; attrition applied to the pipeline, since trainees leave faster than
tenured staff; and the gap computed net: plan minus floor minus landing
supply line.
## Part 3: the assumption ledger (coupling L2)
One row per assumption the plan depends on.
| Field | Holds | Example |
|---|---|---|
| Assumption | the named quantity, with its definition from the definitions register | handle time, written channel, hours per item |
| Planned value | the value the plan was compiled from, with the date set | as set at the last re-base |
| Current estimate | the value the learning loops hold, with its vintage | trailing planning-window measure, updated weekly |
| Tolerance band | how far the estimate may drift before a decision opens | plus or minus eight percent (illustrative); SET LOCALLY from the plan's sensitivity to the row |
| Owner | the role that answers when the band is breached | the channel's planning lead |
| Persistence | how long the estimate has been outside the band | weeks, from the routing test |
| Dependents | which plan outputs move when this row moves | headcount for the channel, the training plan, the envelope |
The plan of record is a function of the ledger: headcount by pool and
week, the training plan, the envelope and the cost are compiled from the
rows and recompiled when a planned value changes, so every number has a
lineage. The band is the assumption's frozen zone: too narrow and every
row is a decision every week; too wide and it is the annual plan again.
The current estimate is the forecast view of the row and the planned value
the commitment view; the target is a third column where leadership wants
something other than the forecast.
| Movement | Governance |
|---|---|
| Inside the band | nothing; the fast loops carry the drift, visibly |
| Across the band, past the persistence test | the owner is asked one question: is the planned value wrong, or is the operation? Planned value wrong: re-set it, the plan recompiles, the envelope moves through B5. Operation wrong: open a corrective action, the planned value stays. Record the decision against the row |
| At the re-base, annually or at a defined event | review every row, re-set planned values to current estimates where no decision has been taken, restart the lineage |
### Worked breach [estimated]
A handle-time row was planned at 100 with a band of plus or minus eight.
The current estimate has read 109, 111, 112 and 113 over four weeks;
persistence passes the window. Finding: a new case type arrived with the
quarter and takes longer by design, so the planned value is wrong. It is
re-set to 109, the smallest excursion in the window, so that a re-set
never chases the latest reading. The plan recompiles: the channel's
workload dependents move by nine percent and its headcount by somewhat
less, the training plan picks up the case type, and the envelope request
goes to B5 with the row's lineage attached. Had agents been taking longer
on the same work, the planned value would have stayed at 100 and a
coaching action opened against the row, with the excess carried by the
hours band.
## Part 4: persistence, frozen zones and change cost
A rolling plan recomputed each period can reverse decisions already in
motion; the accumulated reversal is nervousness. It is not forecast error:
a plan can be nervous on a perfect forecast. The production-planning
literature found that freezing the near horizon and charging for changes
dominated the alternatives, that freezing up to half the horizon cost
little, and that the conclusions held under demand uncertainty. The
numbers were derived for production schedules and do not carry; the
structure does.
| Setting | Governs | Simulation value (worked default) [estimated] | Operation's value |
|---|---|---|---|
| Persistence window | consecutive weekly cycles a component must hold its sign before B3 receives it | four weeks | SET LOCALLY |
| Structural threshold | persistence beyond which a component goes to B4 | one pipeline length | SET LOCALLY |
| Frozen zone, B3 | hard delay between decision and release, no cancellation inside it; decisions inside count as supply line | a third of the pipeline (four weeks on twelve) | SET LOCALLY; shorter than the pipeline |
| Frozen zones, B2 and B4 | the published week; the contract notice period | one week; not modelled | SET LOCALLY |
| Adjustment time | the period over which B3 closes its gap | about two-thirds of the pipeline | SET LOCALLY |
| Supply-line weight w | how fully the pipeline is counted | 1 | SET LOCALLY; state the current implied value |
| Change cost | charge per full-time equivalent moved in the plan of record | flat rate per FTE moved | SET LOCALLY |
| Horizon extension | the planning horizon grows by the frozen zone plus the persistence window | zone + window | follows from the above |
| Re-set rule | how far a planned value moves when breached | smallest excursion in the window | adopt as written |
A frozen zone makes the plan late by its own length when the world moves.
In the simulation the combined closed-loop policy made about a quarter
fewer hiring moves across a seasonal year with about a third of the
cancelled requisitions, at about three percent lower cost per contact and
statistically indistinguishable service [estimated]. Isolated, the
persistence and frozen-zone switches cost more than they save under fast
upward shocks and long pipelines.
Two measures separate nervousness from legitimate movement. Plan-of-record
reversal: sample the plan at the decision cadence and, wherever two
consecutive moves change direction, count the smaller; seasonal turns
register once, oscillation every half-cycle. Tracking error: the mean gap
between the floor and the plan of record. Low reversals with high tracking
error is a plan that is stable and ignored; high reversals with low
tracking error is one that is followed and nervous. A plan whose inputs
are nervous is the job of forecast smoothing and the persistence test, not
of the freeze.
Block 5 — process-card-and-data-contract.md
# GP-107 and the data contract beneath it
*Derived from the wiki articles "Continuous Planning Cycle (generic
process)" and "The Data Layer Beneath Continuous Planning". GP-107 is a
generic card: a deploying function copies its stages into its own L1 and
the step table into its L2, and holds every local value as SET LOCALLY.
Platforms are named at L3, never on the card.*
## Part 1: the card
GP-107 does not replace the monthly capacity cycle (GP-102) or the weekly
reforecast (GP-103). It connects them and adds the three steps the cascade
lacks: routing variance, netting the supply line, and keeping the annual
plan as a ledger of assumptions.
| Field | Generic value |
|---|---|
| Class | both: the cycle runs at every horizon from the interval to the year |
| Trigger | weekly close of actuals opens routing; the monthly decision week opens the capacity decision; a ledger band breach opens a decision at any time; the annual re-base is a dated event |
| Cadence | weekly routing and plan-of-record proposal; monthly capacity decision and envelope reset; quarterly structural review; annual re-base. Persistence window and frozen zone SET LOCALLY |
| Scope out | the forecasting method; the interval actions themselves; the hiring process after a requisition is raised; contract negotiation |
| Inputs | actuals by interval; the forecast with a version on every vintage; the roster and the supply-line stock; hours-band and contract-band limits; the envelope and authority bands; the definitions register |
| Outputs | routed variance by lever, weekly; the gap net of the supply line by pool; the plan of record with lineage; band-breach events with owner and persistence; the envelope reset proposal; the structural swing by pool, quarterly |
| Decision points | the routing assignment; the plan-of-record signature; the breach question (planned value wrong, or the operation?); the structural question at the pipeline length (band or hire?) |
| Authority tier | routing at planner tier by rule; plan of record signed at function head inside the authority band, escalated to the sponsor outside it; a ledger re-set by the row's owner; the structural decision at function head with vendor governance |
| Risk flags | a plan proposed on a forecast without versions cannot be audited; a hiring decision that ignores the pipeline oscillates; an envelope reset is a financial commitment under the finance loop's governance; a frozen zone broken without the change cost recorded is lock erosion |
### The six stages (L1)
| Stage | Cadence | Does | Method |
|---|---|---|---|
| 1 Observe and version | weekly | close actuals; score every open forecast vintage by horizon; update the ledger's current estimates | forecast vintages |
| 2 Decompose and route | weekly | decompose the gap by cause; run the persistence test; assign each component to a loop; report what each lever carried | routing-supply-line-and-ledger.md, Part 1 |
| 3 Net the supply line and propose | weekly roll, monthly proposal | compute the gap net of the landing supply line by pool; propose the plan of record with lineage to the ledger | Part 2 |
| 4 Decide inside the band | monthly | sign inside the authority band or escalate; release into the frozen zone; review requisitions on the same cadence | Part 4 |
| 5 Answer the breach | on event | ask the owner the one question; record the answer against the row; recompile or open a corrective action | Part 3 |
| 6 Size the swing and re-base | quarterly; annually | decide band or hire for the swing that persisted past a pipeline; review the ledger and re-base | the lever inventory |
The L2 table decomposes each stage into owned, timed sub-steps in the
fifteen columns of the convention. Left open on the generic card and SET
LOCALLY: persistence window, frozen-zone length, adjustment time,
tolerance band per assumption, authority band, business-day offsets.
### Variants
| Class | Condition | Treatment |
|---|---|---|
| Statutory | a hiring plan or reduction must be presented to a works council | stage 4 gains a decision step between proposal and release; a variant row owned by the liaison, approved by the function head |
| Contractual | a partner contract fixes capacity in blocks with notice | stage 6's band decision is constrained by the notice period; a SET LOCALLY value on the structural step, not a variant row, until a band contract exists |
| Structural | no supply-line feed exists | stage 3 nets a hand-built supply line from the recruiting report and training calendar; a variant row with a review date each cycle until the feed is built |
| Transitional | the function still runs the linear cascade | adopt stages 1 and 2 read-only; run stage 3's gap beside the cascade's own for at least one quarter before stage 4 replaces the cascade's decision; a variant row until the switch is dated |
### L3 register
Job aids a localizing team writes against the generic L2; names only, the
content is the function's. Work instructions: the vintage scoring query
and accuracy-by-horizon report (stage 1); the decomposition arithmetic and
persistence test, with worksheet (2); the supply-line stock: sources, ramp
curve, attrition applied, productive-equivalents (3); the plan-of-record
proposal pack: lineage, authority band, change cost (3 to 4); the re-base
checklist (6); the variance-by-lever report (2 and 6). Playbooks: the
routing rules and the ledger breach (2); the frozen-zone and cancellation
rule (4); the structural swing calculation and the band-or-hire decision
(6). Runbook: the breach question and its record (5).
### Automation candidates
Ranked; released per class of action on a published catch rate.
1. Vintage scoring and the ledger's current estimates (stage 1):
deterministic; its catch rate is a comparison of numbers.
2. Decomposition and persistence test (stage 2): arithmetic; the inputs
need an overseer's check first.
3. Routing assignment (stage 2): rule-based; the rule is reviewed
quarterly and a changed rule resets the catch rate.
4. Gap net of the supply line and the plan-of-record proposal (stage 3):
the supply-line stock is the newest object and its feed must prove
stable.
5. Breach detection and envelope reset proposal (stages 5 and 6): breaches
are rare, so a catch rate takes longest to accumulate.
Never candidates: the signature (stage 4) is a commitment; the breach
answer (stage 5) is a judgement about whether the plan or the operation is
wrong.
## Part 2: the data contract
A loop is a measurement that changes a decision. Five coupled loops
require that the measurement at every horizon be the same quantity,
defined once, versioned, and traceable to the people, hours and contacts
it was made from; where each platform counts its own way, the couplings
carry translation error instead of information. The requirement is one
shape for people, time, work and intervals; one definition per measure
with formula, grain, owner and version; a version on every forecast and
every plan.
| Loop or coupling | Reads | Grain and refresh | Version field | Writes |
|---|---|---|---|---|
| B1 Interval correction | contacts offered and handled, handle time, occupancy, adherence, service level, queue age, backlog | 15 minutes, near real time | none | interval actions |
| B2 Short-term reforecast | the above plus workload hours, requirement, scheduled hours, overtime and time-off hours, planned and unplanned shrinkage | 15 minutes for the forecast, person-day for hours; daily | forecast version on the requirement | hours-band changes, overtime and time-off offers; schedule changes after a published catch rate |
| B3 Pipeline-aware capacity | requirement over the planning window, headcount, FTE, attrition, ramp, paid and available hours, shrinkage, the supply-line stock, the envelope with authority bands | pool by week, weekly; monthly decision | forecast version; plan-of-record version | the plan of record by pool and week; requisitions and class starts; the gap net of the supply line |
| B4 Structural elasticity | the swing in the requirement over the window and the year by pool; workload by channel; contract corridors; idle and overtime shares from routing | pool by quarter | contract version | the sized band per pool; the lever selection |
| B5 Finance envelope | paid hours and cost, headcount, the reconciled forecast over the window, the envelope | pool by month | plan-of-record version; budget version | the envelope and authority bands |
| L1 Vintage learning | every forecast vintage and the actuals it is scored against | horizon by vintage | forecast version | accuracy by horizon; retuned parameters |
| L2 Assumption ledger | the register's measures as current estimates; the planned values | assumption by week | estimate vintage; planned-as-of date | breach events with owner and persistence; the recompiled plan |
| L3 Variance routing | workload hours and components, requirement, scheduled and paid hours, headcount, the supply-line stock | pool by week, weekly | all of the above | the routed components; the variance-by-lever report |
| L4 Envelope feed-down | the envelope by pool and month | monthly | budget version | nothing; read by B3 |
| L5 Anticipation | the hours-band limits; the contract corridors | as they change | contract version | the sized hire |
The couplings' labels L1 to L5 are not the documentation levels L0 to L3
of process decomposition.
### The two objects usually missing
Both are small; everything else in the contract is a measure a definitions
register already names. The hardest part of each is the identity map
beneath it: a trainee in the training calendar must be the same person as
a requisition in the recruiting system.
**Supply-line stock**, one table: pool; week; decisions committed (inside
the frozen zone, not yet released); requisitions open; offers accepted;
people in training by graduation week; graduates ramping by ramp week;
expected attrition before landing; productive-equivalent total. Sources:
the recruiting system, the training calendar, the plan of record, the
identity map.
**Assumption ledger**, one table: assumption identifier; planned value and
the date it was set; current estimate and its vintage; tolerance band (SET
LOCALLY); owner role; persistence; dependents. Sources: the definitions
register, the learning loops, the routing test, the compiler.
### The layered model and what breaks without it
Bottom up: landing (an untouched, append-only copy of each source); the
single model (one person, one queue, one interval, one list of codes; the
identity map, code map and time ledger live here, and so do the two
objects above); business-ready tables built once from it; the semantic
layer (each measure defined once with formula, grain, owner and version;
the loops read from here and nowhere lower); the knowledge layer (how
things relate, including the certified record of what each person may
do); governed, logged access; gated, late write-back. Each platform
connects through its own adapter. The names of the layers vary; the
separation is what matters.
| Missing | Failure in the loops |
|---|---|
| Identity map | headcount differs by system; B3's gap carries a constant offset argued about monthly; the supply line cannot be built |
| Code map or time ledger | shrinkage and occupancy mean different things per unit; L3 attributes a coding difference to "shrinkage"; B4 sizes bands against a swing that is partly definitional |
| Version on the forecast | L1 has nothing to score; R5 runs: a forecast that cannot be shown right is overridden, and the overrides miss |
| Semantic layer | each report carries its own formula; the loop with the weakest number loses the argument regardless of which was right |
| Ledger as data | the annual plan stays a number with a history, defended whole or abandoned whole |
Meaning (definitions, semantics) commonly sits with the planning function,
pipes with the data function, and capture at the source with the platform
owners: where a platform cannot record how long a person spent on an item,
no definition rescues it.
Block 6 — Briefing prompt for the first conversation
Paste this as the first message once the pack files and the operation's own documents are uploaded. Answer the questions in the second paragraph inline, or attach the documents that answer them, and delete any numbered item that does not apply.
Alongside the four pack files I have uploaded what this operation holds:
(1) the planning calendar; (2) the capacity model or gap worksheet the
monthly cycle uses; (3) the recruiting or supply-line report; (4) the last
few forecast-versus-actual reviews; (5) the annual plan's assumption list
or driver sheet, if one exists.
Before anything else, confirm what you have read and ask me for whatever
is missing: the horizons the operation plans at and the cadence of each;
the hiring pipeline length from requisition to productive seat, by pool if
it differs; the exact formula the capacity cycle uses for its gap today;
whether forecasts carry a version and whether an earlier vintage can be
retrieved after a refresh; and what the supply-line report contains
(requisitions, offers, trainees by graduation week, graduates by ramp
week, attrition applied, productive-equivalents) and what it omits.
Then do five things, in order, and stop after each for my review.
1. Open-loop diagnosis. Using loop-architecture.md, run the three-question
test at each horizon: which of B1-B5 are closed, partly closed or open,
and which of L1-L5 exist. Cite what each verdict rests on. Where the
gap formula is plan minus floor, say what supply-line weight it implies.
2. Signature read. Using loop-catalogue-and-signatures.md, list the series
needed to test for R1-R7, say which I have supplied, and read those.
Proposals, not verdicts.
3. One week routed. Using Part 1 of routing-supply-line-and-ledger.md,
decompose the most recent review's gap by cause as an index on the
average week, measure persistence as far as the history allows, and
assign each component to a loop. Persistence window SET LOCALLY, with
the simulation default beside it, marked [estimated].
4. Gap net of the supply line, and a draft ledger. Using Parts 2 and 3,
recompute the current gap at w = 1 beside the operation's own figure;
then draft the ledger from the driver sheet, one row per assumption,
with a proposed band marked SET LOCALLY, an owner role and dependents.
5. GP-107 localization. Using process-card-and-data-contract.md, propose
the local L1 with cadences and owners, name the variant class that
applies, list the L3 job aids to write first, and state which of the
two data objects exists, is hand-built, or is missing. Recommend
whether to start transitional, and for how long.
Conventions: American English. Index, not quantities. Every local value
SET LOCALLY. Every simulation figure [estimated] and never a prediction.
No vendor, platform, employer, client or industry named in any output.
Usage notes
- Sizing. Block 1 is roughly 600 words and loads with every message in the project. Blocks 2–5 total roughly 6,800 words and are retrieved only when the routing table sends the model to them.
- Scope. Method and reference only. No organization's data, calendar, pipeline length or gap formula; the pack is deployable in any service operation that plans capacity against a hiring pipeline, and most of it in any rolling-horizon planning process.
- Provenance of figures. Every quantitative figure in the blocks is
[estimated]: it comes from one weekly stock-and-flow simulation with round, illustrative parameters, run on synthetic demand, and is quoted as an index to show structure. None of the figures is a prediction of what an operation will save, and Block 1 instructs the project never to present them as one. The published loop names and the experimental supply-line weight are reproduced from the cited papers as the nine articles cite them; no citation has been added here. - Local values. The persistence window, frozen zones, adjustment time, tolerance bands, authority bands, cadences and pipeline length are design choices. The blocks show the simulation's values as worked defaults and mark the operation's own as
SET LOCALLY, following the convention of the generic process cards. - Numbering. Controller loops B1–B5, couplings L1–L5 and pathology loops R1–R7 are this wiki's. The source papers for R3 and R4 number their own loops differently, and Block 3 quotes those names as published. The couplings' L1–L5 are not the documentation levels L0–L3 of Process Decomposition (L0–L3).
- Drift. Each block derives from the articles named in its header; when an article changes, the matching block is regenerated and the version here is incremented. Block 2 derives from Workforce Planning as a Control System and The Annual Plan as an Open-Loop Controller; Block 3 from Feedback Loops in Workforce Planning; Block 4 from Variance Routing by Horizon, The Supply Line in Capacity Planning, Planning Nervousness and Frozen Zones and Assumption Ledgers and the Continuous Annual Plan; Block 5 from Continuous Planning Cycle (generic process) and The Data Layer Beneath Continuous Planning. The settings table and the open-loop test in Blocks 2 and 4 consolidate material across the series and have no single article home; they are maintained here.
- Relationship to existing packs. Wiki:Packs/Process Decomposition (
CP-OPS-001) is the pack that localizes any generic card, includingGP-107; this pack supplies the method the card runs. Wiki:Packs/Data Definitions and Source of Truth (CP-WFM-023) builds the definitions register the loops read from; this pack assumes it and states the contract each loop places on it. Wiki:Packs/Business Travel Seasonality and Supply Flex (CP-WFM-026) and the lever inventory behind it are what loop B4 chooses from once the structural swing is sized. Wiki:Packs/Demand Variance Decomposition (CP-WFM-006) separates seasonal from residual variance in the demand series; this pack routes the resulting capacity gap to the loops.
Change history
| Version | Date | Change |
|---|---|---|
| 1.0 | 2026-11-04 | Initial publication. Instruction block, four reference files, briefing prompt. |
See also
- Wiki:Packs/Process Decomposition (
CP-OPS-001) — localizing a generic process card to L1–L3 - Wiki:Packs/Data Definitions and Source of Truth (
CP-WFM-023) — the definitions register the loops read from - Wiki:Packs/Business Travel Seasonality and Supply Flex (
CP-WFM-026) — the structural loop's levers, priced and placed - Wiki:Packs/Demand Variance Decomposition (
CP-WFM-006) — separating seasonal from residual variance - Workforce Planning as a Control System — the reading: five loops, five couplings, three ledgers
- Feedback Loops in Workforce Planning — the loop catalogue and the pathology signatures
- The Annual Plan as an Open-Loop Controller — why one number cannot be a forecast, a target and a commitment
- Variance Routing by Horizon — the method behind coupling L3
- The Supply Line in Capacity Planning — the stock, the decision rule and the weight w
- Planning Nervousness and Frozen Zones — commit the first step, freeze shorter than the delay, charge for changes
- Assumption Ledgers and the Continuous Annual Plan — the ledger fields and the breach question
- Continuous Planning Cycle (generic process) —
GP-107: stages, variants, L3 register, automation candidates - The Data Layer Beneath Continuous Planning — the contract each loop places on the data
- Supply Elasticity Lever Inventory — what loop B4 chooses from
- Forecast Vintages — the version every forecast needs for L1
- Wiki:Packs — the pack registry
