Skip to content
312+ businesses automated avg. 14h/week savedManual workflows cost the average team €560/week fix it in 10 daysDeployed in 5–10 business days · 30-day money-back guaranteeDental · Real Estate · Agencies · E-commerce · Covered99.97% uptime SLA · Monitored 24/7 by our ops teamA full-time ops hire costs €50K+/yr PURIST delivers more in daysn8n · Make · Claude AI · 500+ workflow templatesFree automation audit limited to 5 spots this week312+ businesses automated avg. 14h/week savedManual workflows cost the average team €560/week fix it in 10 daysDeployed in 5–10 business days · 30-day money-back guaranteeDental · Real Estate · Agencies · E-commerce · Covered99.97% uptime SLA · Monitored 24/7 by our ops teamA full-time ops hire costs €50K+/yr PURIST delivers more in daysn8n · Make · Claude AI · 500+ workflow templatesFree automation audit limited to 5 spots this week312+ businesses automated avg. 14h/week savedManual workflows cost the average team €560/week fix it in 10 daysDeployed in 5–10 business days · 30-day money-back guaranteeDental · Real Estate · Agencies · E-commerce · Covered99.97% uptime SLA · Monitored 24/7 by our ops teamA full-time ops hire costs €50K+/yr PURIST delivers more in daysn8n · Make · Claude AI · 500+ workflow templatesFree automation audit limited to 5 spots this week
PURIST
312+
Clients automated
14 h/wk
Avg time saved
99.97%
Uptime SLA
< 7 days
Deploy time
PURIST AI
Claude Opus 4.7 · n8n v1.71 · <80ms
What type of business are you running? I'll show you exactly which processes we'd automate first and your estimated ROI.
Powered by n8n + Claude Opus 4.7 Get my free automation plan →

Finance & Strategy

Expert · 26 nodes

Board Reporting & KPI Consolidation

A 26-node monthly pipeline that pulls MRR, pipeline and P&L data from three systems, drafts a board deck with AI variance commentary, and gates everything behind a human sign-off before distribution.

StripeHubSpotXeroGoogle SlidesSlackDocSendAirtable
We deploy it for you

Free download, just your email, no spam, unsubscribe anytime.

Board reporting is the single most senior deliverable most finance and RevOps teams produce, and it is still assembled by hand in most companies, an analyst pulling exports from Stripe, HubSpot and Xero into a spreadsheet, then rebuilding the same slides every month. This workflow automates the assembly, the variance calculation, and even a first-draft explanation of what moved and why, while keeping a human firmly in control of what actually reaches the board.

Workflow diagram

flowchart TD
  A[Monthly Trigger] --> B[Pull Stripe MRR]
  A --> C[Pull HubSpot Pipeline]
  A --> D[Pull Xero P&L]
  B --> E[Merge Data Sources]
  C --> E
  D --> E
  E --> F[Calculate MRR & Growth]
  F --> G[Calculate Pipeline Metrics]
  G --> H{Data Quality OK?}
  H -->|No| I[Flag Finance] --> J[Wait For Fix] --> K[Compare Prior Month]
  H -->|Yes| K
  K --> L[Compare Against Budget]
  L --> M{Variance > 10%?}
  M -->|Yes| N[AI Variance Commentary]
  M -->|No| O[Merge Commentary]
  N --> O
  O --> P[Build KPI Table]
  P --> Q[Generate Slides Deck]
  Q --> R[Populate Charts]
  R --> S[Export PDF]
  S --> T[CEO Review Gate]
  T --> U{Approved?}
  U -->|Yes| V[Distribute To Board]
  U -->|No| W[Request Revisions]
  V --> X[Log Distribution]

Every branch shown here (IF/Switch outcomes) exists as a real conditional in the downloadable JSON, not a simplification for this diagram.

Why board decks are a bad place to save time carelessly

Most back-office automation optimises for speed above all else. Board reporting is the exception: the audience is small, senior, and reads every number closely, so the workflow is designed around accuracy and reviewability first, speed second. That shows up in three deliberate choices: a data quality gate before any calculation happens, an explicit human approval gate before distribution, and a full audit log of what was sent to whom.

The monthly schedule trigger fires on the 1st at 06:00, early enough that a data problem discovered by the Data Quality Check node still leaves days to fix it before the board meeting, rather than finding out the afternoon before.

Consolidating three systems that were never meant to talk

Stripe knows recurring revenue. HubSpot knows the sales pipeline. Xero knows the actual profit and loss. None of the three has any concept of the other two, and a board wants all three synthesised into one coherent story: revenue, forward pipeline coverage, and whether the business is actually profitable doing it.

