Scoring a buying signal means answering three separate questions and keeping the answers separate: how recent is the event, how well does the account fit, and what does the event actually imply about budget. Most scoring models blend the three into one number, and that single decision causes most of the ranking problems teams blame on data quality.
The three questions, and why they must stay apart
Recency. When did the event happen? Note that this is not when you found out. Both dates matter, and the gap between them is your competitive position rather than the signal's strength.
Fit. Does this account resemble the ones you actually closed? Not the ones in the pitch deck.
Implication. What does this specific event say about money? A funding round says capacity exists. A job post says headcount was approved. A conference attendance says someone went to a conference.
Blend these and you get a number that cannot be argued with, because nobody can tell which dimension produced it. Keep them apart and a rep can look at a row and say "great fit, stale event, wait for the next trigger", which is an actionable sentence.
The ranking that works
Rank on fit first, recency second within each fit band, and use implication to decide the play rather than the order.
| Fit | Recency | What to do |
|---|---|---|
| High | Under 30 days | Contact now. This is the whole point of the system |
| High | 30 to 90 days | Contact, but lead with the problem rather than the event |
| High | Over 90 days | Leave it. Wait for the next trigger at an account you already like |
| Low | Any | Do not contact. A fresh event at a bad-fit account is still a bad-fit account |
That last row is where most pipelines leak. A fresh, dramatic signal is genuinely exciting and it overrides the ICP filter roughly every time, and the deal dies on fit six weeks later after consuming a rep's month.
Failure one: a dimension that does not vary
If every row in your feed already passed your ICP filter before scoring, then fit contributes nothing to the score. Every account scores high on it, the dimension is constant, and your "composite score" is recency with extra steps.
The test is easy. Look at the distribution of each dimension across a week of results. If one of them is flat, it is decoration.
Failure two: fake freshness
This one is subtle and it is worth understanding because it is a design mistake, not a data-quality problem.
Not every row in a signal feed is an event. Some rows are current-state matches: a company that fits your criteria today, surfaced because you asked for companies fitting those criteria. Nothing happened. There is no date.
The tempting shortcut is to stamp those rows with the time you found them. Do that and every match becomes maximally fresh by construction, sorts to the top of a recency-ranked feed, and pushes genuine events below the fold. The feed now ranks noise first and looks like it is working.
Signl handles this by storing no event date on current-state matches at all, and by dropping the recency dimension as not applicable when scoring them rather than substituting a value. A row with no event date is scored on fit alone, which is the only honest thing to say about it.
Stacking, and the version of it that is double counting
Two signals that point at the same conclusion through different evidence are genuinely stronger than either alone. A funding round supplies capacity; open sales roles supply direction. Neither tells you the other, which is exactly why the pair is informative.
Two signals that measure the same underlying thing are not a stack. Open roles and headcount growth are largely the same fact observed twice. Counting both inflates confidence without adding information, and it systematically over-ranks fast-growing companies that were already at the top.
Before you add a signal to a compound trigger, ask what it tells you that the others do not. If the answer is nothing, it is a duplicate.
How to act on the score
A score is a queue order, not a decision. The useful output of scoring is not a number next to an account, it is a sorted list plus a reason a rep can read in four seconds.
Signl scores every search result and every Loop match against the ICP profile you define in the dashboard, so results arrive ranked rather than merely matching. Signals also carry both the event date and the detection date, so the gap is visible instead of asserted, and rows without an event date are honest about not having one.
Defining an ICP is what makes the fit dimension vary. Without one, scoring is recency with extra steps.
Related reading
The two signals that stack best are covered in funding round signals and hiring surge signals. For defining the ICP the fit dimension depends on, see define your ICP.