GTM Playbooks
Finance/FP&AIntermediateLast reviewed Run it in your LLM

Weight Open Pipeline by Stage Close Rate Instead of CRM Defaults

The problem

The forecast call uses CRM default stage probabilities, so Discovery looks more likely to close than it has, Commit looks safer than it is, and finance and sales argue about coverage of quota without a shared stage-weighted number.

Copy, paste, run

Run it in your LLM

One prompt for Claude or ChatGPT that turns open pipeline by stage into a trailing-rate weighted forecast versus quota, then compares it to CRM default probabilities so the forecast call is not using the CRM table as if it were history. Type run the example after pasting it to test it on the fictional data built into the prompt.

Download .mdSKILL.mdExample CSV
# Weighted pipeline forecast by stage

You are a senior ops and finance lead reporting to the CRO and the CFO. From an open opportunity export and a quarterly quota, compute a stage-weighted forecast using the team's trailing stage-to-close rates, then compare that number to the same pipeline scored with CRM default stage probabilities, so the forecast call has one shared view of weighted forecast, gap to quota, and weighted pipeline as a percent of quota.

CRM default stage probabilities are usually wrong. Replace them with your own trailing stage-to-close rates. The CRM column on this page is a comparison only.

Coverage of remaining quota after stale deals and a creation window is a different question, on the pipeline coverage reality check. Stage-to-stage conversion from closed cohorts is on stage conversion rates. Pushed and stalled deals are on the deal slippage check. Commit vs closed is on forecast accuracy by rep.

## Rules

- Use only the data in this conversation. Do not invent close rates, coverage multiples, or win-rate benchmarks. If something is missing, ask for it, or use the fallback this prompt defines and label it as an assumption.
- Run the calculations in code if you can. If you cannot run code, say so at the top and show the working.
- Show the formula next to every headline number.
- The headline forecast uses trailing stage-to-close rates. CRM default probabilities are a comparison, not the forecast.
- Read only. Do not change CRM records, stages, or probabilities.
- Format: money to the nearest dollar, percents to one decimal if not whole.

## Definitions

- Open pipeline at a stage is the remaining amount on open deals in that stage. Closed-won and closed-lost stay out of this extract.
- Your rate is the trailing stage-to-close rate, in percent. 10 means 10%. It is the share of decided deals that sat in that stage and later won, from your own history, not a CRM default.
- CRM rate is the probability the CRM stores on the stage, in percent. Treat it as an input the user supplies. Do not look up a vendor's default table.
- Quota is the remaining quarterly bookings target, in the same currency as the deals.
- Weighted at a stage (your rates) = open pipeline x (your rate / 100).
- Weighted forecast = sum of stage weighted amounts.
- Gap to quota = quota - weighted forecast. Positive means short of quota. Negative means the weighted forecast is above quota.
- Weighted as % of quota = weighted forecast / quota.
- CRM-weighted forecast uses the same open amounts and the CRM rates. CRM overstates by = CRM-weighted minus your weighted.
- Do not divide by zero. Quota must be above zero. Close rates are from 0% to 100%. Open pipeline is zero or more. Drop deals with a missing id, duplicate id, missing stage, or amount not above zero.

## Step 0. Inputs

If the user says "run the example", use the EXAMPLE DATA section at the end of this prompt, do not ask any questions, and label every output "Example data (fictional)".

Otherwise ask for everything below in one message, skipping anything the user already gave:

1. A CSV of open opportunities, one row per deal, with these columns (ask the user to map theirs):
   - opportunity_id, stage, amount
   Where to get it: HubSpot or Salesforce, open deals only, remaining amount.
2. A CSV of rates, one row per stage, with these columns:
   - stage, your_rate_pct, crm_rate_pct
   Your rate is trailing stage-to-close from your own history. CRM rate is whatever the CRM stores on the stage. Rates are percents (10 means 10%).
3. The remaining quarterly quota, in the same currency.
4. The period the extract covers, so the write-up can name it.

Then report a data check: rows read; rows left out and why (duplicate opportunity id, no opportunity id, no stage, amount not a number, amount not above zero); deals kept; stages that had deals but no rates (stop if any). Ask the user to confirm before going on, unless they said "run the example".

## Step 1. Roll up and weight

Sum amount by stage. For each stage with a rate row:

- Your weighted = open pipeline x (your_rate_pct / 100).
- CRM weighted = open pipeline x (crm_rate_pct / 100).

## Step 2. Forecast vs quota

Weighted forecast = sum of your weighted. Open pipeline = sum of open amounts. Gap = quota - weighted forecast. Weighted as % of quota = weighted forecast / quota.

CRM-weighted forecast = sum of CRM weighted. Repeat gap and % of quota on the CRM column so the user can see the difference. CRM overstates by = CRM-weighted - your weighted (negative means the CRM is lower than trailing rates).

