RevOps · Forecast

Probability-weighted revenue forecast

How much of the open pipeline should turn into revenue each month, with each deal weighted by the stage's real conversion, not by the number the CRM suggests.

Tested with an agentOct 2026

UsageCommon
EffortMedium
ForSales and finance leaders who need a future revenue number that holds up.
Source

Open deals and stage history from the CRM

Model

Amount x the stage's historical conversion in the expected month, plus the run-rate of deals created and won in the month

Outcome

Expected revenue by month, pipeline and rep

Activation

Weekly forecast, board and AI agent

What it solves

  • The nominal pipeline shrinks to the revenue history says will close, plus what usually starts and closes within the month.
  • Each deal is weighted by the stage's measured conversion, the same for every rep.
  • You can explain why the forecast changed from one week to the next.

Business questions it answers

Ask your agent these questions once the case is live.

How much new revenue should we close this month and next?
What is the gap between the nominal pipeline and expected revenue?
What came in, went out and slipped in this week's forecast?
How much of the pipeline depends on deals whose expected close date has passed?
Which rep has the most optimistic commit compared with their own history?

What you need

  • CRM connected with amount, expected close date and stage history
  • Up to 12 closed months of won and lost deals to measure conversion by stage (at least two quarters)
  • The amount rule (recurring or total) and currency rule agreed with finance

What you get

  • A table of open deals with measured probability and weighted amount
  • Forecast by month, pipeline and rep, with the nominal pipeline and the short cycle run-rate on their own lines
  • A weekly forecast snapshot with what came in, was won, slipped and went out
  • An AI agent that answers forecast questions with the rule applied

Where to activate

Weekly forecast

Expected revenue by month with nominal pipeline, declared commit and overdue deals side by side.

AI agent via MCP

Answers how much we will close and why the number changed since last week.

Alerts

Notice to the owner when a relevant deal passes its expected date without being updated.

Ready to build?

It depends on the pipeline view to measure conversion by stage. Without history, start with the CRM's probabilities declared as provisional and switch once two quarters are measured. The detailed view has the business rules, the pitfalls and the acceptance test. Or send everything straight to your agent with the Nekt MCP.

The problem

The CRM has a probability per stage set years ago and an expected close date reps forget to update. Multiplying one by the other adds deals from pipelines that are not sales, counts dates that already passed in the month and uses probabilities that do not even follow the funnel order. The forecast changes from person to person and nobody can explain the week's variation. And even a well weighted forecast misses when much of the revenue comes from deals created and won within the same month, which never show up in the open pipeline.

How it is usually done, and the rule

Each row is a mistake that already happened in practice.

The common wayThe rule
01
Use the stage's default probability in the CRM.
Measured probability, not configured

For each stage, the probability is won / (won + lost) among deals that passed through the stage and closed in the 12 closed months before the snapshot. One window, always the same; with less than 12 months of history, use what there is and declare it. Passed through the stage: in HubSpot, hs_v2_date_entered_<stageId> filled on the deal, which counts even if the deal later moved to another pipeline (the field keeps only the latest entry, so it tells you whether it passed, not how many times). If the team does not mark deals lost and leaves them open indefinitely, the win rate among closed deals is inflated: for measurement, treat as lost any open deal with no activity or stage change for more than a declared N days. The CRM's default probability (the stage's metadata.probability or hs_deal_stage_probability on the deal) is only a declared provisional scale until there is history.

02
Weight every open deal in the CRM.
Only acquisition pipelines count

Active customer, partner, onboarding and post-sale pipelines also have stages with high probability, sometimes 80% to 100%. Added to the forecast, they become new revenue that does not exist. Write down the list of acquisition pipelines by pipeline ID, not by name, which changes. If a won deal is moved to another pipeline (for example, a closed sale lands in an activation or self-service pipeline), that destination pipeline goes on the list for wins and for conversion, or the final stage looks like it never wins.

