Wiki:Packs/Causal Inference

From WFM Labs
Pack
ID CP-ANL-001
Name Causal Inference
Slug causal-inference
Type Pack
Domain ANL
Status Active
Version 1.1
Contents 1 instruction block + 2 reference files
Source Causal Inference in Workforce Management
Causal Diagrams (DAGs) in WFM
The Ladder of Causation in WFM
Correlation and Causation in WFM
Selection and Collider Bias in WFM

A pack is a deployable set for a Claude project: one instruction block that is pasted into the project's custom instructions, plus reference files saved as Markdown and uploaded as project knowledge. Packs contain no installable skill — see Wiki:Skills for those.

This pack supports analytical work where the question is whether something caused something else: evaluating an intervention, attributing a change, comparing sites or vendors, or reviewing a business case before it is acted on.

When to use it

Create a project from this pack when you are:

  • evaluating whether a programme, routing change or tooling change produced its claimed effect
  • attributing a movement in a metric to a specific cause
  • comparing vendors, sites or teams where they do not receive identical work
  • reviewing an analysis before it reaches an executive audience
  • building a business case that asserts an intervention will produce an outcome

If the question is descriptive — what happened rather than what caused it — this pack is not needed.

How to deploy

  1. Create a project. Name it for the work, not the method — "Containment impact review", not "Causal analysis"
  2. Copy Block 1 into the project's custom instructions
  3. Save Block 2 as causal-diagrams.md and Block 3 as causal-claims.md, then upload both as project knowledge
  4. Start a conversation

Total time: about two minutes. Nothing is installed and nothing persists outside the project — deleting the project removes the whole set.

Block 1 — Project instructions

Paste this into the project's custom instructions. It loads with every message in this project, so it is deliberately short.

This project analyses whether workforce interventions actually caused the
outcomes attributed to them. The work is causal, not descriptive: the
question is always whether the evidence supports the claim being made.

WHICH FILE TO OPEN
  A recurring question with a known structure — routing change,
  wellbeing programme, containment and cost, vendor comparison,
  schedule change, staffing business case      -> causal-diagrams.md

  Classifying or restating a claim; deciding whether evidence
  supports the language used; identifying threats to a causal
  reading; choosing what would settle it        -> causal-claims.md

Open one. If the question is answerable without opening either, answer it.

DISCIPLINES
- Classify before analysing. State the rung the claim requires and the
  rung the evidence supports. Where they differ, that gap is the finding.
- Attribution is Rung 3. "X delivered Y" asserts what would have happened
  otherwise. Treat it as a counterfactual, not an observation.
- Only condition on variables determined before the treatment, which the
  treated party cannot influence. Controlling for more is not safer; a
  mediator removes the effect and a collider manufactures one.
- Name the specific threat that is not ruled out. "Confounding is
  possible" is not a finding; "the sites that adopted first were the
  worst performers, so regression to the mean is unaddressed" is.
- Rewrite the sentence. Do not flag an overclaim and leave the wording
  intact — produce the version the evidence supports.
- Always end with what would settle it, cheapest first. A ten per cent
  randomised holdout converts most of these questions from Rung 1 to
  Rung 2 and is far cheaper than assumed.
- Where a diagram helps, write it as text: nodes and arrows, one
  relationship per line.

OUTPUT
Claim as stated / rung required / rung supported / the specific gap /
restated claim / what would justify the original.

Where required and supported rungs match, say so plainly and stop. This
is a filter, not a tax on every sentence.

Source: Wiki:Packs/Causal Inference (CP-ANL-001) v1.1

Block 2 — causal-diagrams.md

Save as causal-diagrams.md and upload as project knowledge. Derived from Causal Diagrams (DAGs) in WFM, applied to six recurring workforce questions.

# Causal diagrams for workforce questions

Text DAGs for the questions that recur. Notation: `A ──> B` means A
directly causes B.

## 1. Did the routing change improve handle time?

Seasonality ──┬──> Volume ──> Occupancy ──> AHT
              └──> Staffing ─────────────────^
Contact mix ─────> AHT
Routing change ──> Occupancy
Routing change ──> Contact mix
Tenure mix ──────> AHT

Backdoor paths: seasonality and contact mix both drive AHT and correlate
with when the change was made.

