Futureman Labs

Fractional Ops

Why Lead Scoring Fails: It's the CRM Data, Not the Model

Lead scoring models underperform almost every time, and the cause is rarely the algorithm. Here is how blank fields, duplicates, and stale data break scoring.

David Yu · October 21, 2026 · 9 min read

A laptop showing a support inbox triaged into queues, beside a headset

Marketing hands sales a list sorted by score, highest first. The rep works down the list in order, because that is the whole point of scoring: do not waste calls on leads that will not buy. Three calls in, the "92" turns out to be a student doing research for a class project. The "41" further down the list, the one nobody called, closes two months later after a different rep stumbles into it by accident.

Nobody re-trains the model after this happens. Usually nobody even looks at the model. The number just quietly stops being trusted, reps start working the list their own way again, and the lead scoring project gets filed under "didn't really work here." That verdict is almost always wrong about the cause. The model is rarely the problem. The data it was built on is.

What lead scoring is actually trying to do

Lead scoring assigns each contact or lead a number meant to represent how likely they are to become a customer, so sales can prioritize a finite amount of selling time against the highest-probability opportunities first. Two broad approaches are in use today:

  • Rule-based scoring, where a team manually assigns point values to attributes and actions (job title "VP" = +10, downloaded pricing page = +15, opened three emails in a week = +5) and adds them up.
  • Predictive scoring, where a machine learning model looks at your historical closed-won and closed-lost records, finds the patterns that actually correlated with becoming a customer, and scores new leads against those patterns instead of a human's guess at what matters.

HubSpot's predictive lead scoring, available on Sales Hub Professional and Enterprise, works this way: it trains on your own historical CRM data and the contact's interactions with your company, drawing on signals like email opens, link clicks, web visits, form fills, and meeting bookings, and produces a "likelihood to close" score per contact that updates as new behavior comes in. Salesforce's Einstein Lead Scoring is built the same way in principle, learning from your account's own closed deals rather than a generic industry model, and Salesforce's implementation guide sets a concrete data bar before you can even turn it on: at least 1,000 leads created in the last 200 days in each lead segment you plan to score, with a recommendation to run the Sales Cloud Einstein Assessor first to confirm your data actually clears that bar. Pipedrive takes a lighter native approach, with manual deal probability and stage-based probability built in rather than a predictive score; teams that want something closer to automated lead scoring in Pipedrive typically assemble it from custom fields and workflow automation or bring in a separate tool.

Either kind of model, rule-based or predictive, has the same dependency: it can only be as accurate as the data describing the lead. That is the part most teams skip past.

Why the model usually isn't the problem

A scoring model is a function of its inputs. When the inputs are wrong, incomplete, or duplicated, the output is a confident-sounding number built on a bad foundation, and confident-sounding is worse than obviously unreliable because people act on it anyway. Four CRM data problems do most of the damage.

Blank fit fields remove the signal entirely. Firmographic fields like industry, company size, and revenue band are usually part of what tells a model (or a human-built rule set) whether a lead fits your ideal customer profile. When those fields are empty, which happens constantly on inbound form fills and manually created records, the model has nothing to score against on that dimension. Salesforce's own documentation flags this directly: guidance for setting up Einstein Lead Scoring warns that a high rate of blank records in the fields a score depends on produces unreliable results, because the model cannot find a pattern in a field that is empty three records out of five.

Duplicate records split the real signal across multiple entries. If the same company or contact exists in your CRM as two or three separate records, because a form fill created a new lead instead of matching to the existing one, their engagement history splits with them. Half their email opens sit on one record, half their website visits sit on another, and neither record looks as engaged as the real, combined lead actually is. A hot account can score as lukewarm purely because its activity is fragmented rather than because the account is genuinely less interested. Duplicate rates of 5 to 10 percent are common in CRMs without an active data quality process, which is enough duplication to measurably distort a model trained on that history.

Stale firmographic data teaches the model the wrong lesson. B2B contact data decays continuously, not in occasional bursts, as people change jobs, companies get acquired, and titles get updated on LinkedIn long before anyone updates the CRM. A lead scored accurately six months ago on title and company size can carry outdated values today, and if enough of your historical training data carries similarly outdated values, a predictive model trains on a distorted picture of what a good-fit customer actually looked like.

Operational scoring errors compound on top of dirty data. Even with clean records, rule-based scoring breaks in specific, avoidable ways: the same campaign double-counted because a lead got added to it twice, the same action scored repeatedly because no cap was set on it, or picklist values that drifted over time so "Enterprise" and "enterprise" and "Ent." are three different strings a rule treats as three different things instead of one. None of this is a flaw in the scoring logic. It is the scoring logic faithfully doing what it was told with data that was not ready for it.

The pattern across all four: teams reach for new scoring weights or a smarter model when the score feels wrong, when the actual leverage is almost always in the data feeding it. This is the same diagnosis that shows up across most CRM data hygiene problems: the system is not lying to you by design, it is faithfully reporting on data nobody kept current.

How to find out if your scoring problem is actually a data problem

Before touching a single weight or retraining anything, run this audit.

1. Pull your highest-scored leads from the last two quarters and check what happened to them. List every lead that scored in your top tier and did not convert. For each one, check whether the fields the score depends on were actually populated and accurate at the time they were scored, or whether the high score was propped up by stale or missing data that happened to look favorable. This single check surfaces most data-driven scoring failures without touching the model at all.