03
Keep a won deal weighted until it is invoiced.
Won is 100 and lost is 0, always

A won deal enters at full amount in the month it was won and leaves the weighted part; a lost deal leaves at zero. Never apply the stage probability, a score or a temperature to a deal that is already closed.

04
Put everything open into the current month.
The expected date sets the month, and past dates stay out

The forecast month is the month of the expected close date. A deal with no expected date or with a date already past does not enter the current month: it goes to a separate overdue line the manager must review. Paused and frozen deals stay out: declare which field marks the pause (a temperature such as frozen, a status or a pause stage). Deals the rep removed from the forecast through the CRM's forecast category (in HubSpot, hs_manual_forecast_category = OMIT) also stay out and count as went out in the weekly snapshot.

05
A card with no temperature enters at full probability.
Qualification adjustments are written down

If the team uses a qualification on the card (temperature, stars), it can adjust the probability by a fixed, written scale, and the scale states whether it replaces or multiplies the measured probability. Replace: probability = the scale value for the qualification x (1 - the stage's share of losses), where the stage's share of losses = deals lost in the month that were in that stage / all deals lost in the month. In a real case: top 80%, good 60% and average 40%. Multiply: probability = measured probability x factor, with factor 1 for the top qualification and below 1 for the others, or the same conversion is counted twice. A card with no qualification takes the lowest scale, never 100%.

06
Explode the deal by product and add each line's amount.
The deal amount, not the product lines

Revenue is a deal metric. Never turn product lines into extra deals to add up. In recurring sales, declare whether the forecast is monthly value (MRR) or total contract value and use the right field; setup and one off services go on their own line.

07
Add reais and dollars together.
One currency and a declared rate

Convert deals in other currencies to the reporting currency with a declared rate (fixed budget rate or monthly average) and keep the criterion week after week.

08
Compare only this week's total with last week's.
A weekly snapshot explains the change

Save the forecast every week. If the CRM has a versioned deal history (an SCD Type 2 table with each version's valid from and valid to), the snapshot for any date since that history began can be rebuilt, without depending on weekly saves. Freeze each stage's probability in the snapshot: recalculating conversion every week makes untouched deals show up as amount changed. Comparing two snapshots, each deal falls into one category: came in, won, slipped (the expected date left the period), went out (lost, paused or recategorized) or amount changed. Apply the same period filter to both snapshots, or deals that change period become invisible.

09
Add the declared commit to the weighted amount.
Commit and weighted are never added

If the team declares commit categories (will close, possible), show the commit next to the weighted forecast, never added together. The weighted number is history's reading; the commit is the rep's reading. The distance between them is information.

10
Forecast the month only from the open pipeline on day 1.
Short cycle deals enter as a run-rate, on their own line

Deals created and won within the same month are never in the open pipeline of the snapshot at the start of the month, and in short cycle or self-service sales they can be most of the revenue. Add a run-rate line to expected revenue: the average, over the last 3 closed months, of revenue from deals created and won in the same month. Show that line apart from the weighted amount, so you know how much of the number comes from the pipeline and how much from pace, and measure accuracy with both.

How each deal moves between two forecast snapshots

Comparing last week's snapshot with this week's, with the same period filter on both.

was not in the period in the previous snapshot, is in this oneCame in
was open, is now wonWon
the expected date left the periodSlipped
lost or recategorized out of the forecastWent out
still in the period, with a different amountAmount changedcurrent amount - previous amount

Definitions

Nominal pipeline
sum of the amount of open deals in acquisition pipelines with an expected date in the month
Stage probability
won / (won + lost) among deals that passed through the stage and closed in the 12 closed months before the snapshot, with open deals stale for more than N days counted as lost; frozen in the snapshot
Weighted amount
deal amount x current stage probability; with a qualification scale, the scale replaces or multiplies as declared
Expected revenue for the month
revenue already won in the month + sum of the weighted amount of open deals with an expected date in the month + run-rate of deals created and won in the month, each part on its own line
Run-rate of deals created and won in the month
average, over the last 3 closed months, of revenue from deals whose create date and win date fall in the same month
Overdue
open deals with an expected date before today or blank; outside expected revenue
Forecast accuracy
revenue won in the month / expected revenue in the snapshot of the month's first business day
Weekly movement
each deal's category between two snapshots: came in, won, slipped, went out or amount changed

Pitfalls that already happened

CRM probability retired

A team stopped using the CRM's probability field and scorecard after seeing they did not track what closed. The probability in the data became only 100, 0 or blank, and the rep's reading moved to a separate column.

Separate fact (won, lost, open) from opinion (temperature) and measure conversion from history.

A card with no temperature was worth 100%

Cards with no linked temperature entered at full probability and inflated the forecast, until the rule changed to the lowest temperature.

With no qualification, take the lowest scale.

Paused deals in the month

Paused deals, waiting for the client's budget, entered the current month and never closed.

Paused and frozen deals stay out, with a resume date.

A deal that changed quarter vanished

The weekly comparison filtered the period only on the current snapshot, and deals pushed to the next quarter disappeared without showing up as slipped.

Same period filter on both snapshots.

Won is not cash

In B2B sales, a win in the CRM took about two weeks to be paid by the client's purchasing department, and the forecast used by finance brought the inflow forward.

Revenue forecast by win date; cash with the declared payment term.

The forecast got the pipeline right and the month wrong

In a short cycle business, most of the month's wins came from deals that did not even exist in the day 1 snapshot. The weighted forecast landed at a fraction of real revenue, and accuracy looked like a probability problem when it was a scope problem.

A run-rate line for deals created and won in the month, apart from the weighted amount.

Validated on real data. In Nekt's own HubSpot account, a middle stage of the sales pipeline is set to 90% probability, but only about 16% of the deals that passed through it and already closed were won. And the active customer and partner pipelines have stages at 80% to 100%: weighting every open deal by the configured probability would add the customer base to the new sales forecast.

Acceptance test

The case is done when every item passes.

Agent package

Paste into Claude, ChatGPT or any client with the Nekt MCP connected.

Full Markdown
Probability-weighted revenue forecast
- Source: forecast table (open deal x day), with amount, measured stage probability, weighted amount and expected month. Weekly snapshots in the forecast history table, with probability frozen in each snapshot.
- Stage probability = win rate, over the 12 closed months before the snapshot, of deals that passed through the stage, with open deals stale for more than <N> days counted as lost. It is not the CRM's default probability.
- Acquisition pipelines only, from the list below, including the pipeline wins are moved to. Paused, OMIT, won and lost deals are not weighted.
- Expected revenue for the month = revenue already won in the month + weighted amount of open deals with an expected date in the month + run-rate of deals created and won in the month (average of the last 3 closed months), each part on its own line.
- A past or blank expected date goes to Overdue, outside expected revenue.
- Amount = <MRR | total contract value>. Reporting currency <currency>, rate <declared rate>.
- The commit declared by the rep sits next to the weighted number. Never add them.
- To explain the week's change, use the categories came in, won, slipped, went out and amount changed.
Client exceptions:
- <client>: acquisition pipelines = <list of IDs, including where wins land>.
- <client>: pause marked by <field and value>; categories out of the forecast = <e.g. OMIT>.
- <client>: a stale open deal counts as lost for measurement after <N> days.
- <client>: qualification scale = <values>, <replaces | multiplies> the measured probability; a card with no qualification uses <lowest value>.

Variations

By scenarios

Without enough history, show a range with three conversion scenarios and say which inputs still need measuring.

Churn and expansion

The same logic over renewal and upsell pipelines, to forecast revenue from the base.

By product

Deals with more than one product split the amount across the deal's products, without becoming extra deals.