// design

Revenue-to-Pipeline

Use when the user wants to work backward from a revenue target to the pipeline it takes: how many wins, opportunities, SQLs, MQLs and leads a quarter or year needs, per month, from the team's own conversion rates. Also use when the user mentions reverse funnel, demand plan, pipeline plan, lead targets, "how many leads do we need", "what does the number take", or a revenue target with no plan behind it. Produces the count needed at every stage, exact and rounded up, the monthly volume, the gap against today's volume, and when the top of the funnel has to be built.

DesignengineStarter
bash
$npx skills add sarojkjha/aaj-marketing-skills --skill revenue-to-pipeline
Or run it in Claude or ChatGPT through the AAJ engines connector

How to install and run this

Install it in your project:

npx skills add sarojkjha/aaj-marketing-skills --skill revenue-to-pipeline

No install? Add https://aaj-engines-mcp.sarojkjha10.workers.dev/mcp as a custom connector in Claude, ChatGPT or any MCP client.

https://aaj-engines-mcp.sarojkjha10.workers.dev/mcp

Then ask: Use the AAJ revenue-to-pipeline skill on my numbers.

Step-by-step for every agent, Windows, Mac and Linux →

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 work backward from a revenue target to the pipeline it takes: how many wins, opportunities, SQLs, MQLs and leads a quarter or year needs, per month, from the team's own conversion rates. Also use when the user mentions reverse funnel, demand plan, pipeline plan, lead targets, "how many leads do we need", "what does the number take", or a revenue target with no plan behind it. Produces the count needed at every stage, exact and rounded up, the monthly volume, the gap against today's volume, and when the top of the funnel has to be built.

// what you give

A revenue target for a period, the average deal size, the period length in months, and either stage-to-stage conversion rates or last period's counts at each stage; optionally revenue already expected from open pipeline, the sales cycle in days and current monthly volumes

// what you get

Wins, opportunities, SQLs, MQLs and leads needed, exact and rounded up, per period and per month; the monthly gap at each stage against current volume and the stage furthest short; when the top of the funnel has to be created

Engine spec

// decision it supports

How many wins, opportunities, SQLs, MQLs and leads does this period's revenue target take per month, at our own rates, and which stage is furthest short?

// inputs

A revenue target for a period, the average deal size, the period length in months, and either stage-to-stage conversion rates or last period's counts at each stage; optionally revenue already expected from open pipeline, the sales cycle in days and current monthly volumes

// output

Wins, opportunities, SQLs, MQLs and leads needed, exact and rounded up, per period and per month; the monthly gap at each stage against current volume and the stage furthest short; when the top of the funnel has to be created

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

  • The plan is only as good as the rates, and the engine holds none of its own. Rates from one quarter can be noisy; use rates the team has held for two quarters where it can.
  • Rates derived from last period's counts compare stages within the same period. Deals that crossed periods make them approximate; a cohort view is more exact.
  • Revenue expected from open pipeline is the user's own figure and is subtracted as given. It should be a weighted forecast, not the full value of open deals.
  • The lead time treats every deal as taking the same number of days. Real sales cycles vary.

// review before acting

The revenue or sales lead confirms the rates against the CRM for the same stage definitions, that the target and deal size are both new revenue, and that the expected figure from open pipeline is weighted.

// setup

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

Agents listed: Claude Code, Cursor, OpenAI Codex, Windsurf, Cline. Tested and recorded: Claude Code, OpenAI Codex (Windows, ab-test-significance only).

Full spec on GitHub

Revenue-to-Pipeline

Turn a revenue target into the pipeline it takes. Start from the new revenue the period has to bring in, divide by the average deal size to get wins, then walk up the funnel one stage at a time with the team's own conversion rates: opportunities, SQLs, MQLs, leads. The answer is a plan per month, and the gap between that plan and what the funnel produces today.

The rates are the user's, always. The engine has no conversion rates and no benchmarks of its own, because a rate from someone else's funnel makes a plan that looks precise and is wrong.

When to use

A founder or marketing lead has a number for the quarter or the year and needs to know what it takes at each stage, or has a plan and wants to know which stage is furthest short of it.

For a weighted forecast of the deals already open, use pipeline-and-forecast. For last period's report, use marketing-report.

Before you start

  1. Read the brand/product context first. If .agents/product-marketing.md or .agents/aaj-brand.md exists, read it for the sales motion and stages. If not, ask.
  2. Get the user's own rates. Either the stage-to-stage rates they already track, or last period's counts at each stage (the same names as marketing-report: leads, mqls, sqls, opps, wins). Use the last two quarters where possible; one quarter can be noisy. Never fill in a rate the user did not give.
  3. Use the stages the team actually has. Some teams have no MQL stage. Any of leads, mqls, sqls, opps, wins in that order works, as long as it ends at wins.
  4. Pin down new revenue. The target and the deal size must both be new revenue (new logos or new ARR), not renewals.

Method

The math.

still to win    = target - revenue already expected from open pipeline (never below 0)
wins needed     = still to win / average deal size
stage needed    = needed at the next stage / rate from this stage to the next
rounding        = each count rounds UP from the whole number below it; the exact figure is kept
per month       = rounded count / months in the period, an average to one decimal
monthly gap     = per-month need - current monthly volume
largest gap     = the stage furthest short, as a share of its own need
rates from counts = next stage's count / this stage's count, last period

