For builders: what the loops read and write

The data contract behind the simulation, stated generically, and how the engine on the main page implements each piece. Method: The Data Layer Beneath Continuous Planning and the process card Continuous Planning Cycle (generic process).

A loop is a measurement that changes a decision. Five loops at five horizons, coupled, need the same measure of the same world at every horizon: one shape for people, time, work and intervals that every platform maps into, one definition per measure with its formula, grain, owner and version, and a version on every forecast and plan. The table is what each loop asks of such a layer. Two objects in it are usually missing and both are small: the supply-line stock (pool, week, decisions committed, requisitions open, offers accepted, in training by graduation week, graduates ramping, attrition expected before landing, productive-equivalent) and the assumption ledger (assumption, planned value and date, current estimate and vintage, band, owner, persistence, dependents).

The contract

LoopReadsGrain and refreshWritesGate
Interval correctioncontacts offered and handled, handle time, occupancy, adherence, service level, queue age, backlog15 minutes, near real timeinterval actionsalready closed in most operations
Short-term reforecastthe above plus workload hours, the requirement, scheduled hours, overtime and time-off hours, planned and unplanned shrinkage15 minutes for the forecast, person-day for hours; dailyhours-band changes, overtime and time-off offersschedule write-back after a published catch rate
Pipeline-aware capacitythe requirement over the planning window, headcount, attrition, ramp, paid and available hours, shrinkage, the supply-line stock, the envelopepool by week; monthly decisionthe plan of record; requisitions and class startsproposed by the layer, signed by a person
Structural elasticitythe swing in the requirement by pool, workload by channel, contract corridors, the idle and overtime sharespool by quarterthe sized band per pool; the lever chosenhuman decision
Finance envelopepaid hours and cost, headcount, the reconciled forecast, the envelopepool by monththe envelope and authority bandsthe finance loop owns it
Vintage learningevery forecast vintage and the actuals it is scored againsthorizon by vintageaccuracy by horizon; retuned parametersnone
Assumption ledgerthe register's measures as current estimates; the planned valuesassumption by weekbreach events with owner and persistence; the recompiled planthe owner answers the breach
Variance routingworkload hours and their components, the requirement, scheduled and paid hours, headcount, the supply-line stockpool by weekthe routed components; the variance-by-lever reportnone; it is the diagnosis

How the engine implements it

PieceIn the simulation
Demandweekly contacts = level × seasonal index × (1 + step) × (1 + drift) × (1 + spike) × (1 + noise); one seed, generated before any policy runs
Capacity waterfallneed = contacts × (1 + repeat rate) × aspiration handle time + backlog; capacity = (full + 0.6 × ramping) × productive hours; the gap is met in order by a free real-time absorb, the annualised-hours band, the overtime band, deferral, handle-time compression, and finally unmet contacts; surplus by the band down, unpaid time off, then paid idle time
Hiring rulehires = expected losses + (plan of record − agents) ÷ adjustment time − w × (supply line − desired supply line) ÷ supply-line adjustment time, capped by the envelope; w is 0 for the cascade and 1 for the closed loop
Plan of recordthe cascade sets it monthly to the forecast at the horizon; the closed loop moves it only by the smallest same-sign excursion over the persistence window, and plans a horizon longer by the frozen zone and the window
Forecastthe cascade re-forecasts every four weeks as a blend of recent actuals and the annual plan (the anchoring knob); the closed loop uses Holt smoothing on actuals every week with a damped trend
Envelopethe cascade's is fixed for the plan year at the planned peak plus the replacement pipeline; the closed loop's is reset monthly from the highest forecast requirement over thirteen weeks
Attrition and qualityattrition rises with sustained overtime above a threshold; under the cascade the quality aspiration follows observed handle time with a 26-week adjustment time, both ways; the closed loop holds it
Costbase pay for everyone on the books, overtime at a premium, unpaid time off as a saving, band hours beyond the bank at a premium, hiring and cancellation and release events, unmet contacts, repeat contacts above base, backlog carried, and a charge on every change to the plan of record, paid by both policies

What is deliberately missing. No noise-scaled safety buffer in either policy; no channel mix; no site or skill dimension; no partner contract with notice periods beyond the shared band; no finance calendar. Each is a dimension a real layer carries and the model omits to keep the comparison legible. The source is in the repository's src/engine, under three hundred lines of TypeScript, with tests that check conservation of hours and people, the fairness invariants, and that the result is not baked in.

← back to the simulator