Lead scoring on clean sales data.

A lead score is a number that ranks which leads are worth a call today. It is only as trustworthy as the records underneath it.

Lead scoring learns from past deals to rank the open pipeline, so attention flows to the leads most likely to convert. We walk it the way the field is built: what it is, why clean records are the precondition, how matching and scoring work, what honest scoring unlocks, and where it is heading. The papers behind each idea are linked, so you can read the source yourself.

The three ideas to carry: record linkage, gradient-boosted trees, and predicting cause rather than correlation.

Put the next conversation in order
Past deal outcomesCurrent lead signals
Open leadsIllustrative priority
  1. NorthwindDemo completed · budget confirmed
  2. OaklinePilot requested · timeline open
  3. AcmeEarly conversation · budget unknown

Relative priority, not a probability of winning.

Learn from past outcomes, then rank leads using their current signals. Clean, current records make the inputs more useful; a high rank does not guarantee a sale.

A learned ranking, not a verdict.

A model reads the history of past deals, learns what separated wins from losses, and applies that to the open pipeline.

A lead score answers one question: of all the people and companies in the pipeline, which ones are worth a call today. The output is a probability or a rank, a sort order for a rep's day, not a yes or no. Point a model at past deals, let it learn what a winning deal looked like, and have it rank the open ones so a morning goes to the few that matter instead of the hundred that do not.

The catch shows up before the model does. The score is a function of the records, and the records are messy. The same account sits in the system twice, once as "Acme Inc" and once as "Acme, Incorporated," so its activity is split across two rows and neither looks busy. So lead scoring is really two joined problems. First, deciding which rows describe the same account and folding them into one trustworthy record: a field called record linkage or entity resolution. Then, learning a ranking from those clean records.

A ranking starts with a defined outcome
  1. Resolve the records

    Connect activity to the correct account.

  2. Choose a prediction target

    For example, conversion within the next 90 days.

  3. Build available features

    Use information known at the prediction time.

  4. Rank and evaluate

    Measure whether higher-ranked leads reach the target more often.

A score estimates a defined outcome from available evidence. It is not a verdict on the account.

The number looks confident and points the wrong way.

A score built on messy records learns from noise. The failures are quiet, because the output still looks tidy.

Record linkage

A duplicate splits a history.

When one account lives in two rows, its activity is divided. Each copy looks quieter than the truth, so a model that rewards engagement scores both copies low. Deduping is a correctness step on the inputs, not tidiness.

Features · missingness

Blank fields are not zeros.

A missing title or company size is unknown, not "none." Treating absence as a value teaches the model the wrong lesson. Handling missingness honestly is part of the job, not an afterthought.

Stale records

Stale is worse than missing.

A deal that closed but still reads "open," a last-touch date from a quarter ago: these are confident-looking lies. They corrupt the labels the model learns from, which is harder to catch than a visible gap.

Ambiguity

Matching is a judgment call.

Are "J. Smith at Acme" and "John Smith, Acme Corp" the same person? Record linkage formalizes this as a decision under uncertainty, weighing field-by-field evidence, with a deliberate middle zone for pairs a human should review.

Prediction vs cause

Prediction is not causation.

A plain conversion model rewards leads that would convert with no help, which wastes outreach on the already-sold. What a campaign wants is the incremental effect of acting. Naming this gap early keeps the score honest.

Drift

A score is perishable.

A model trained on last year's pipeline decays as the market, the product, and the team change. And the history is observational: reps already worked the leads they liked, so it records who got attention, not a clean experiment.

Clean first, then rank.

Turn many rows into one record, build features a model can read, score with trees, and separate correlation from cause.

  1. 01Link

    Resolve account identities.

  2. 02Featurize

    Use information available now.

  3. 03Score

    Predict a defined outcome.

  4. 04Target

    Separate prediction from uplift.

  5. 05Evaluate

    Check ranking and calibration.

Five jobs in a row, each doing one thing, with cleaning ahead of scoring.

1Clean first: turn many rows into one record

Decide that two rows are the same account.

Compare candidate pairs field by field, name, domain, address, phone, score the agreement, and decide: same, not same, or send to review. Blocking narrows the comparison to plausible pairs so the work stays tractable. The decision-theoretic core is Fellegi and Sunter (1969), which casts matching as a likelihood-ratio test with controlled error rates and a deliberate middle zone for a human.

This is the "many messy rows become one clean record" beat. Worth stating plainly, though: a merged record is not automatically a correct one. The honest design keeps the uncertain pairs visible rather than guessing.

Join activity to the same resolved account

CRM record

Emails4Account 482

Meeting record

Meetings3Confirmed account 482
Combined history

4 emails · 3 meetings for one account

Identity resolution prevents a split history from understating engagement or a false merge from inflating it.

2Build features the model can read

From clean records to signals.

From the cleaned records, derive signals: firmographics like size and industry, engagement like emails opened and meetings held, recency such as days since last touch, and pipeline stage. Encode missingness explicitly rather than faking a value, so an unknown title stays unknown.

