Skill Tracer
Skills › Knowledge Work Plugins › report-builder › report_spec.md

report_spec.md

109 lines · small-business/skills/report-builder/reference/report_spec.md at 2574e29

Open on GitHub
1# Report Spec Format
2
3Every report resolves to this structure before any data is pulled. The spec is what gets saved, and it's what makes a report repeatable.
4
5---
6

Report Spec Format

Every report resolves to this structure before any data is pulled. The spec is what gets saved, and it's what makes a report repeatable.


Raw lines 1 to 6
7## The format
8
9```
10Report name: <short, owner-recognizable>
11Cadence: one-off | weekly | monthly | quarterly
12Period: <the window each run covers>
13Comparison: <prior period | same period last year | target | none>
14Grouping: <dimension, or none>
16Metrics:
17 <name> = <formula> [source]
18 <name> = <formula> [source]
20Sources: <connectors used, or "uploaded file">
21Notes: <anything the owner clarified>
22```
24---

The format

Report name:  <short, owner-recognizable>
Cadence:      one-off | weekly | monthly | quarterly
Period:       <the window each run covers>
Comparison:   <prior period | same period last year | target | none>
Grouping:     <dimension, or none>

Metrics:
  <name>  =  <formula>  [source]
  <name>  =  <formula>  [source]

Sources:      <connectors used, or "uploaded file">
Notes:        <anything the owner clarified>

Raw lines 7 to 25
26## Worked example 1 — the classic
28**Owner said:** "Every Monday: sales by location vs last year, AR aging, labor percent."
30```
31Report name: Monday operating pack
32Cadence: weekly, Monday
33Period: trailing 7 days
34Comparison: same 7 days last year
35Grouping: location
37Metrics:
38 Sales = sum of invoice totals, excluding tax [QuickBooks]
39 AR aging = open invoices bucketed 0-30 / 31-60 / 61+ days past due [QuickBooks]
40 Labor percent = payroll expense / net revenue [QuickBooks]
42Sources: QuickBooks
43Notes: Labor measured against revenue, not total costs (confirmed).
44 AR aging is company-wide, not split by location.
45```
47Note what was inferred and what was asked. Metric, grouping, and comparison came straight from the sentence. Only the labor denominator and the AR grouping needed a question.
49---

Worked example 1 — the classic

Owner said: "Every Monday: sales by location vs last year, AR aging, labor percent."

Report name:  Monday operating pack
Cadence:      weekly, Monday
Period:       trailing 7 days
Comparison:   same 7 days last year
Grouping:     location

Metrics:
  Sales          =  sum of invoice totals, excluding tax   [QuickBooks]
  AR aging       =  open invoices bucketed 0-30 / 31-60 / 61+ days past due   [QuickBooks]
  Labor percent  =  payroll expense / net revenue          [QuickBooks]

Sources:      QuickBooks
Notes:        Labor measured against revenue, not total costs (confirmed).
              AR aging is company-wide, not split by location.

Note what was inferred and what was asked. Metric, grouping, and comparison came straight from the sentence. Only the labor denominator and the AR grouping needed a question.


Raw lines 26 to 50
51## Worked example 2 — no connectors
53**Owner said:** "I need a monthly report showing which products make the most money."
55```
56Report name: Monthly product profitability
57Cadence: monthly, first business day
58Period: prior calendar month
59Comparison: prior month
60Grouping: product
62Metrics:
63 Revenue = sum of line totals by SKU [uploaded sales CSV]
64 Units = sum of quantity by SKU [uploaded sales CSV]
65 Gross margin = (revenue - COGS) / revenue [uploaded sales CSV]
67Sources: uploaded file — monthly sales export
68Notes: COGS column must be present in the export. If absent, report
69 revenue and units only and say margin is unavailable.
70```
72The no-connector path produces exactly the same shape of spec. Nothing about the report is degraded except where the data itself is missing.
74---

Worked example 2 — no connectors

Owner said: "I need a monthly report showing which products make the most money."

Report name:  Monthly product profitability
Cadence:      monthly, first business day
Period:       prior calendar month
Comparison:   prior month
Grouping:     product

Metrics:
  Revenue       =  sum of line totals by SKU        [uploaded sales CSV]
  Units         =  sum of quantity by SKU           [uploaded sales CSV]
  Gross margin  =  (revenue - COGS) / revenue       [uploaded sales CSV]

Sources:      uploaded file — monthly sales export
Notes:        COGS column must be present in the export. If absent, report
              revenue and units only and say margin is unavailable.

The no-connector path produces exactly the same shape of spec. Nothing about the report is degraded except where the data itself is missing.


Raw lines 51 to 75
76## Worked example 3 — pipeline, cross-source
78**Owner said:** "Show me every month how the pipeline is converting and what it's actually worth."
80```
81Report name: Monthly pipeline conversion
82Cadence: monthly
83Period: prior calendar month
84Comparison: prior month
85Grouping: deal stage
87Metrics:
88 Deals entered = count of deals created in period [HubSpot]
89 Deals won = count of deals closed-won in period [HubSpot]
90 Win rate = deals won / deals resolved [HubSpot]
91 Weighted pipeline = sum of (deal value x stage probability) [HubSpot]
92 Revenue realized = invoices paid in period [QuickBooks]
94Sources: HubSpot, QuickBooks
95Notes: Revenue realized is deliberately from the books, not the CRM.
96 CRM deal values are forecasts; invoices are facts.
97```
99---

Worked example 3 — pipeline, cross-source

Owner said: "Show me every month how the pipeline is converting and what it's actually worth."

Report name:  Monthly pipeline conversion
Cadence:      monthly
Period:       prior calendar month
Comparison:   prior month
Grouping:     deal stage

Metrics:
  Deals entered     =  count of deals created in period       [HubSpot]
  Deals won         =  count of deals closed-won in period    [HubSpot]
  Win rate          =  deals won / deals resolved             [HubSpot]
  Weighted pipeline =  sum of (deal value x stage probability) [HubSpot]
  Revenue realized  =  invoices paid in period                [QuickBooks]

Sources:      HubSpot, QuickBooks
Notes:        Revenue realized is deliberately from the books, not the CRM.
              CRM deal values are forecasts; invoices are facts.

Raw lines 76 to 100
101## Rules that keep specs honest
103**Every metric names its source.** A metric without a source is a metric nobody can reproduce next month.
105**Formulas are written out, not implied.** "Labor percent" means nothing on its own. "Payroll expense divided by net revenue" can be checked.
107**Ambiguity gets recorded in Notes, not silently resolved.** When the owner clarifies something, write down what they said. Six months later that note is the only record of why the number is calculated the way it is.
109**One report, one purpose.** If an owner describes eight unrelated metrics, that is probably two reports. Suggest the split rather than building one unreadable pack.

Rules that keep specs honest

Every metric names its source. A metric without a source is a metric nobody can reproduce next month.

Formulas are written out, not implied. "Labor percent" means nothing on its own. "Payroll expense divided by net revenue" can be checked.

Ambiguity gets recorded in Notes, not silently resolved. When the owner clarifies something, write down what they said. Six months later that note is the only record of why the number is calculated the way it is.

One report, one purpose. If an owner describes eight unrelated metrics, that is probably two reports. Suggest the split rather than building one unreadable pack.

Raw lines 101 to 109