Skip to main content

Most variance is timing, and reporting it as overspend costs credibility

A budget line that looks overspent in March is often an annual invoice that belongs in April. The variance is real and still a false alarm. After this happens three times, the budget owner stops opening the alerts.

To tell timing from real overspend, you need to know what was expected in that period. A budget that gives only annual totals cannot do this. Only a budget spread across periods can.

Percentage thresholds mislead in both directions. A deviation of forty percent on a small line is noise. A deviation of three percent on the largest line is the figure that counts. A single percentage rule reports the wrong one.

The cumulative position matters more than the individual periods. Five percent above for five months is a trend. Each individual month still looks acceptable.

How the ActionFlow runs on the canvas

A Start Scheduled trigger reads budget lines and actuals together. A Google Sheets or PostgreSQL node holds the phased budget, with an owner and a threshold for each line. A further read pulls actuals from the ledger.

A Math node computes three figures per line, not one: period variance, cumulative variance, and variance as both an amount and a percentage. Most budget alerting goes wrong by reporting only one of these.

Thresholds sit on the rows rather than in the flow because each line uses its own threshold.

A Google Sheets node supplies commitments and expected invoices for the period. A Generate Object node uses them to classify each variance as timing or genuine, and returns the classification with the evidence.

An If node splits the two branches. Genuine variances go to the line owner through Slack, with the amount, the cumulative position, and the reason for the classification. Timing variances are logged and not reported.

A Notion node saves a picture each month, so cumulative drift is still visible even when no individual month exceeded the threshold.

Nodes this ActionFlow uses

  • Start Scheduled: runs the check on the reporting cycle.
  • Google Sheets (Integration): holds the phased budget with owner and threshold per line.
  • PostgreSQL (Data): supplies actuals from the ledger. MySQL fits the same slot.
  • Math (Util): computes period variance, cumulative variance, amount, and percentage.
  • Filter (Data): applies each line's own threshold rather than one global rule.
  • Generate Object (AI Core): classifies each variance as timing or genuine, with evidence.
  • If (Control): notifies genuine variances and logs timing ones silently.
  • Slack (Communication): reaches the line owner with amount, cumulative position, and reasoning.

Frequently asked questions

Start building AI workflows

Create a free account, open a template or a blank canvas, and run your first ActionFlow.

Newsletter

Get product updates

New nodes, agents, and product notes. We send mail only when we have something worth opening.

Unsubscribe at any time.