// execute
Marketing Report & KPI Dashboard
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.
npx skills add sarojkjha/aaj-marketing-skills --skill marketing-reportClaude Code
/plugin marketplace add sarojkjha/aaj-marketing-skills/plugin install aaj-marketing-skills@aajOpenAI Codex
codex plugin marketplace add sarojkjha/aaj-marketing-skillscodex plugin add aaj-marketing-skills@aajClaude or ChatGPT — no install
Add this as a custom connector:
https://aaj-engines-mcp.sarojkjha10.workers.dev/mcp// when to use it
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.
// what you give
One period of spend, funnel volumes (sessions, leads, MQLs, SQLs, opps, wins — any subset), new revenue, pipeline created, and target; plus the prior period for deltas
// what you get
A full-funnel KPI snapshot (stage conversion, CAC, cost per lead, new-revenue-to-spend, pipeline-to-spend, target attainment), period-over-period deltas, and a board-ready narrative structure
Engine spec
// decision it supports
How did marketing perform this period against target and the prior period, and where is the funnel leaking?
// inputs
One period of spend, funnel volumes (sessions, leads, MQLs, SQLs, opps, wins — any subset), new revenue, pipeline created, and target; plus the prior period for deltas
// output
A full-funnel KPI snapshot (stage conversion, CAC, cost per lead, new-revenue-to-spend, pipeline-to-spend, target attainment), period-over-period deltas, and a board-ready narrative structure
// acts or analyzes
Analyzes onlyMakes no network calls, writes no files and changes nothing in your tools.
// where your information goes
| How you run it | Where your inputs go |
|---|---|
| Skill installed in your agent, or the local MCP server | The engine runs on your machine and AAJ receives nothing. Your AI agent still sends what you give it to its model provider (Anthropic, OpenAI and so on), under your own account's terms. |
| Hosted MCP server | Your agent's model provider, as above, plus AAJ's server on Cloudflare, which receives the engine inputs over HTTPS, runs them in memory and keeps no copy. Cloudflare keeps error logs (no inputs) for up to 7 days. |
No engine needs customer names, emails or other personal data; leave them out.
// limitations
- CAC is total spend over total wins, a blended figure that flatters paid channels. Use channel-level numbers for channel decisions and say which you used.
- Every ratio uses same-period numbers. New revenue : spend is an efficiency read, not ROI; with a long sales cycle, this period's wins came from earlier spend and leads.
- Unknown fields ("MQLs" for "mqls"), non-numbers and a stage larger than the one before it stop the run. A stage you leave out is skipped and the stage rate is computed across the gap.
- Deltas assume the prior period used the same definitions and windows. The engine cannot check that.
// review before acting
// setup
npx skills add sarojkjha/aaj-marketing-skills --skill marketing-reporthttps://aaj-engines-mcp.sarojkjha10.workers.dev/mcpAgents listed: Claude Code, Cursor, OpenAI Codex, Windsurf, Cline. Tested and recorded: Claude Code.
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, useskills/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
- Pipeline forecast: https://aajconsult.com/tools/pipeline-forecast-calculator
- Unit economics: https://aajconsult.com/tools/unit-economics-calculator
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).
// faq
// install
npx skills add sarojkjha/aaj-marketing-skills --skill marketing-report// run it
node .agents/skills/marketing-report/resources/marketing-report.js --demo// worked example
Get the worked example for Marketing Report & KPI Dashboard
One email. The filled-in config, the output, and how to read it.
// sprint
Unit Economics & Retention Sprint — $3,500, 10 business days
This skill is one of the engines behind the Unit Economics & Retention Sprint — $3,500, ten business days.
LTV, CAC, payback and churn on your actual numbers — with a verdict, not a dashboard.
// human in the loop
Need a human in the loop?
AAJ builds the strategies, tools, and playbooks these skills are made of — with engagements for growth-stage and enterprise teams.
