// 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.

ExecuteengineIntermediate
bash
$npx skills add sarojkjha/aaj-marketing-skills --skill marketing-report
Or run it in Claude or ChatGPT through the AAJ engines connector

Claude Code

/plugin marketplace add sarojkjha/aaj-marketing-skills
/plugin install aaj-marketing-skills@aaj

OpenAI Codex

codex plugin marketplace add sarojkjha/aaj-marketing-skills
codex plugin add aaj-marketing-skills@aaj

Claude or ChatGPT — no install

Add this as a custom connector:

https://aaj-engines-mcp.sarojkjha10.workers.dev/mcp
Recipes: vendor data in, a verdict out

// 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 only

Makes no network calls, writes no files and changes nothing in your tools.

// where your information goes

How you run itWhere your inputs go
Skill installed in your agent, or the local MCP serverThe 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 serverYour 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

The marketing lead or RevOps owner confirms the stage definitions and spend basis match the prior period, and states whether CAC is blended or by channel, before the report goes to the board.

// setup

install
$npx skills add sarojkjha/aaj-marketing-skills --skill marketing-report
hosted mcp
$https://aaj-engines-mcp.sarojkjha10.workers.dev/mcp

Agents listed: Claude Code, Cursor, OpenAI Codex, Windsurf, Cline. Tested and recorded: Claude Code.

Full spec on GitHub

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

  1. Read the brand/product context first (.agents/product-marketing.md / .agents/aaj-brand.md) for model, motion, and goals, if present.
  2. 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:

  1. Results vs target and prior — lead with the one-number story (attainment, or new revenue vs plan/last period).
  2. Funnel — where it converts and where it leaks, stage by stage, each against its own trend.
  3. Efficiency — CAC, cost per lead, new-revenue-to-spend, pipeline-to-spend.
  4. What changed and why — the two or three moves behind the deltas.
  5. 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.

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.

No spam. Unsubscribe anytime.

// 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.

See what's included.

// 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.