## Step 3. Output

Start with a five-line summary:

- Headline: "Trailing-rate weighted forecast is {weighted} against {quota} quota ({pct}% of quota, {gap} {short or over})."
- Stage check: "Discovery {open} x {your rate} = {your weighted}; Evaluation {open} x {your rate} = {your weighted}; Proposal {open} x {your rate} = {your weighted}; Commit {open} x {your rate} = {your weighted}." (skip a stage that is not in the extract)
- Open pipeline: "{open} open across {n} stages."
- CRM comparison: "The same pipeline at CRM default probabilities is {crm weighted} ({pct}% of quota). CRM overstates by {delta}. CRM defaults are usually wrong; use your trailing rates."
- One line: "{excluded} rows were left out. This is a forecast of open pipeline, not a commit call. Take the trailing-rate number to the forecast call next to coverage, slippage, and forecast accuracy."

Then these tables:

1. Data check
2. By stage (open pipeline, your rate, your weighted, CRM rate, CRM weighted), totals last
3. Forecast vs quota (your rates and CRM rates)
4. Assumptions, each labeled as an assumption, including: trailing rates are history not a forecast of this quarter's close rate; CRM rates are the probabilities stored in the CRM, not a vendor-published table; remaining amount is the open amount, not original amount; quota is remaining bookings, not a full-year number.

If you can create files, offer the scored table as a CSV download.

## EXAMPLE DATA (fictional, for testing this prompt)

Use this only when the user says "run the example". The company and deals are made up.

- Period 2026-Q4
- Remaining quota $800,000
- Discovery $1,000,000 x 10% trailing = $100,000 (CRM example 20%)
- Evaluation $600,000 x 30% trailing = $180,000 (CRM example 40%)
- Proposal $400,000 x 50% trailing = $200,000 (CRM example 60%)
- Commit $250,000 x 80% trailing = $200,000 (CRM example 90%)

Open deals:

```csv
opportunity_id,stage,amount
D-001,Discovery,400000
D-002,Discovery,600000
E-001,Evaluation,350000
E-002,Evaluation,250000
P-001,Proposal,400000
C-001,Commit,150000
C-002,Commit,100000
D-001,Discovery,400000
BAD-1,Discovery,0
BAD-2,,50000
```

Rates (your_rate_pct is trailing stage-to-close; crm_rate_pct is an example CRM default, not a vendor table):

```csv
stage,your_rate_pct,crm_rate_pct
Discovery,10,20
Evaluation,30,40
Proposal,50,60
Commit,80,90
```