The trap: routing changes CAUSE mix change. Conditioning on contact mix
conditions on a mediator and removes part of the effect being measured.
Report total effect (uncontrolled) and direct effect (mix-controlled)
separately, and say which is which.

Cheapest design: stagger the rollout by site or queue.

## 2. Did the wellbeing programme reduce attrition?

Occupancy ──> Stress ──> Attrition
Tenure ─────> Attrition
Labour market ──> Attrition
Manager quality ──┬──> Stress
                  └──> Attrition
Programme ──> Stress ──> Attrition
Volunteering ──> Programme
Volunteering ──> Attrition

Dominant threat is selection. Where participation was voluntary,
participants differ systematically in exactly the way that predicts the
outcome. This alone can manufacture the entire apparent effect.

Bad control: stress is the mechanism. Conditioning on it removes the
effect by construction.

Cheapest design: waitlist randomisation.

## 3. Did containment reduce cost to serve?

Containment ──> Handled volume ──> Total labour cost
Containment ──> Residual mix ──> AHT ──> Total labour cost
Automation spend ─────────────────────> Total cost
Volume trend ──┬──> Handled volume
               └──> Containment
Deflection failure ──> Repeat contacts ──> Total labour cost

Two paths with opposite signs. Containment reduces volume (cost down) and
hardens the residual (cost up). A before/after on total cost captures the
net and attributes it all to the first.

Commonly missing node: deflection failure — contacts that enter
automation and return to a human, consuming automation cost then human
cost at elevated handle time. Where unmeasured it loads silently onto the
residual-hardening path.

Report: decompose. Volume effect, mix effect, deflection-failure effect,
automation spend — separately.

## 4. Is one vendor better than another?

Contact mix ──> Quality outcome
Vendor ──> Quality outcome
Routing policy ──┬──> Contact mix
                 └──> Vendor
Tenure ──> Quality outcome
Vendor attrition ──> Tenure
Prior contact ──> Quality outcome
Vendor quality ──> Prior contact

Confounder is routing policy — it determines both which vendor gets the
contact and what kind of contact it is. Mix differences routinely exceed
true capability differences.

Two bad controls, both biasing toward the vendor:
- Tenure with vendor: a high-attrition vendor has low tenure.
  Conditioning absorbs their reliability failure into "case mix".
- Prior contact on the same issue: where repeat contact IS the quality
  measure, conditioning partially controls for the outcome.

Both favour the party being measured, so neither gets disputed, so
neither gets caught.

Cheapest design: randomise 10-15% of routing within skill and language
feasibility. Only construction that distinguishes better vendor from
easier queue.

## 5. Did the schedule change cause the service level miss?

Schedule change ──> Coverage vs curve ──> Service level
Forecast error ─────────────────────────> Service level
Unplanned shrinkage ────────────────────> Service level
Schedule change ──> Employee satisfaction ──> Unplanned shrinkage
                                              ──> Service level
Volume spike ───────────────────────────> Service level

Note the indirect path: a schedule change hits service level twice —
directly through coverage, and indirectly by raising unplanned absence.
The second lags by weeks and gets attributed elsewhere.

Cheapest design: if it rolled out by team or site, that is a natural
experiment. If everywhere at once, compare against forecast-error and
shrinkage series to see which moved first.

## 6. Will this staffing model reduce cost?

Prediction under intervention — Rung 2, different treatment.

Model change ──> Staffing plan ──> Cost
                             └──> Service level ──> Repeat contacts ──> Cost
                             └──> Occupancy ──> Attrition ──> Cost

The feedback loops are the point. A reduction that degrades service
produces repeat contacts; one that raises occupancy produces attrition.
Both return as cost on a one-to-four-quarter lag.

A model with no feedback terms will always show cost reduction, because
it contains no mechanism by which cost could return. That is a property
of the model, not a finding about the world.

Ask of any staffing business case: where are the feedback terms, and what
lag do they carry?

## Bad controls — quick reference

Do not condition on:
- A mediator (the mechanism)        — removes the effect
- Anything measured after treatment — may be a consequence
- Anything the treated party moves  — they will move it
- A collider (two arrows in)        — opens a path
- The outcome or a proxy            — circular

When uncertain: condition only on variables determined before the
treatment that the treated party cannot influence.

## Limitations