The three pulls run in parallel and rejoin at Merge Data Sources, then two Code nodes calculate the metrics a board actually asks about, MRR and net revenue retention from the Stripe side, win rate and pipeline coverage from HubSpot. Keeping these as separate, named calculation steps rather than one large script makes the model auditable, a finance team member can read exactly how NRR was derived without reverse-engineering a black box.

Variance commentary: where AI earns its place carefully

The Variance Exceeds Threshold? gate is deliberate: an AI-drafted explanation is generated only for line items that moved more than 10% against budget, not for every metric on every run. This keeps the AI's job narrow and checkable, explain this one specific, material movement, rather than narrating an entire business.

Every AI-drafted commentary still passes through the CEO Review Gate before the deck goes anywhere. This workflow never sends a board communication without a human confirming it, the Wait node pauses on a webhook that only fires when someone actually approves, and an Approved? branch routes rejected drafts back for revision rather than distributing a first draft under pressure of a deadline.

Node-by-node reference

Node Type Role
Monthly Schedule Trigger Schedule Trigger Fires day one of each month, early morning
Pull Stripe / HubSpot / Xero HTTP Request ×3 Parallel pulls of revenue, pipeline and P&L data
Calculate MRR & Growth Code MRR, net revenue retention, month-over-month growth
Data Quality Check IF Blocks calculation on missing fields rather than reporting bad numbers
Compare Against Budget Set Computes variance percentage per line item
Variance Exceeds Threshold? IF Gates AI commentary to genuinely material movements
Generate Variance Commentary (AI) HTTP Request Claude drafts an explanation for flagged variances only
Generate Board Deck HTTP Request Populates a Google Slides template programmatically
CEO Review Gate Wait (webhook resume) Nothing ships without explicit human approval
Distribute To Board Members HTTP Request Sent via a tracked data-room link, not a plain attachment

26 total nodes in the downloadable file, including sticky-note documentation embedded directly on the canvas.

Key logic, in code

Net revenue retention calculation

const startingMrr  = $json.startingMrr;
const expansion    = $json.expansionMrr;
const contraction  = $json.contractionMrr;
const churnedMrr   = $json.churnedMrr;

const nrr = ((startingMrr + expansion - contraction - churnedMrr) / startingMrr) * 100;

return [{
  json: {
    ...$json,
    nrr: Number(nrr.toFixed(1)),
    nrrHealthy: nrr >= 100,  // below 100% means existing customers are net-shrinking
  }
}];

Budget variance gate

const actual = $json.actual;
const budget = $json.budget;
const variance = ((actual - budget) / budget) * 100;

return [{
  json: {
    ...$json,
    budgetVariance: Number(variance.toFixed(1)),
    needsCommentary: Math.abs(variance) > 10,
  }
}];

Before / after

Metric Before After this workflow
Time to assemble board pack 2-3 days of analyst time Under 2 hours, mostly review
Data consistency across sources Manual copy-paste, error-prone Pulled and calculated identically every month
Variance explanations Written under deadline pressure Drafted automatically, human-refined
Distribution tracking None, email attachment Per-board-member view analytics

Prerequisites

  • n8n v1.40+ with Switch v3 and webhook-resume Wait support
  • Read-only Stripe, HubSpot and Xero API credentials
  • Anthropic API key for variance commentary
  • Google Slides/Docs OAuth2 with a board-deck template already built
  • DocSend or equivalent tracked document-sharing API, Slack bot token, Airtable PAT

Common pitfalls

Never let this auto-send without the review gate

The CEO Review Gate is the entire safety mechanism. Removing it to "save time" turns a drafting tool into an uncontrolled board communication channel.

Budget data must be current

A stale budget in Xero makes every variance calculation meaningless. Confirm the current fiscal year budget is loaded before the first run each year.

AI commentary needs a fact-check pass

The model explains movements based on the data it is given, it cannot know about a one-off event nobody logged anywhere. Treat its output as a first draft, always.

Want this deployed, configured and monitored?

The template is free. Wiring in your real credentials, tuning the logic to your business, and keeping it running when an upstream API changes is what we do.

Get my free automation plan →

Frequently asked questions

Can this work with QuickBooks or NetSuite instead of Xero?

Yes, only the P&L pull node changes. The consolidation, variance and approval logic is accounting-system agnostic.

How is the deck template customised?

Generate Board Deck duplicates a Google Slides template you control, so your existing branding, slide order and chart types carry over automatically.

What happens if a board member never opens the deck?

DocSend-style tracking makes that visible in Log Distribution, letting IR or the CEO follow up specifically rather than assuming everyone read it.