Feed in a period's budget line items — budgeted vs. actual, plus whatever notes finance already has — and get back a severity call, a plain-English explanation, a next-period forecast, and a drafted message to the owner, for every single line.
The variance percentage and severity aren't left to the model to compute — a code node calculates them first, along with a simple statistical baseline forecast (an average of actuals). Claude never sees a blank slate; it explains, refines, and drafts, but it doesn't do the arithmetic.
One straight path from intake to analysis, then the array of line items splits into individual items that fan out to two places at once: the archive, and the response.
budget_variance_forecast Data Table, one row per line item.The departments, categories, and dollar figures below are made-up test data, not a real company's books. The variance math is deterministic (not AI); the explanations, forecasts, and drafted messages are genuine, unscripted Claude output — each one is what it actually produced from running that line item through the live workflow.
The same Claude call that explains each variance and refines the forecast also drafts what happens next, toned to severity: an urgent alert for the two line items above 15% variance, a lower-key heads-up for the two in the 5–15% band, and a brief FYI for the two tracking close to budget. Nothing goes unaddressed — even the two line items that came in essentially on budget got a real drafted note, not silence.
budget_variance_forecast? It's a Data Table — a lightweight database built directly into this n8n workspace, not a separate external system. It lives inside this n8n project, viewable in n8n's own Data Tables screen and reachable by any other workflow in the same project. It isn't exposed to the public internet on its own — the only way anything outside n8n sees this data is through what a workflow deliberately sends back out, like the drafted messages above.
| department | category | variance | severity | forecast | notes |
|---|---|---|---|---|---|
| Marketing | Digital Advertising | +36% | alert | $68,000 | Unplanned campaign, spend intentionally sustained into Q4. |
| Engineering | Cloud Infrastructure | +21.25% | alert | $97,000 | Viral launch drove a sustained traffic step-change. |
| Marketing | Content Production | +6% | watch | $16,400 | Mid-quarter freelancer rate hike, full effect still ahead. |
| Facilities | Utilities | +17.5% | alert | $8,200 | Heat-wave driven, expected to ease next period. |
| Engineering | Software Licenses | −1.67% | ok | $11,800 | No changes to license mix; stable run-rate. |
| Facilities | Office Rent | 0% | ok | $45,000 | Fixed lease, no changes. |
Nothing here runs on a manual trigger in production. Real budget-vs-actual data has to reach this pipeline on a schedule, and the analysis has to land somewhere finance actually works from.
Adaptive Insights, Planful, Vena, and even a well-built spreadsheet already show budget-vs-actual variance and support rolling forecasts, and at a company with one of those in place and used well, this workflow isn't a replacement for it.
Where a custom pipeline like this earns its place: native variance reports show you the number and leave the explaining and outreach to a human — they don't read the qualitative notes finance already has, don't distinguish a one-time spike from a new run-rate when forecasting, and don't draft the actual message to the budget owner. This build is the shape you reach for when you want that explanation and outreach automated and tuned to your own severity thresholds, without migrating your budget into a new platform.