The result is tabular, mixed-type, gappy data: numbers, categories, and blanks side by side. That shape is exactly what the next method was built to read, which is why it became the workhorse for this kind of ranking.

Build features without hiding missingness
FeatureValue
Company size200 employees
Meetings in period3
Days since last touch6
Contact roleMissing; missingness flagged
Features should be available at prediction time. Missing values need explicit handling rather than invented facts.

3Score with gradient-boosted trees

Many small trees, each correcting the last.

The workhorse for tabular ranking builds many small decision trees in sequence, each one correcting the errors of the trees before it, and adds their votes into a single score. The idea is Friedman (2001), which frames function fitting as stagewise descent.

Two engineered systems made it fast and standard on real datasets: XGBoost (Chen and Guestrin, 2016) and LightGBM (Ke et al., 2017). Their honest fit for this work: they handle missing values and mixed feature types directly, which is why they suit CRM-style data.

Add the outputs of small trees
Initial score
  + tree 1 contribution
  + tree 2 contribution
  + tree 3 contribution
  = ensemble score
Next tree learns from the remaining error

The final score can then be calibrated or used for ranking.

Gradient boosting adds models that improve the current objective. An uncalibrated score is not automatically a conversion probability.

4From "who will buy" to "who will buy because we acted"

Separate correlation from cause.

Plain conversion scoring has a known blind spot: it rewards people who were going to buy anyway. The history is also observational, because reps already worked the leads they liked. Rosenbaum and Rubin (1983) give the tool for that bias: the propensity score, the probability a record would have been treated, used to compare like with like.

Gutierrez and Gérardy (2017) build on it with uplift modeling, which estimates the incremental lift of outreach and sorts the three standard approaches: two-model, class transformation, and modeling uplift directly. A high predicted-conversion score is not proof that outreach caused the outcome, and saying so out loud keeps the page honest.

Conversion likelihood and uplift are different
Lead typeWithout outreachWith outreach
Already likely to buyHighHigh
Responsive to outreachLowerHigher
UnresponsiveLowLow
Uplift asks about the difference

Which lead is more likely to convert because of the action?

Causal targeting needs evidence about treatment effects. A predictive model alone does not establish that outreach causes the outcome.

5Check the ranking, not just the accuracy

Does the top of the list really convert.

A lead score is judged by whether the top of the list really is the most likely to convert. Gains-style evaluation asks a plain question: does working the top decile beat working at random. And because pipelines move forward in time, the honest test validates on held-out time periods, training on the past and checking on a later stretch rather than a random split.

This is also where matching shows its shape. The middle zone of uncertain pairs is a feature, not a bug: it keeps low-confidence cases visible for a human instead of letting a guess flow downstream into the score.

Check whether the top-ranked group converts
All leads10%Illustrative conversion rate
Top-ranked group25%Illustrative conversion rate
Lift = 25% / 10% = 2.5×

Evaluate on a later, held-out period and compare with the appropriate baseline.

Ranking evaluation checks the actual target outcome. Lift, calibration, and performance over time answer different questions.

Clean records under a score change the order of a sales day.

Stated at the field level: these are the benefits honest scoring tends to unlock for a sales team, not a description of any one product.

When the records are trustworthy and the model reads real history, a rep works a list that reflects the pipeline as it actually is. The harder cases in the section above, the duplicate account and the stale deal, are exactly the ones that decide whether a score points at the right call or the wrong one.

A defensible order of operations.

A rep works the top of a list built from real history, not a list distorted by duplicates and stale rows.

One account, one view.

Merging duplicates and matching contacts to companies means a score reflects the full relationship, not a fragment of it.

Spend where it changes the outcome.

Uplift framing points outreach at the leads an action actually moves, rather than the ones already certain or already lost.

A record clean enough to trust downstream.

The same cleaning that helps the score helps everything that reads the CRM: reporting, routing, and forecasting.

The direction the field is heading.

We describe the direction, not a roadmap of our own.

One pipeline

Cleaning and scoring as one loop.

The field increasingly treats record quality and modeling as a single pipeline rather than two separate projects handed off to each other.

Causal targeting

What changes the outcome, not just what predicts it.

Uplift and policy-style methods keep maturing as teams ask which action moves a deal, rather than which signal happens to correlate with one.

Calibration

Honesty about uncertainty.

Growing attention to whether a score's probability means what it says, and to flagging low-confidence cases for a human rather than guessing.

Drift monitoring

A deployed score is perishable.

Routine checks that a model still ranks well on recent data become standard practice, since a score trained on last year decays as the team and market change.

The through-line

The records and the model, both kept honest.

A score is only as good as the records under it. The durable work is keeping both trustworthy, which is where the page started.

The papers behind this page.

Keep reading.

Sibling explainers in the Research section.

Talk. Done.

A score is only as good as the records under it. Keep both honest, and a sales day sorts itself. See it on a real call.

No app required. Just your phone number.