How to run it

  1. Open Claude or ChatGPT with code execution on (Claude's analysis tool, ChatGPT data analysis). Without it the model does arithmetic by hand, and you should check every number.
  2. Paste the prompt. To test it first, send "run the example" and compare with the expected results below.
  3. Attach a CSV of open opportunities (id, stage, amount) and a CSV of rates (stage, your trailing close rate, CRM default). Give remaining quarterly quota. The prompt lists the columns.
  4. Read the data check first. Take the trailing-rate forecast, the gap, and the CRM comparison to the forecast call. Keep CRM defaults labeled as a comparison, not the forecast.

Before you paste CRM data

Pasting an export sends it to the LLM vendor. Check your company's AI and data policy, prefer a business or enterprise plan, and drop account names and contacts: the prompt only needs deal IDs, stages, and amounts. It is a statistical view of open pipeline, not the forecast commit.

Expected results on the example data

A correct run of "run the example" should match these, give or take rounding. They are computed from the prompt's definitions by a reference implementation that is tested against hand-worked numbers. The data is fictional.

Data check
10 rows; kept 7 deals; left out: D-001 (duplicate opportunity id), BAD-1 (amount is not above zero), BAD-2 (no stage)
Discovery
$1,000,000 x 10% = $100,000
Weighted forecast
$680,000 against $800,000 quota, 85% of quota, $120,000 short
CRM comparison
$905,000 CRM-weighted; overstates by $225,000
Expected weighted pipeline by stage
StageOpenYour rateYour weightedCRM defaultCRM weighted
Discovery$1,000,00010%$100,00020%$200,000
Evaluation$600,00030%$180,00040%$240,000
Proposal$400,00050%$200,00060%$240,000
Commit$250,00080%$200,00090%$225,000

Discovery $1,000,000 x 10% = $100,000; Evaluation $600,000 x 30% = $180,000; Proposal $400,000 x 50% = $200,000; Commit $250,000 x 80% = $200,000. Open $2,250,000; weighted $680,000; quota $800,000; gap $120,000; 85% of quota. CRM example rates 20/40/60/90 weight to $905,000. CRM defaults are usually wrong; use trailing stage-to-close rates.

Weighted pipeline forecast by stage

Enter open pipeline and a trailing stage-to-close rate per stage, plus the quarter's remaining quota. CRM default probabilities are a comparison only. Prefilled with the fictional example.

Open pipeline by stage

Weighted forecast (your rates)
$680,000
$2,250,000 open pipeline
Gap to quota
$120,000
Short of quota on trailing rates
Weighted as % of quota
85%
Quota $800,000
CRM-weighted forecast
$905,000
113.1% of quota
CRM vs trailing rates
$225,000
CRM defaults overstate the forecast
Discovery check
$100,000
$1,000,000 x 10%
Weighted pipeline by stage, trailing rates vs CRM defaults
StageOpenYour rateYour weightedCRM defaultCRM weighted
Discovery$1,000,00010%$100,00020%$200,000
Evaluation$600,00030%$180,00040%$240,000
Proposal$400,00050%$200,00060%$240,000
Commit$250,00080%$200,00090%$225,000
Total$2,250,000$680,000$905,000

CRM default stage probabilities are usually wrong; the headline forecast uses your trailing rates. CRM numbers here are example inputs, not a vendor-published table. Required coverage and stale deals are on the pipeline coverage reality check; stage-to-stage conversion is on stage conversion rates.

Implementation steps

  1. 1

    Write the definitions down with finance before pulling data: open pipeline is remaining amount on open deals in each stage; your rate is trailing stage-to-close from your own history, in percent; CRM rate is the probability the CRM stores on the stage, a comparison input only; quota is remaining quarterly bookings. CRM default stage probabilities are usually wrong and should be replaced with your own trailing stage-to-close rates

  2. 2

    Export open opportunities from HubSpot or Salesforce with opportunity id, stage, and remaining amount, plus a rates table with stage, your trailing close rate, and the CRM default. Drop rows with a missing id, duplicate id, missing stage, or amount not above zero, and list each dropped row. Stop if a kept stage has no rate row

  3. 3

    Sum remaining amount by stage. Weighted at a stage = open pipeline x (your rate / 100). In the fictional example Discovery is $1,000,000 x 10% = $100,000

  4. 4

    Finish the table. Evaluation $600,000 x 30% = $180,000; Proposal $400,000 x 50% = $200,000; Commit $250,000 x 80% = $200,000. Weighted forecast = $100,000 + $180,000 + $200,000 + $200,000 = $680,000. Open pipeline = $2,250,000

  5. 5

    Gap to quota = quota - weighted forecast. In the fictional example $800,000 - $680,000 = $120,000 short. Weighted as a percent of quota = $680,000 / $800,000 = 85%. Do not divide by zero

  6. 6

    Recompute the same open amounts with CRM default probabilities so the forecast call can see the difference. The CRM percents on this page (20 / 40 / 60 / 90) are example inputs, not a vendor-published table. In the fictional example CRM-weighted is $905,000, 113.1% of quota, $105,000 over, and $225,000 above the trailing-rate forecast. Keep required coverage, stale deals, and pipeline per rep on the coverage playbook; this page is the stage-weighted forecast vs quota

  7. 7

    Run it with the copy-paste prompt on this page in Claude or ChatGPT, or with formulas in the template, and use the calculator on this page to test other amounts and rates. Share the trailing-rate forecast, the gap, and the CRM comparison with finance; this is a forecast of open pipeline, not a commit call and not a bookings target

  8. 8

    Rerun each quarter on the same stages and store your trailing rates so a mix shift or a rate drop shows up before the next forecast call

Template outline

The structure to recreate in your own workspace. Field names and thresholds are starting points.

Google Sheet: Weighted pipeline forecast by stage FYxx Qx (RevOps pulls open deals; finance owns quota and trailing rates)

Tab inputs: remaining quota

Tab deals (one row per open opportunity):
  opportunity_id, stage, amount
  kept = unique opportunity_id AND stage present AND amount > 0

Tab rates (one row per stage):
  stage, your_rate_pct, crm_rate_pct
  your_rate_pct is trailing stage-to-close; crm_rate_pct is the CRM default, comparison only

Tab forecast:
  open = SUMIF(deals.stage, stage, deals.amount)
  your_weighted = open x (your_rate_pct / 100)
  crm_weighted = open x (crm_rate_pct / 100)
  weighted_forecast = SUM(your_weighted)
  gap = quota - weighted_forecast
  pct_of_quota = weighted_forecast / quota
  crm_overstates_by = SUM(crm_weighted) - weighted_forecast

Worked example (example data, fictional): period 2026-Q4
  10 deal rows read, 7 kept. Left out: D-001 listed twice; BAD-1 amount 0; BAD-2 no stage.
  Discovery $1,000,000 x 10% = $100,000.
  Evaluation $600,000 x 30% = $180,000.
  Proposal $400,000 x 50% = $200,000.
  Commit $250,000 x 80% = $200,000.
  Open $2,250,000. Weighted forecast $680,000. Quota $800,000. Gap $120,000 short. 85% of quota.
  CRM example rates 20/40/60/90: $905,000, 113.1% of quota, overstates by $225,000.

Calculator on this page, prefilled: the four stages above. Every money line matches.

Slack to #finance-revenue before the forecast call:
"Trailing-rate weighted forecast {{weighted}} against {{quota}} ({{pct}} of quota, {{gap}} short).
 CRM defaults on the same pipeline: {{crm_weighted}} (overstates by {{delta}}).
 CRM defaults are usually wrong; we used trailing stage-to-close. Sheet: {{sheet_url}}"

Tab history: quarter, stage, open, your_rate_pct, your_weighted, crm_rate_pct, crm_weighted, quota, gap, pct_of_quota

Cost, time saved, and break-even

Tool cost here is your share of an LLM plan, which depends on your vendor, so it is an input. Every number below is an example input; replace each with your own figure. Hours saved are estimates, not measured results.

Inputs (all assumptions)

Replace each value with your own figure.

  • THours a quarter to pull open pipeline by stage, trailing close rates, CRM defaults, and remaining quota and size the table by hand5AssumptionTime the next quarterly forecast-call prep.
  • VHours a quarter with the prompt or template (export, review the data check and the results)0.8AssumptionTime the first two quarterly runs.
  • RLoaded hourly cost of the RevOps or FP&A analyst$75AssumptionSalary plus benefits, divided by working hours.
  • KMonthly tool cost for the LLM plan$20AssumptionYour share of the Claude or ChatGPT plan, from current vendor pricing and your invoices; the CRM, Google Sheets, and Slack are usually already paid for.

Formulas

Time saved per quarter (estimate)T - V
5 - 0.8 = 4.2 hours
Time saved per week (estimate)(T - V) / 13
4.2 / 13 = 0.3 hours
Value of time saved per quarter (estimate)(T - V) x R
4.2 x $75 = $315
Tool cost per quarterK x 3
$20 x 3 = $60
Break-even hours per quarter (estimate)K x 3 / R
$60 / $75 = 0.8 hours, so the run covers its tool cost once it saves 48 minutes a quarter
Weighted forecast (fictional example data)sum of (open pipeline x trailing close rate)
$100,000 + $180,000 + $200,000 + $200,000 = $680,000, which is 85% of $800,000 quota and $120,000 short
  • The time math counts analyst time only and is an estimate. Changing the commit or opening more pipeline is a much larger number, but that decision is yours, so it is not added to the time savings.
  • A weighted forecast is not a commit call. Recheck each quarter on the same stages and trailing rates.
  • Rerun the time math after the first two quarters with your real review time V.

Common questions

How do you calculate a weighted pipeline forecast by stage?
Weighted at a stage = open pipeline x trailing stage-to-close rate. Weighted forecast is the sum. Gap to quota = remaining quarterly quota minus that forecast. Weighted as a percent of quota = forecast / quota. In the fictional example Discovery $1,000,000 x 10% = $100,000, Evaluation $600,000 x 30% = $180,000, Proposal $400,000 x 50% = $200,000, Commit $250,000 x 80% = $200,000: $680,000 weighted, $120,000 short of $800,000, 85% of quota.
Why not use the CRM default stage probabilities?
CRM default stage probabilities are usually wrong. They are a stage setting, not your trailing stage-to-close rate. Replace them with your own history. In the fictional example the same pipeline at example CRM rates of 20/40/60/90 weights to $905,000 (113.1% of quota), $225,000 above the trailing-rate forecast. Those CRM percents are example inputs, not a vendor table.
What does a positive gap to quota mean?
Gap = quota - weighted forecast, so a positive gap means the trailing-rate forecast is short of remaining quota. In the fictional example $800,000 - $680,000 = $120,000 short. A negative gap means the weighted forecast is above quota. This is not a commit call; that is on forecast accuracy by rep.
How is this different from pipeline coverage?
This page scores open pipeline by stage close rate and compares the total to remaining quota. Pipeline coverage reality check uses historical in-quarter conversion, flags stale deals, and sizes required coverage and new pipeline per rep inside a creation window. Use both: this one for the stage-weighted forecast, that one for coverage of the rest of the quarter.
How much time does it save?
With the example inputs, building the table by hand takes 5 hours a quarter and reviewing the prompt or template run takes 0.8, so 4.2 hours a quarter are saved, about 0.3 hours a week. That is an estimate, worth $315 a quarter at $75 an hour against an example $60 a quarter LLM plan share.

Keep going

View all Finance/FP&A

Need help implementing a playbook?

Our team builds custom Clay workflows and AI automations for revenue teams.

Get it built for you