Marketing Report & KPI Dashboard
Turn a period of raw numbers into a report leadership can act on — the decisions-you-can-defend layer on top of every other metric. Roll funnel, spend, and pipeline into one KPI snapshot with period-over-period movement, then wrap it in a narrative that says what worked, what didn't, and what you're doing about it. Reporting isn't a scoreboard; it's how the next decision gets made.
When to use
The user needs a board deck, a monthly or quarterly marketing review, a KPI dashboard, or an answer to "how is marketing performing and what do we show leadership?"
Before you start
- Read the brand/product context first (
.agents/product-marketing.md / .agents/aaj-brand.md) for model, motion, and goals, if present.
- Gather one period of numbers:
- Spend (marketing / S&M for the period).
- Funnel volumes in order — sessions, leads, MQLs, SQLs, opportunities, wins (any subset you track).
- New revenue (bookings / ARR / revenue won), pipeline created, and the target for the period.
- The prior period's figures, to compute deltas — the trend usually matters more than the level.
The math
Stage conversion = next stage / previous stage (per adjacent pair)
Overall conversion = wins / first tracked stage
CAC = spend / wins
Cost per lead = spend / leads
New revenue:spend = new revenue / spend (efficiency read, not ROI)
Pipeline:spend = pipeline created / spend
Target attainment = new revenue / target
Delta vs prior = (current − prior) / |prior| (per metric)
Run the engine
Paths assume you installed with npx skills add. From a clone of this repo, use skills/marketing-report/resources/… instead.
node .agents/skills/marketing-report/resources/marketing-report.js # demo (quarter with prior period)
node .agents/skills/marketing-report/resources/marketing-report.js '{"period":"March","spend":40000,"leads":800,"wins":11,"newRevenue":150000}'
node .agents/skills/marketing-report/resources/marketing-report.js --help
It prints the KPI snapshot, the funnel with stage rates, deltas vs prior, a few flags, and a JSON block. Metrics compute only where inputs allow, so partial data still produces a useful report.
Build the report
Structure every marketing report the same way so leadership learns to read it fast:
- Results vs target and prior — lead with the one-number story (attainment, or new revenue vs plan/last period).
- Funnel — where it converts and where it leaks, stage by stage, each against its own trend.
- Efficiency — CAC, cost per lead, new-revenue-to-spend, pipeline-to-spend.
- What changed and why — the two or three moves behind the deltas.
- Actions — what you're doing next, tied to the gaps above.
Every number gets a "so what." A report that lists metrics without a decision is a scoreboard, not a report.
Interpret the result
- Read each stage rate against its own history, never against another stage — a Sessions→Leads rate and an MQL→SQL rate are different orders of magnitude, and comparing them is meaningless.
- New-revenue-to-spend is an efficiency read, not ROI. Revenue often lags the spend that created it, and attribution is imperfect — present it as a ratio with that caveat.
- Trend beats level. A 34% MQL→SQL rate means little alone; up from 28% or down from 41% is the story.
- Attainment frames everything. Above target, ask what to double down on; below, name the gap and the fix.
Present the result
A one-screen snapshot (the KPI table + funnel), then three to five bullets: what worked, what didn't, what you're changing. Show trend arrows, not just values. Own the misses plainly — credibility with a board comes from naming the bad number before they do.
Guardrails & common mistakes
- Don't compare stage rates across orders of magnitude. Use per-stage trends.
- New-revenue-to-spend ≠ ROI. Mind the sales-cycle lag before judging a period.
- Blended vs channel. Blended CAC/efficiency flatters paid; for channel decisions use channel-level numbers, and say which you used.
- Attribution humility. Report what you can defend; don't over-claim credit a model can't support.
- One metric per decision. Kill vanity metrics — if a number won't change an action, cut it from the deck.
- Same basis across periods. Consistent definitions and windows, or the deltas lie.
Related AAJ resources
Related skills
unit-economics (the CAC and LTV this report tracks) · pipeline-and-forecast (the pipeline and coverage feeding it) · paid-media-budget-allocation (where the efficiency read drives reallocation).
Credits
Original AAJ skill. The Agent Skills format and the marketing-skills catalog by Corey Haines (coreyhaines31/marketingskills, MIT) were references for structure and coverage; this skill is independently written. See the repository README for the full reference list.
1---2name: marketing-report3description: Use when the user wants to build a board-ready marketing report, a KPI dashboard, or a monthly/quarterly performance review — turning raw funnel, spend, and pipeline numbers into metrics and a narrative leadership can act on. Also use when the user mentions marketing reporting, KPI dashboard, board deck, marketing metrics, funnel conversion, CAC or ROI reporting, attribution narrative, or "what do I show the board / how is marketing performing." Produces a full-funnel KPI snapshot (stage conversion, CAC, efficiency, attainment) with period-over-period deltas and a decision-focused narrative.4license: MIT5---67# Marketing Report & KPI Dashboard89Turn a period of raw numbers into a report leadership can act on — the decisions-you-can-defend layer on top of every other metric. Roll funnel, spend, and pipeline into one KPI snapshot with period-over-period movement, then wrap it in a narrative that says what worked, what didn't, and what you're doing about it. Reporting isn't a scoreboard; it's how the next decision gets made.1011## When to use1213The user needs a board deck, a monthly or quarterly marketing review, a KPI dashboard, or an answer to "how is marketing performing and what do we show leadership?"1415## Before you start16171. **Read the brand/product context first** (`.agents/product-marketing.md` / `.agents/aaj-brand.md`) for model, motion, and goals, if present.182. **Gather one period of numbers:**19 - **Spend** (marketing / S&M for the period).20 - **Funnel volumes** in order — sessions, leads, MQLs, SQLs, opportunities, wins (any subset you track).21 - **New revenue** (bookings / ARR / revenue won), **pipeline created**, and the **target** for the period.22 - The **prior period's** figures, to compute deltas — the trend usually matters more than the level.2324## The math2526```27Stage conversion = next stage / previous stage (per adjacent pair)28Overall conversion = wins / first tracked stage29CAC = spend / wins30Cost per lead = spend / leads31New revenue:spend = new revenue / spend (efficiency read, not ROI)32Pipeline:spend = pipeline created / spend33Target attainment = new revenue / target34Delta vs prior = (current − prior) / |prior| (per metric)35```3637## Run the engine3839> Paths assume you installed with `npx skills add`. From a clone of this repo, use `skills/marketing-report/resources/…` instead.4041```bash42node .agents/skills/marketing-report/resources/marketing-report.js # demo (quarter with prior period)43node .agents/skills/marketing-report/resources/marketing-report.js '{"period":"March","spend":40000,"leads":800,"wins":11,"newRevenue":150000}'44node .agents/skills/marketing-report/resources/marketing-report.js --help45```4647It prints the KPI snapshot, the funnel with stage rates, deltas vs prior, a few flags, and a JSON block. Metrics compute only where inputs allow, so partial data still produces a useful report.4849## Build the report5051Structure every marketing report the same way so leadership learns to read it fast:52531. **Results vs target and prior** — lead with the one-number story (attainment, or new revenue vs plan/last period).542. **Funnel** — where it converts and where it leaks, stage by stage, each against its own trend.553. **Efficiency** — CAC, cost per lead, new-revenue-to-spend, pipeline-to-spend.564. **What changed and why** — the two or three moves behind the deltas.575. **Actions** — what you're doing next, tied to the gaps above.5859Every number gets a "so what." A report that lists metrics without a decision is a scoreboard, not a report.6061## Interpret the result6263- **Read each stage rate against its own history**, never against another stage — a Sessions→Leads rate and an MQL→SQL rate are different orders of magnitude, and comparing them is meaningless.64- **New-revenue-to-spend is an efficiency read, not ROI.** Revenue often lags the spend that created it, and attribution is imperfect — present it as a ratio with that caveat.65- **Trend beats level.** A 34% MQL→SQL rate means little alone; up from 28% or down from 41% is the story.66- **Attainment frames everything.** Above target, ask what to double down on; below, name the gap and the fix.6768## Present the result6970A one-screen snapshot (the KPI table + funnel), then three to five bullets: what worked, what didn't, what you're changing. Show trend arrows, not just values. Own the misses plainly — credibility with a board comes from naming the bad number before they do.7172## Guardrails & common mistakes7374- **Don't compare stage rates across orders of magnitude.** Use per-stage trends.75- **New-revenue-to-spend ≠ ROI.** Mind the sales-cycle lag before judging a period.76- **Blended vs channel.** Blended CAC/efficiency flatters paid; for channel decisions use channel-level numbers, and say which you used.77- **Attribution humility.** Report what you can defend; don't over-claim credit a model can't support.78- **One metric per decision.** Kill vanity metrics — if a number won't change an action, cut it from the deck.79- **Same basis across periods.** Consistent definitions and windows, or the deltas lie.8081## Related AAJ resources8283- Pipeline forecast: https://aajconsult.com/tools/pipeline-forecast-calculator84- Unit economics: https://aajconsult.com/tools/unit-economics-calculator8586## Related skills8788`unit-economics` (the CAC and LTV this report tracks) · `pipeline-and-forecast` (the pipeline and coverage feeding it) · `paid-media-budget-allocation` (where the efficiency read drives reallocation).8990## Credits9192Original AAJ skill. The Agent Skills format and the marketing-skills catalog by Corey Haines (`coreyhaines31/marketingskills`, MIT) were references for structure and coverage; this skill is independently written. See the repository README for the full reference list.