TLDR: We built a Claude skill that writes monthly variance commentary from your actual Xero/NetSuite data. You give it a P&L line and a period, it pulls actuals vs budget, checks a driver taxonomy your team maintains, and writes the narrative.
Want to skip the read and get straight to it?
In the last post I talked about getting your financial data clean enough that AI can actually produce trustworthy outputs. This post is the practical follow-up: we built the thing.
It’s a Claude skill package that generates monthly variance commentary. Actual vs forecast, actual vs prior year, whatever comparison you need. You give it a P&L line item and a period, and it writes the narrative your CFO or board is expecting, backed by real data from your Xero or NetSuite instance.
We’ve been using it internally and with a handful of finance teams over the past few weeks. It works. But more interesting than what it does is how it’s structured, because that’s where most AI-in-finance projects fall apart.
The problem with prompting your way to variance commentary
Most finance teams who try AI for variance analysis start the same way. They paste a P&L into Claude or ChatGPT, write a prompt like “explain the variances,” and get back something that reads like a first-year analyst who skimmed the numbers but doesn’t actually know the business.
The output is technically correct but operationally useless. It’ll tell you revenue is up 12%. You already knew that. What you need to know is why revenue is up 12%, whether it’s new customers or expansion or a pricing change, and whether the driver is sustainable or one-off.
That “why” requires context that doesn’t exist in the spreadsheet. It lives in your team’s heads, your tracking categories, your prior reports, your understanding of what drives each line item in your specific business.
So we built a system that gives Claude all of that context before it even looks at the numbers.
Two parts: a skill and a context pack
The package has two components that move independently.
The skill is the logic. It’s a Claude plugin that knows how to pull actuals from your accounting software, pull the budget from your Google Drive workbook, calculate variances, and write commentary using a specific narrative structure. When Pulsify updates the skill (better prompting, new output formats, tighter validation), you get the update without touching your business data.
The context pack is your business knowledge. It’s a folder of seven plain-text files that describe your chart of accounts, your tracking categories, what drives each P&L line, your materiality thresholds, your internal glossary, and pointers to where your budget workbook and prior reports live. The FP&A lead owns this folder and controls who can edit it.
The separation matters. Your org-specific knowledge changes on a different cadence from the skill logic. The FP&A lead updates drivers.md when a new cost driver appears. The controller updates chart-of-accounts.csv when accounts change. Neither of them needs to touch the plugin, and plugin updates don’t overwrite their work.
The driver taxonomy is the most important file
The file called drivers.md is where the quality lives. For each P&L line, it declares:
- What the volume driver is (e.g. active enterprise customers)
- What the rate or price driver is (e.g. ARPU)
- Where the supporting data lives (e.g. a Salesforce report, an AWS Cost Explorer tag)
- What a favourable variance usually means, in ranked order
- What an unfavourable variance usually means, in ranked order
When the skill writes commentary, it walks the driver candidates in order. For each one, it checks the data source. The first candidate the data confirms becomes the lead of the narrative. The rest are secondary contributors. Only if every listed candidate is ruled out does the skill go searching for something unlisted, and in that case it asks the cost-centre owner before writing.
This is the opposite of how most people prompt AI. Instead of saying “figure out what happened,” you’re saying “here are the seven things that usually cause this line to move, check them in this order.” The AI does the legwork. The human defined the framework.
The driver map starts rough and gets better. After each monthly close, you scan the report. If a driver appeared that isn’t in the taxonomy, you add it. Over time the taxonomy converges on a complete picture of what actually moves your P&L, which is useful well beyond AI commentary.
Setup
You hand-author three files: your chart of accounts (export from Xero, paste in), your tracking categories, and a description of where your budget workbook lives and how it’s laid out. Drop 3-5 of your recent variance reports into a folder.
On first run, the skill reads your prior reports and drafts the other files for you: the driver taxonomy, the glossary, the materiality thresholds. You review the diffs, accept or edit, and you’re done. It also auto-discovers your Xero org ID, tracking category IDs, and budget workbook ID so you don’t have to copy-paste UUIDs.
Why plain text files and not a database
We could have built a configuration UI. A web form where you fill in your drivers, your thresholds, your account mappings. We deliberately didn’t.
Plain text files in a Google Drive folder have three properties that matter for finance teams:
- Version history is automatic. Google Drive tracks every edit. When the auditor asks “what changed in the driver taxonomy between March and April,” you can show them the revision history.
- Permissions are granular. The FP&A lead can edit
drivers.md. The analyst can read it but not change it. The controller ownschart-of-accounts.csv. Standard Drive sharing controls. - The format is readable by humans and machines. A markdown file or a CSV is something your team can open, read, and understand without logging into another platform. If the skill breaks or Claude goes down, the context pack is still useful on its own. It’s a documented knowledge base of how your P&L works.
The context pack is essentially an operating manual for your finance function that happens to also be machine-readable. That has value independent of the AI.
What the output looks like
You run something like:
/pulsify-finance-skills:variance-analysis "Net revenue" April 2026 vs forecast
The skill pulls actuals from Xero, pulls the budget from your Google Drive workbook, reads your context pack, and produces commentary. It asks whether you want the output as an email, a document, a workbook tab, or a slide. The narrative follows a consistent structure: headline variance, primary driver with data, secondary contributors, and a forward-looking note if the driver is expected to persist or reverse.
The first output is rarely perfect. But it’s 80-90% of the way there, and editing a draft is categorically faster than writing from scratch while toggling between three systems.
Get the package
Get the Pulsify Finance Skills Package
Enter your email and we’ll send you the full package: the Claude plugin, context pack template, worked example, and implementation guide.