2. Pull your closed-won deals and check how they scored on the way in. If a meaningful share of your actual customers scored low or medium before they converted, your model's signal is weak, and the next question is whether that is because the signal genuinely does not exist in your business or because the fields it depends on were not reliably populated for those leads either.

3. Run a duplicate check against the specific records in both lists. Most CRM platforms ship a native duplicate-detection tool. Check whether any of the leads flagged in steps one and two exist elsewhere in the CRM under a second record, which would mean the engagement history used to score them was incomplete by design.

4. Check field completion rates on exactly the fields the score weights, not your whole database. A CRM can look reasonably clean in aggregate while the five or six fields your score actually depends on sit mostly blank, because nobody prioritized those specific fields in day-to-day data entry. Completion rate on the scoring inputs is the number that matters, not an overall health score.

If steps one through four turn up blank fields, split duplicates, and stale firmographics sitting underneath your worst-scored wins and your best-scored losses, you have your answer, and it is not the algorithm.

Fixing the data before you touch the model

Gate the fields the score depends on, don't just ask reps to fill them in. If industry, company size, or a specific behavioral field drives your score, make the record incomplete or ineligible for scoring until those fields are populated, rather than relying on someone to remember. The same required-field discipline that fixes CRM required fields broadly applies with extra force to the handful of fields a score is actually built on.

Deduplicate before you retrain, not after. Run a merge pass on the specific lead and contact records that feed your model before any retraining cycle, so the historical data the model learns from reflects one engagement history per real lead rather than history fragmented across duplicates. A duplicate record cleanup done once, on a schedule, prevents this from becoming a recurring tax on every future scoring refresh.

Automate field capture instead of depending on manual entry. The fields that most often sit blank, like lead source, triggering campaign, or a one-line context note, are exactly the fields that are cheapest to capture automatically at the moment the record is created and most often skipped when a human has to type them in under time pressure. This is the same principle behind MQL to SQL handoff fixes: structure the system to carry the data with the record automatically, and have a human approve or correct it rather than originate it from scratch.

Re-baseline the model against a validated, deduplicated, field-complete dataset, not your full historical mess. Once the inputs are clean going forward, pull a cohort of 100 to 200 recent closed-won and closed-lost records that meet your new data standard, and validate or retune the score against that cohort specifically, rather than the entire historical database including years of records that predate the cleanup.

Re-enrich on a trigger, not a batch schedule. Because firmographic data decays continuously, a quarterly bulk refresh still leaves months of drift in between. Re-enriching a record the moment it re-enters an active deal or hits a scoring threshold catches decay closer to when it happens, instead of carrying stale inputs into a score that gets acted on immediately.

None of this requires abandoning lead scoring. It requires accepting that a score is a report on your CRM data's quality before it is a report on the lead, and treating the first problem as the one worth fixing first. If you are not sure whether your pipeline overall has this kind of gap or a genuine coverage shortfall, check your pipeline coverage ratio to see where the real problem sits before deciding what to fix next.

Is your pipeline coverage what you think it is?

Run the free calculator: coverage ratio, required pipeline, and the gap, in ten seconds. Email yourself the result and the five fixes.

Open the calculator

Frequently Asked Questions

Why does lead scoring fail even with a good model?

Most lead scoring failures trace back to the inputs, not the scoring logic. Blank firmographic fields, duplicate records that split a lead's engagement history, and stale titles or company sizes all feed a scoring model bad data, and a model built on bad data produces a confident-looking number that is simply wrong.

How much CRM data do I need before turning on predictive lead scoring?

Salesforce's own implementation guide for Einstein Lead Scoring requires at least 1,000 leads created in the last 200 days for each lead segment you score, and recommends running its Sales Cloud Einstein Assessor first to check whether your data actually meets that bar. HubSpot's predictive scoring, by contrast, is gated by subscription tier (Sales Hub Professional or Enterprise) rather than a published volume minimum, but it still trains on your historical CRM data, so thin or messy history produces a thin or messy model.

Do duplicate CRM records actually affect lead scoring?

Yes. When the same company or contact exists as two or more records, engagement activity like email opens, site visits, and form fills splits across them. Each duplicate looks less engaged than the real, combined lead actually is, which drags scores down and can cause a hot lead to get deprioritized because its activity is scattered across records instead of consolidated on one.

Should I fix my CRM data before or after building a lead scoring model?

Before. Fixing scoring weights on top of bad inputs just tunes a model to match bad data more precisely. The more reliable sequence is to audit the fields the score actually depends on, fix the structural causes of missing and duplicate data, and then build or retune the model on a cleaner foundation.

Does Pipedrive have lead scoring like HubSpot or Salesforce?

Not in the same form. Pipedrive's native features are deal probability (a manual, per-deal estimate that can override stage-based probability) and stage probability, which default to 100 percent per stage unless an admin changes them. Teams that want an automated lead or deal score in Pipedrive generally build one from custom fields and workflow automation, or pull in a third-party tool, rather than flipping on a built-in predictive score.

Want help mapping what to automate first?

Book a short call. No pitch deck, just a working session on where your operations leak time and money and what to fix first.

Book a call