Monthly Xero P&L variance narrative for leadership

By General Input

On the first business day of each month, get a written variance narrative comparing last month's P&L to the prior month and budget, sent to Slack and the CFO.

Integrations

  • Xero
  • Slack Bot
  • Gmail

Type

Agentic Task

Categories

  • Finance

On the first business day of each month at 9am local time, produce a written variance narrative comparing last month's Profit and Loss against the prior month and against budget, then share it with the leadership team via Slack and email. If the first calendar day of the month falls on a weekend or public holiday, run on the next business day instead.

Data to pull from Xero: run the Profit and Loss Report for last month, run the Profit and Loss Report for the prior month (as the comparative baseline), and run the Budget Summary Report for the same window. If the Profit and Loss Report supports comparative periods in a single call, use that; otherwise pull the two months as separate calls.

Xero returns date fields in the .NET JSON format like /Date(1551830400000+0000)/. Parse the millisecond timestamp before using any date value in the narrative. Money fields are returned as decimal numbers (not cents), and account IDs are opaque GUIDs.

The Profit and Loss report and the Budget Summary report are separately scoped on Xero, so make sure the Xero connection was granted access to both reports when it was set up. If the Budget Summary call comes back empty, the org likely has not loaded a budget for the period, and the narrative should say so plainly rather than skipping the budget comparison silently.

The narrative should read as a plain-English brief for a CEO and leadership team, not a variance table. Cover, in this order:

  • Revenue movement by top revenue account: which lines drove the number and which changed the most against the prior month and budget.

  • Expense movement by category, grouping related accounts sensibly (payroll, marketing, software, contractors, occupancy, and so on). Interpret the direction rather than just listing accounts.

  • Unusual variance items: any single account line that moved by more than the variance threshold versus budget or versus the prior month. For each, name the account, the size of the swing, the plausible driver, and whether it warrants a look.

  • One open question worth flagging on the leadership call: something concrete finance should raise, not a generic 'let us discuss' placeholder.

Once the narrative is written, post it to the configured finance Slack channel using Slack Bot's Send a Message action, and email the same body to the configured CFO email address using Gmail's Send a Message action. Use the same content in both places so leadership reads the same brief wherever they see it. Keep the Slack version formatted for that channel (short paragraphs, mrkdwn if useful) and the Gmail version as a clean plain-text or lightly formatted email.

Expose these as customer-set variables so different organisations can tune the workflow:

  • Fiscal year end (so month boundaries and the current-versus-prior comparison line up with the org's accounting).

  • Finance Slack channel to post into.

  • CFO email address to send to.

  • Variance threshold (default 20%) that decides which line items are called out as unusual.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client account