Reconcile plan actual variance drivers

Reconcile plan-to-actual value variance with an exact, order-independent Shapley decomposition of a declared multilinear operating model.

What it's for

Turns plan-versus-actual reviews into a reproducible explanation of interacting price, volume, cost, capacity, and timing drivers instead of an order-sensitive spreadsheet waterfall.

What you give it

Inputs split into evidence read from your connected systems, calibration your team owns, and numerical controls that affect precision but never the result's meaning.

Field Type Role Required
base_value number Your calibration Optional
drivers array of objects (4 fields) ≥ 1 item Evidence Yes
favorable_direction one of "higher", "lower" Your calibration Optional
material_variance number ≥ 0 Your calibration Optional
max_detail_rows integer ≥ 1, ≤ 500 Numerical control Optional
maximum_reconciliation_error_fraction number ≥ 0, ≤ 1 Your calibration Optional
reported_actual_value number Your calibration Optional
reported_plan_value number Your calibration Optional
value_terms array of objects (3 fields) ≥ 1 item Evidence Yes

Each drivers record

Field Type Required
actual_value number Yes
category string (non-empty) Optional
id string (non-empty) Yes
planned_value number Yes
Example input
{
  "drivers": [
    {
      "actual_value": 120,
      "category": "growth",
      "id": "volume",
      "planned_value": 100
    },
    {
      "actual_value": 12,
      "category": "growth",
      "id": "price",
      "planned_value": 10
    },
    {
      "actual_value": 7,
      "category": "cost",
      "id": "unit-cost",
      "planned_value": 6
    }
  ],
  "material_variance": 10,
  "reported_actual_value": 600,
  "reported_plan_value": 400,
  "value_terms": [
    {
      "coefficient": 1,
      "factor_ids": [
        "volume",
        "price"
      ],
      "id": "revenue"
    },
    {
      "coefficient": -1,
      "factor_ids": [
        "volume",
        "unit-cost"
      ],
      "id": "variable-cost"
    }
  ]
}

What you get back

This is the actual output of running the example above — computed by the same function the platform calls, not an illustration.