These are templates, not findings. Each is a claim about mechanism in a
typical operation; any particular operation may differ. A DAG cannot be
validated from data alone — several structures fit the same correlations,
and choosing between them is a judgement about mechanism. The diagram
makes that judgement explicit and reviewable; it does not remove it.

Block 3 — causal-claims.md

Save as causal-claims.md and upload as project knowledge. Derived from The Ladder of Causation in WFM, Correlation and Causation in WFM and Selection and Collider Bias in WFM.

# Causal claims — classification and restatement

## The three rungs

Rung 1 — Association
  "X and Y move together." Needs observational data. Nearly all
  operational reporting lives here.

Rung 2 — Intervention
  "If we do X, Y will change." Needs an experiment, or observational
  data plus an identified causal model.

Rung 3 — Counterfactual
  "Y would not have happened without X." "X was responsible for Y."
  Needs a causal model plus assumptions usually unverifiable.

Attribution claims are Rung 3. "The routing rules delivered the
improvement" asserts what would have happened otherwise. Most business
cases are written at Rung 3 on Rung 1 evidence.

Classification test: state the claim, then ask what data would falsify
it. "Data we have" -> Rung 1. "Data from a world where we did the other
thing" -> Rung 2 or 3.

## Threats to a causal reading

Common cause          What could drive both X and Y? Seasonality, a
                      reorg, a concurrent programme, volume itself.
Reverse causation     Could Y cause X? Underperforming units get the
                      intervention BECAUSE they underperform.
Selection             Who was excluded, non-randomly? Survivors,
                      completers, volunteers, differently-routed queues.
Collider / bad control  Conditioning on something downstream of X.
Post-treatment control  A "covariate" that is a consequence of treatment
                      — tenure, where the intervention affects attrition.
Time-varying confounding  What else changed in the window? Usually
                      something. Name it.
Regression to the mean  Was the unit selected because it was extreme?
                      Worst sites improve without intervention.
Simpson's reversal    Does the sign flip within subgroups? Check by
                      segment before publishing an aggregate.

## The rule on controls

Only condition on variables determined BEFORE the treatment.

A covariate measured afterwards may be a mediator (removes the effect) or
a collider (creates a spurious one). "Control for more" is not safer; it
is sometimes the error.

## Restating the claim

Rung 1 only
  "associated with", "coincides with", "in units where X was higher, Y
  was also higher"

Rung 1 + plausible mechanism, confounders unaddressed
  "consistent with", "suggests" — plus the named alternative explanation

Rung 2, identified or experimental
  "we estimate X causes a change of [range] in Y, under [assumptions]"

Rung 3
  "we estimate that, absent X, Y would have been [range]" — with the
  enabling assumption stated inline

Rewrite the sentence. Do not flag and leave the wording intact.

## What would settle it — cheapest first

1. Randomise something. Even a 10% holdout, even for one cycle, converts
   the question from Rung 1 to Rung 2. Nearly always cheaper than
   assumed, and the highest-value recommendation available.
2. Staggered rollout — units adopt on different dates; the not-yet-
   treated are controls.
3. Natural experiment — a change in X driven by something unrelated to Y.
4. Sensitivity analysis — how strong would an unmeasured confounder need
   to be to erase this? If "not very", that is the finding.

## Output

Claim: [as stated]
Rung required: [1/2/3]   Rung supported: [1/2/3]
Gap: [the specific threat not ruled out]
Restated: [defensible version]
To justify the original: [cheapest design that would]

Where required and supported match, say so plainly and stop.

## Limitations

This establishes whether a claim CAN be supported by available evidence.
It does not establish effect size and does not substitute for estimation
method. A claim surviving every threat here may still be too imprecisely
estimated to act on.

Usage notes

  • Sizing. Block 1 is roughly 400 words and loads with every message in the project. Blocks 2 and 3 total roughly 1,900 words and are retrieved only when the routing table sends the model to them.
  • No skill is installed. Nothing persists outside the project. This is deliberate — see Wiki:Skills for the narrow cases where an installed skill is warranted.
  • Drift. Blocks 2 and 3 are generated from the article pages named above. When those articles change, this page must be regenerated. Check the version and date before assuming a working copy is current.
  • Scope. The pack is method only. It contains no organisational data and can be deployed anywhere.

Change history

Version Date Change
1.0 2026-08-05 Initial publication. Instruction block plus two reference files.
1.1 2026-08-05 Source repointed to existing canonical causal pages.

See also