Skip to content

Variance Tracking

Budget versus actual, with drift alerts on every forecast cell — before quarter-end, not after.

Variance gets discovered too late. The standard pattern: budget is set in October, the year runs, the close pack lands in March, and the CFO finds out in April that engineering blew its number in November. By then it is a story, not a decision.

Flowstate moves the variance signal to where you are looking. Versioned budget snapshots sit alongside the live cost forecast. When forecast moves away from the active budget, an inline drift badge shows up on the affected cell — in green if you are under, in red if you are over. No separate report. No quarterly delay.

What variance tracking gives you

ArtefactPurpose
Budget snapshotsVersioned, immutable budgets. The active snapshot for a fiscal year is the comparison baseline
Drift summaryAggregated cost and FTE delta against the active snapshot, surfaced on the budgets list
Variance badgesInline +£42K or -1.2 FTE chips on every forecast cell, when a snapshot is selected
Budget requestsChange requests with team-by-team proposals, comments, and an approval audit trail
Cost review workflowPeriodic review cadence and the rules that govern who can approve budget changes

The variance loop

  1. Set the budget. Take a snapshot of the cost forecast for next fiscal year. The snapshot becomes immutable; that is the baseline.
  2. Activate it. Mark the snapshot as ACTIVE. The forecast view picks it up automatically when the date range overlaps.
  3. Watch the drift. As live data moves — new hires, contractor rate changes, project allocations — the forecast updates and the drift badges update with it.
  4. Raise a request. When the team needs more headcount or budget than the active snapshot allows, raise a budget request. Affected team managers submit proposals. Approvers sign off.
  5. Take a new snapshot. When the request is finalised, supersede the old snapshot with a new one. The drift resets against the new baseline.

How drift gets calculated

The BudgetVarianceBadge component renders a delta against the active snapshot:

  • Green when delta is negative — you are under budget.
  • Red when delta is positive — you are over budget.
  • Hidden when the delta is below 0.01 (numerical noise).

Cost deltas format in the org's reporting currency. FTE deltas format with one decimal. Both render in font-mono font-semibold because they are values, not labels.

The aggregation behind the badge is computed server-side via forecastBudgetVariance, grouped by team or project. The hook normalises period keys — lowercase, underscores — so they match the period column keys in the forecast table.

What variance tracking is not

  • Not an alert engine. If you want signals routed into Slack or email, configure those in AI Governance > Alerts. Variance shows up in the UI, where decisions get made.
  • Not a forecast. The forecast is its own thing — see Cost Forecast. Variance is the comparison between the forecast and the active budget snapshot.
  • Not a journal entry generator. Flowstate does not push budget movements to your ERP. Use the API for that.

Where to start

  • New to variance tracking? Open budget snapshots and look at the drift summary on the active snapshot.
  • Need to change a budget? Raise a budget request — it routes to team managers for proposal capture.
  • Configuring the cadence? See cost review workflow for review cadence and budget approval setup.

Flowstate Documentation