Example output
{
  "assumptions": [
    "The governed value model is a sum of declared multilinear terms evaluated once at planned and actual driver endpoints; the model, source ledger, units, scope, and period must be frozen before attribution.",
    "Each term's interaction change is allocated by the exact Shapley value of its planned-to-actual endpoint game, eliminating spreadsheet waterfall order but not proving that a driver caused the realized variance.",
    "Unmodeled drivers, changes in accounting classification, timing, scope, counterfactual, nonlinear functions outside the declared terms, and measurement error remain outside the decomposition.",
    "Driver and category contributions explain the submitted aggregate value model and must not be converted into named-person performance, compensation, hiring, or termination judgments."
  ],
  "category_diagnostics": [
    {
      "category": "growth",
      "favorable_variance_contribution": 310,
      "shapley_variance_contribution": 310
    },
    {
      "category": "cost",
      "favorable_variance_contribution": -110,
      "shapley_variance_contribution": -110
    }
  ],
  "configuration": {
    "base_value": 0,
    "favorable_direction": "higher",
    "material_variance": 10,
    "maximum_reconciliation_error_fraction": 0.01,
    "reported_values_supplied": true
  },
  "decision": "material_favorable_plan_actual_variance_explained",
  "driver_diagnostics": [
    {
      "absolute_attribution_share": 0.5238,
      "actual_value": 12,
      "category": "growth",
      "driver_change": 2,
      "driver_id": "price",
      "favorable_variance_contribution": 220,
      "planned_value": 10,
      "shapley_variance_contribution": 220
    },
    {
      "absolute_attribution_share": 0.2619,
      "actual_value": 7,
      "category": "cost",
      "driver_change": 1,
      "driver_id": "unit-cost",

Truncated for display — the full payload is 107 lines.

How it works

Decision analysis — Turn uncertainty, cost and risk appetite into a defensible choice, with the reasoning left inspectable.

  1. 1 Freeze one plan/actual period, source-ledger totals, driver endpoints, and a governed value model expressed as an intercept plus declared coefficient-times-factor-product terms.
  2. 2 Evaluate every term at both endpoints and allocate each interaction change exactly across its factors using the Shapley value of the endpoint-change game.
  3. 3 Reconcile allocations to modeled variance and the model to reported source values; abstain from explanation when the source reconciliation gate fails.

Before you trust it

Every tool in the catalog ships with the conditions under which its answer is meaningful — and the conditions under which it should abstain instead of guessing.

Assumptions & guardrails

  • Actions, outcomes, utilities, evidence boundaries, uncertainty representation, and accountable ownership match the actual decision.
  • Driver units, signs, scope, period, accounting classification, and model terms are frozen and comparable; omitted nonlinearities, timing changes, and scope changes are immaterial or explicitly added as drivers.
  • The result structures a governed choice; it does not replace accountable judgment or authorize action outside the declared decision boundary.
  • The decomposition is an order-independent accounting explanation of a submitted model, not causal attribution and never a named-person performance, compensation, hiring, or termination score.

Minimum evidence

  • drivers: at least 1 rows/items
  • value_terms: at least 1 rows/items

How to validate it

Validate on future periods or held-out aggregate units, compare with a simple baseline, and require stability across plausible metric definitions and decision thresholds.

Calibrating it to your org

Same for everyone

The mathematical kernel, validation rules, method version, and JSON output semantics are organization-independent; no tenant-trained coefficients or company benchmark is embedded in the function.

Specific to you

  • approved multilinear value-term projection linking driver IDs to coefficients, signs, units, scope, and category
  • source system of record, period and scope, favorable direction, model version, driver semantics, reconciliation tolerance, materiality, and treatment of timing, classification, and omitted terms

Calibration workflow

  1. 1 Define the management decision, target outcome, aggregate unit, privacy boundary, cadence, and prediction/intervention horizon for this organization.
  2. 2 Build a tenant-scoped historical cohort using only information available before each prediction or decision; preserve zero periods, censoring, assignment probabilities, and unresolved outcomes when the method requires them.
  3. 3 Estimate statistical parameters on training history, but obtain costs, utilities, risk tolerance, practical-effect thresholds, capacity, and policy constraints from accountable decision owners.
  4. 4 Validate on later time windows or held-out aggregate units at the deployment grain, against a simple baseline and the function-specific validation strategy.
  5. 5 Deploy only if the returned decision clears evidence, overlap, calibration, robustness, and guardrail checks; warning, unsupported, schema-gap, and fallback decisions are abstentions.
  6. 6 Monitor realized outcomes, data drift, coverage, and decision regret; recalibrate at a governed cadence or after a detected regime/definition change, never merely because a stakeholder dislikes the result.

Call it from your AI

You don't wire up 388 tools in your MCP client. The GitRevio MCP server exposes 18 tools, three of which let an agent search the catalog, read a tool's schema, and run it — so the assistant finds this one on its own.

gitrevio_capabilities_search
  { "q": "reconcile plantoactual value variance with an" }
  → finds "reconcile_plan_actual_variance_drivers"

gitrevio_capability_describe
  { "capability_id": "reconcile_plan_actual_variance_drivers" }
  → returns the input schema and agent guidance shown on this page

gitrevio_capability_run
  { "capability_id": "reconcile_plan_actual_variance_drivers", "arguments": { ... } }
  → returns the result shown above

Works in Claude Desktop, Claude Code, Cursor, Cline, Continue.dev, Goose and Aider. See the MCP server.

Related tools

Estimate value of flexibility

Value a strategy's pre-action signal-contingent flexibility against its best fixed action, including enablement cost, tail loss, and perfect-information headroom.

Statistical audit & measurement

Solve budgeted bayesian experiment portfolio

Choose a budget- and resource-feasible portfolio of Bayesian experiments whose correlated observations can change multiple governed deployment decisions.

Sequential Bayesian & bandits

Audit causal claim negative controls

Gate a causal effect claim using prespecified negative outcome/exposure controls, Benjamini-Hochberg multiplicity control, and an omnibus chi-square falsification test.

Causal inference & experiment design

Audit cluster randomization integrity

Audit cluster-randomized experiments for practical baseline imbalance and differential outcome observation, with cluster-size-weighted standardized differences and assignment permutation diagnostics.

Causal inference & experiment design

Audit growth incrementality experiment integrity

Audit aggregate randomized growth experiments before anyone trusts channel incrementality: enforce unique experimental units, nondegenerate logged propensities, both arms, control-spend discipline, baseline balance, spillover and evidence gates; then estimate propensity-weighted baseline-adjusted contribution, cluster-unit bootstrap uncertainty and incremental return on spend.

Causal inference & experiment design

Audit joint outcome network integrity

Audit whether a company-specific Bayesian joint-outcome network is fit for reliance by validating point-in-time lineage, DAG and CPT completeness, effective support, protected-attribute exclusions, and strictly out-of-time outcome calibration against a baseline.

Sequential Bayesian & bandits

See every tool in Causal evidence & experiments →

Ready to See Your Engineering work clearly?

Request a free demo