Revenue Automation · The Spark
How to score a revenue signal without drowning in false positives
A fit times stage times decay scoring formula for revenue signals, replacing the additive scores that let weak signals outrank the accounts that actually match.
Score every revenue signal on three multipliers at once, fit, stage and decay, and multiply them rather than add them. An additive score lets a pile of weak, badly timed signals outrank the one signal that actually matters, which is exactly how a scoring model earns the reputation of crying wolf.
The Revenue Signal Field Manual set out where a signal comes from, first, second or third party, and how fast each type goes cold. It deliberately stopped short of the scoring step. This is that step: the formula, worked through with numbers, and the two mistakes that turn a scoring model into something sales ops learns to ignore.
Why an additive score manufactures false positives
Most scoring models add points for every signal that fires. Adding lets volume beat relevance, so a low fit account with three weak signals can outrank a high fit account with one strong one.
Additive scoring treats every point the same regardless of where it came from. A pricing page visit is worth 10 points. A relevant new hire is worth 15. A webinar attendance is worth 5. Stack enough of the cheap ones and an account with no real budget authority and no category fit can out-score an account that is exactly who you sell to.
This is not a tuning problem. It is a structural one. Any model where signals sum will eventually let quantity substitute for quality, because addition has no way to say that a signal from the wrong account is worth zero rather than worth less. The fix is not better weights inside an additive model. It is a different operation.
The three multipliers a signal score actually needs
A defensible signal score needs fit, stage and decay multiplied together. Each one can zero out the score on its own, which is the property addition cannot give you.
Fit is how closely the account matches your ICP: industry, size, tech stack, the criteria that barely change once an account is created. Score it once, on a 0 to 1 scale, and only revisit it when the firmographic facts change. Fit is what should cap a signal score outright. An account with a fit score of 0.2 should never out-rank one at 0.9, whatever fires on it.
Stage is the multiplier most scoring models skip entirely, and it is the one that actually explains why the same signal means different things on different accounts. A pricing page visit from an account that has never spoken to sales is a strong forward signal. The identical visit from an account already in a live proof of concept adds almost no new information, because you already know that account is interested. Weight each signal type by what it tells you that you did not already know, given the account's current stage, not by the signal in isolation.
Decay is the multiplier the Field Manual already gave you. Its decay table sets out how fast each signal type goes cold, same working day for a pricing page visit, a quarter or two for a funding round. Feed that same window in here as a fraction that runs from 1 down to 0 across the signal's life, rather than a hard cutoff that lets a nine day old pricing visit count exactly as much as one from this morning. HubSpot's own lead scoring documentation makes the same point about mechanics: a rule can lose its points gradually over a set window instead of expiring all at once, which is the right instinct applied so far only to volume, not to fit or stage.
The same treatment applies to a third party score. Bombora's Company Surge product scores an account's topic level research from 0 to 100 each week against a rolling baseline, and treats 60 and above as a statistically significant surge, according to Bombora's own thresholding documentation. That score still needs a decay factor once it is a few weeks old, and it still needs a fit multiplier before it reaches a rep, because a surge score alone says nothing about whether the account looks anything like your ICP.
The formula, worked through with numbers
Signal score equals fit times stage weight times decay factor, scaled to 100. Each term runs 0 to 1, so a weak term drags the whole score down instead of being outvoted by the other two.
Score = Fit (0 to 1) × Stage weight (0 to 1) × Decay factor (0 to 1) × 100. Run it per signal, then take the highest scoring live signal on the account as the account's current score, rather than summing every signal the account has ever produced.
| Account | Signal | Fit | Stage weight | Decay factor | Score |
|---|---|---|---|---|---|
| A | Pricing page visit, pre-pipeline | 0.9 | 0.9 | 0.95 (same day) | 77 |
| B | Pricing page visit, live proof of concept | 0.9 | 0.2 | 0.95 (same day) | 17 |
| C | Third party topic surge, no prior contact | 0.3 | 0.6 | 0.7 (4 days old) | 13 |
| D | Relevant new hire, pre-pipeline | 0.85 | 0.7 | 0.6 (6 weeks old) | 36 |
Account B shows the point plainly. Same signal, same fit, same freshness as account A, but a stage weight of 0.2 because the account has already proven its interest, so the identical visit tells you nothing new. An additive model would have scored A and B the same. This one correctly sends the pricing team's attention to A.
Where to set the sales-ready threshold
Set the cutoff from your own closed-won accounts, not a round number. Pull the last two quarters of won deals and find the score their winning signal would have produced.
There is no universal number here, and any piece that gives you one without your data behind it is guessing. Score the last two quarters of closed-won deals retrospectively, using whatever signal actually preceded the deal moving, and find where the distribution clusters. That is your working threshold. Recalibrate it quarterly, because fit criteria drift and stage definitions change as the pipeline itself changes shape, a point we cover in the forecast you can defend.
What still needs a person
Scoring and routing a signal can run without anyone touching every case. Deciding what to actually say to the buyer because of that signal should stay with a person.
The formula above tells a rep or an SDR function where to look first. It should never draft the message that goes out because of it. That line is the same one we drew in what you should never hand an agent, and why: a scoring model can be wrong about an account's fit and the cost is a wasted hour. A generated message that gets the account's situation wrong costs the relationship. Keep the model on the score. Keep the person on the conversation.
Two failure modes we see most often
In our own work standing this up across client engagements, two mistakes account for most of the models that get built and then quietly ignored within a quarter.
- Scoring every stage the same way. A team builds fit and decay properly, then skips stage weighting because it is the hardest of the three to define. The result scores accounts correctly on average and wrongly on the accounts that matter, which is worse than being wrong everywhere, because nobody notices until a rep stops trusting the queue.
- Refusing to decay a signal that looks committed. A funding round or a senior hire feels too significant to expire, so teams leave it undecayed. Left alone it drags stale accounts back to the top of the queue every time the model re-runs, which is exactly the CRM graveyard problem we set out in why most CRMs become graveyards: a record that never ages looks identical to one that just changed.
A scoring model earns trust one correct call at a time, and loses it the same way. Multiply, do not add, and the false positives that kill a team's faith in the queue mostly disappear on their own.
Frequently asked
Questions buyers ask about this
How do you score a buying signal so it does not flood sales with false positives?
Multiply three factors rather than adding points: fit (how well the account matches your ICP), stage weight (how much this signal type tells you that you did not already know at the account's current stage) and decay (how fresh the signal still is). A weak fit or a stale signal drags the score toward zero instead of being outvoted by a pile of weaker signals, which is what an additive score allows.
Why does additive lead scoring produce false positives?
Additive models sum points from every signal that fires, so a low fit account with several cheap signals, a webinar attendance, an email open, a content download, can reach the same score as a high fit account with one strong, well-timed signal. Addition has no way to make a bad fit worth zero. Multiplying fit, stage and decay does.
What is stage weighting in signal scoring?
Stage weighting adjusts a signal's value by how much new information it gives you given the account's current stage. A pricing page visit from an account with no prior sales contact is a strong forward signal. The same visit from an account already in a live proof of concept tells you almost nothing you did not already know, so it should score far lower even though the signal itself is identical.
How often should a decay window be recalculated?
Calibrate decay windows against your own closed-won data at least once a quarter. The starting point can come from a published framework, such as the decay table in the Revenue Signal Field Manual, but the true window depends on your sales cycle and should move as that cycle changes.
Should scoring and routing use the same model?
No. Scoring decides whether a signal is worth acting on. Routing decides who acts on it and by when. Treating them as one step is a common failure mode: a high scoring signal sent to a shared inbox with no named owner behaves identically to a low scoring one, because nobody is accountable for it either way.
Working on a real engine? Start with a conversation.
Tell us where you are. We will tell you what we see and where we would start.