Start
Your first report
A walk through the coffee-roaster example — what the report found and how to check it.
examples/coffee-roaster is a specialty roaster’s first half of 2026: 6,260 order lines in a workbook (plus the owner’s monthly summary), a wholesale price list (PDF), an email from a hotel customer, and operations notes (DOCX). Its answer key says a correct report finds:
- revenue −17.9% in April, driven by wholesale after a hotel group paused its standing order over the price rise;
- the refund rate rising from 1.2% to 3.4% after a packaging supplier switch;
- a ×1000 typo in the costs, and dd/mm dates that are ambiguous.
The headline finding
Section titled “The headline finding”The numbers below are facts the engine computed on the example (with the scripted planner, no LLM, so the page is reproducible); click a citation to see what it points at.
Click a citation · Revenue fell after March, driven by wholesale
Every number above is a fact computed by SQL; every citation opens what it points at.
Why revenue fell
Section titled “Why revenue fell”The change is split by customer with contribution.v1. One customer accounts for more than 100% of the drop because others grew:
Contribution by channel · Revenue fell after March, driven by wholesale
- Revenue 2026-03$44,100 N12
- wholesale−$8,500 N144108% of the change N147
- retail$600 N145−7.6% of the change N148
- Revenue 2026-04$36,200 N11
Both totals are drawn from a broken axis (≈), so the changes show at their own scale. Each change and its share are contribution.v1 facts recomputed by the verifier. The members drawn are all of them: their changes are the decomposition's total, −$7,900 N146.
Checking a number
Section titled “Checking a number”Every number in the HTML report opens a panel with its SQL, parameters and input rows. From the terminal:
bun run aa explain <job-id> N12 # the SQL, the definition, the rows behind N12bun run aa ask <job-id> "why did refunds rise?"aa ask answers with claims that pass the same verifier as the report.