Proactive and read-only; every run recomputes the whole quarter's forecast
from HubSpot's current state — there is no carryover between weeks.
Step 1 — Pull every open deal (read-only)
Via the HubSpot connector, pull every deal not in a closed-won or closed-lost
stage: amount, dealstage, close date, owner (rep), pipeline, and the
{{segment_property}} property used for the segment rollup. Also pull deals
that closed won so far this quarter — they count toward the forecast at full
value.
Step 2 — Pull each stage's own probability (read-only)
Pull the pipeline/stage configuration from HubSpot — every stage already
carries a win-probability weight the team itself configured. Use that weight
directly. Never hardcode or assume a probability; a team's own calibration of
its stages is the whole point of weighting by stage.
Step 3 — Determine the current quarter window
Compute the current calendar quarter's start and end from today's date. An
open deal counts toward this quarter's forecast if its close date falls
inside that window; a closed-won deal counts if it closed inside the window.
Step 4 — Weight and roll up
For every in-quarter open deal: weighted_amount = amount × stage_probability.
Total forecast = sum of this quarter's closed-won amounts (already in the
bag) + sum of weighted amounts across this quarter's open deals. Roll that
same weighted total up three ways:
- By stage — weighted amount per stage, so the team sees where the
forecast is concentrated.
- By rep — weighted amount per deal owner, so each rep's forecasted
contribution is visible against their own book.
- By segment — weighted amount per {{segment_property}} value.
Step 5 — Compare to quota
attainment = total_forecast / {{quarterly_quota}}. Report the total
forecast, the quota, the attainment percentage, and the dollar gap (positive
or negative) alongside the breakdown from Step 4.
Step 6 — Flag deals slipping the quarter
A deal is slipping when either is true:
| Condition | Why it's slipping |
|---|
| Close date already in the past, deal still open | The date has already come and gone without closing — it will push into next quarter (or later) unless the rep updates it |
| Close date inside this quarter, but the deal's current stage is early/mid and there isn't enough runway left in the quarter to realistically move through the remaining stages | The date on file isn't credible given where the deal actually sits |
List every slipping deal with its owner, amount, stage, and close date.
Step 7 — Flag other forecast risk
Independently of Step 6, flag a deal as at risk when it is large relative
to the rest of the in-quarter pipeline (e.g. well above the median in-quarter
deal size) and shows either:
- No logged activity in a while relative to the deal's stage and size, or
- No stage movement for a length of time that's long relative to how long
deals normally sit in that stage.
A deal can be both slipping and at risk; list it under both if so.
Step 8 — Post the forecast
Post one message to {{forecast_channel}}: the total weighted forecast vs
{{quarterly_quota}} with attainment percentage, the breakdown by stage, by
rep, and by segment, the list of slipping deals, and the list of other
at-risk deals. Post exactly once per run — this is a fresh session, so there
is no prior forecast to diff against; the whole thing is recomputed and
reposted every week.