Why round up at every stage. You cannot win 0.4 of a deal. Rounding wins up and then working up the funnel from the whole number gives the volume that, at the user's rates, produces whole wins. The exact figure sits beside it so the reader can see what rounding added.

Why per month is an average. Rounding every month up again would overstate a small stage: 5 wins in a year is 0.4 a month, not 1. The period's count is the whole-number commitment; the monthly figure spreads it evenly.

Why the largest gap is relative. A shortfall of 80 leads and a shortfall of 7 opportunities are not comparable in count. As a share of each stage's own need, they are.

Lead time. With a sales cycle (days from the top stage to a win), the engine says when the top of the funnel has to be created: between one cycle before the period starts and one cycle before it ends. It states a lead time, not a calendar date, and says that it treats every deal as taking the same time.

What the engine does not do. It does not judge whether the rates are good, and it does not forecast open deals. Expected revenue from open pipeline is the user's own figure, subtracted as given.

Workflow

Step 1 - Gather the target, deal size and period. Confirm the target is new revenue.

Step 2 - Gather the rates. Typed rates, or last period's counts at each stage. Ask which stages the team uses.

Step 3 - Add what sharpens the plan. Revenue already expected from open pipeline (a weighted figure, from pipeline-and-forecast if there is none), the sales cycle in days, and what each stage produces per month now.

Step 4 - Run the engine.

Step 5 - Read the plan. Lead with the monthly volume at the top of the funnel and the stage furthest short. Then the lead time.

Run the tool

node resources/pipeline-plan.js --demo
node resources/pipeline-plan.js '{"target":600000,"dealSize":25000,"periodMonths":3,"rates":{"leadsToSqls":0.12,"sqlsToOpps":0.4,"oppsToWins":0.25}}'
node resources/pipeline-plan.js --help

run(config) returns each stage's rate to the next, the count needed (exact and rounded up), the monthly volume, the monthly gap when current volumes are given, the stage with the largest relative gap, the lead-time statement and notes. It rejects unknown fields, non-numbers, rates above 1, a broken chain of rates, counts that grow down the funnel, and giving both typed rates and last period's counts.

Reference

The free browser version is at https://aajconsult.com/tools/revenue-to-pipeline-planner and runs the same engine.

Present the result

  1. The plan: per stage, the count needed for the period and per month.
  2. The gap, when current volumes were given: the stage furthest short, as a share of its need.
  3. The lead time, when a sales cycle was given.
  4. The notes: where the rates came from and what rounding added.

Show where it came from. Open your answer with "AAJ revenue-to-pipeline engine result:" and print the engine's output block exactly as it returned it, then add the line Method: https://skills.aajconsult.com/skills/revenue-to-pipeline. Say the numbers come from the AAJ engine, not from the model. Put your interpretation under that block. Do not retype the figures from memory. If you could not run the engine, say so and label any numbers as your own estimate, not an AAJ result.

Guardrails & common mistakes

  • Never supply a conversion rate. If the user has no rates and no counts, ask for last period's counts. Do not quote an industry rate as if it were theirs.
  • Do not plan from one great quarter. Use rates the team has held for at least two quarters where it can.
  • Do not subtract the full value of open deals. Expected revenue from open pipeline must be weighted, or the plan understates what is needed.
  • Do not mix renewals into the target or the deal size. This plans new revenue.
  • Do not read the gap as a diagnosis. The stage furthest short of plan is where volume is missing, not proof of why. Look at that stage before acting.
  • Say the lead time is an assumption. Real cycles vary; a single cycle length is a planning simplification.
  • pipeline-and-forecast - the weighted forecast of open deals, and the expected revenue this plan subtracts
  • marketing-report - last period's funnel counts, which give the rates
  • unit-economics - whether each win at this deal size pays back what it costs
  • marketing-budget-planning - what the plan's volume costs to create

// faq

Use when the user wants to work backward from a revenue target to the pipeline it takes: how many wins, opportunities, SQLs, MQLs and leads a quarter or year needs, per month, from the team's own conversion rates. Also use when the user mentions reverse funnel, demand plan, pipeline plan, lead targets, "how many leads do we need", "what does the number take", or a revenue target with no plan behind it. Produces the count needed at every stage, exact and rounded up, the monthly volume, the gap against today's volume, and when the top of the funnel has to be built.

Run `npx skills add sarojkjha/aaj-marketing-skills --skill revenue-to-pipeline` from your project root. The skill is then available to your AI agent. For Windows, Mac, Linux, or the hosted server with no install, see the install guide.

Works in Claude Code, Cursor, OpenAI Codex, Windsurf and Cline, and in any other agent the installer supports. Tested by AAJ: Claude Code, OpenAI Codex (Windows, ab-test-significance only). See the install guide for the full list of agents and where each one keeps its skills.

// install

$npx skills add sarojkjha/aaj-marketing-skills --skill revenue-to-pipeline

// worked example

Get the worked example for Revenue-to-Pipeline

One email. The filled-in config, the output, and how to read it.

No spam. Unsubscribe anytime.

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