An income statement tells you the totals, and the totals are usually fine. What it doesn't tell you is the shape underneath. Which accounts in the chart haven't posted in a year. Which expense lines are consuming the margin, and whether they grew faster than revenue. Where a particular customer's revenue flows once it enters the ledger. How much of this year's growth was volume, how much was price, and how much came from customers you didn't have last year.

The Sonar edition of my prompt library added six prompts to the Financial Statement Analysis and Reporting category, and they have that shape in common: each one takes the ledger apart along a different axis. This post is a tour.

If you're new to this, Sonar AI is an AI agent that runs inside NetSuite. Every prompt in the library is a playbook that I engineered and tested against live NetSuite data, and you run it inside your own account, against your own records.

Taking the Statement Apart

Margin Waterfall Decomposition builds the walk from revenue to gross profit to operating income, one line at a time, showing which cost of goods and expense accounts consume the margin. Every step comes from the accounting lines in the ledger rather than a report layout, and the consolidated revenue and operating income are validated against the native income statement before the waterfall is built. Then it ranks the expense lines by their share of revenue and their year-over-year change. The highest-share lines are where a point of improvement is worth the most, and the report says which ones they are.

YoY Revenue Decomposition answers the question that follows any growth number: where did it come from? It splits the change in revenue into volume, price, mix, new customers, and lost customers. New-customer revenue is revenue from customers whose first sale was in the current year. Lost-customer revenue is what customers with prior-year activity and none this year used to bring in. The remainder is decomposed across existing customers. Total revenue is validated against the native income statement, and the prompt is explicit that it won't invent customer counts or components to make the arithmetic close.

Money Flow Sankey Generator draws the whole thing as a river. Individual customers on the left, revenue streams in the middle, then cost of goods, operating expenses, and net income on the right, as an interactive diagram where every ribbon traces to a ledger posting. The rule that makes it trustworthy is that the diagram has to reconcile: flow in equals flow out at every node, and total revenue equals cost of goods plus gross profit. The prompt treats revenue posted without a customer as a finding rather than a nuisance, because revenue that arrived by journal entry is exactly the kind of thing a river diagram is good at exposing. It gets its own ribbon and a drill-down.

Looking at the Chart of Accounts Itself

GL Account Velocity vs Mass is a prompt I'm fond of because it answers a question nobody asks until the chart of accounts has 800 lines. It plots every active account by how often it posts against how many dollars move through it, and sorts them into quadrants. High velocity and high mass are the workhorses. High velocity and low mass are sub-scale clutter, many tiny postings that might belong in a merged account. Low velocity and high mass are seasonal or large, and may be fine. Zero velocity and zero mass are dead candidates. The query has to use an outer join so that accounts with no postings at all show up, because they're the point. What comes out is a chart of accounts review that a controller can act on, with the caveats that any inactivation decision needs a person to confirm the account isn't referenced by a script, a form, or a report.

Writing It Up for People Who Have Five Minutes

KPI Alignment Executive Summary produces a quarterly summary built around six metrics: sales, retention, customer acquisition cost, lifetime value, margin, and net promoter score, or substitutes where a business doesn't track one of them. Revenue, margin, and new-customer counts come from NetSuite queries. Retention, acquisition cost, and survey scores usually don't live in the ledger, so the prompt takes them as inputs and says which source it used. Each metric gets a status against target, on track at 95% or better and at risk between 85% and 95%. The output is one page: a metric of the quarter as the headline, the status dashboard, a root-cause section for anything off track, and an action plan with specific owners and dates. It's designed to be read in five minutes, which is the amount of attention a quarterly summary actually gets.

Two edge cases in the prompt tell you how it thinks. With no target set, it uses the prior period as the baseline and switches to plus-or-minus bands. With only a single quarter of data, it says so, caps its confidence at medium, and recommends trend tracking rather than pretending one point is a trend.

The First Hundred Days

100-Day Plan Financial Baseline is the outlier in the group, because it's built for a moment rather than a cadence: the first deliverable a new CFO owes the sponsor after a private equity acquisition closes. It produces an opening balance sheet snapshot, a run-rate revenue and EBITDA validation against the deal model, ranked working-capital quick wins, a reporting-readiness gap assessment covering the chart of accounts, close cadence, and dimension discipline, a risk register, and a full assumptions and lineage appendix.

What I'd point to is the order of operations. It runs NetSuite's standard financial reports first, then re-derives every figure through SuiteQL and ties the two together. It won't silently fall back to a query if a report fails. It looks for a structural break in the monthly data before annualizing anything, because a go-live in the middle of the trailing twelve months makes a run-rate meaningless. It separates trade balances from migration debris before computing any working capital ratio. And EBITDA has to be defined in writing, with the method used to identify depreciation and amortization stated, because "EBITDA" in a deal model and "EBITDA" in a ledger are often two different numbers.

Wrapping Up

The income statement is a summary, and summaries hide things by design. These six prompts each undo one layer of that summarizing: by account, by expense line, by customer, by driver, by metric, or, in the case of the baseline, by everything at once for one very attentive reader. They share a rule that every figure traces to a query or a report that was run in the same conversation, and I think that rule is what makes the outputs usable in front of a board rather than just interesting.

All six are in the paid tier of the Sonar AI Prompt Library, under Financial Statement Analysis and Reporting: Margin Waterfall Decomposition, YoY Revenue Decomposition, Money Flow Sankey Generator, GL Account Velocity vs Mass, KPI Alignment Executive Summary, and 100-Day Plan Financial Baseline.