---
id: casos/lead-scoring
area: RevOps
usage: common
effort: medium
grain: Lead or open deal x calculation day
---

# Lead scoring

A 0 to 100 score for every lead or open deal, with rules the sales rep understands, weights taken from what has already closed and the score written back to the CRM.

## Executive summary

**For:** Pre-sales and sales teams with more leads than they can handle well.

**What it solves**

- The rep knows who to approach first and why, with the reason for the score.
- The score is calibrated on what has already closed at the company, not on hunches.
- The score shows up in the CRM and becomes a task, with no side spreadsheet.

**Why it matters:** Without priorities, the team follows the newest or the loudest lead, and the good ones go cold in the queue. An explainable score changes the order of the day without machine learning and can be audited: if band A does not close more than band B, the scoring is wrong.

**Business questions it answers**

- Which of today's leads should the SDR approach first?
- Are band A leads closing more than band B leads?
- How many high band leads came in this week and how many already have a task?
- Which criterion weighed the most in the deals we won last half year?
- Which high score deals have no owner?

**What you need**

- CRM connected with deals, contacts, activities and the history of wins and losses
- The profile (ICP) and intent criteria agreed with sales
- Permission to write fields and tasks in the CRM

**What you get**

- A table with score, band and reason for each lead or deal, recalculated every day
- Score fields updated in the CRM and a task created for high band deals
- A win rate by band panel to audit the scoring
- An AI agent that explains the score of any lead

## Detailed

### The problem

The team treats every lead the same or follows the temperature the rep marks when they remember. When someone builds a score, they often use fields that are only filled in after the decision or penalize blank fields: the score looks great on history and is useless the next day. Without an audit by band, nobody knows whether the scoring works.

### Business rules

1. **Blocks with declared weights that add up to 100.** Split the score into capped blocks: profile (ICP fit: industry, size, job title, number of users), intent (asked for a proposal, booked a meeting, lead source) and engagement (replies, meetings held, recent activity). A real design used profile 30, intent 40 and engagement 30. Each criterion has fixed points and the reason is stored next to the score. (Avoid: Add loose points, with no cap, until the score goes past 100.)
2. **Weights come from historical conversion.** For each criterion, compare the win rate of deals with and without the attribute, among deals closed in the last 12 months. A criterion that does not change the win rate scores nothing. Recalibrate every six months. (Avoid: Weights set in a meeting based on what seems important.)
3. **Only what exists at decision time.** Use only signals available when the score is calculated: time to first contact, first week calls, company data. Fields filled in after the sales decision (days to proposal, calls in later weeks, loss reason) contaminate calibration and make the scoring look better than it is. (Avoid: Calibrate with fields the rep fills in when closing.)
4. **A blank field is neutral.** An empty field is missing data, not a negative signal. In a real case, the fill rate of a qualification field dropped from almost 100% to about 30%, and treating blank as 'does not have it' pulled down the score of good deals. Deduct points only for explicit negative answers. (Avoid: Deduct points from whoever left the field blank.)
5. **Fit cannot be circular.** If the ICP criterion includes 'already qualified' or 'already had a meeting', anyone who moved forward enters the ICP automatically and the score validates itself. Use the attributes declared at entry, which do not change later. In a real case, counting every lead as an MQL inflated the number about 3 times: MQL was only whoever had fit. (Avoid: ICP = declared fit OR already qualified.)
6. **A knockout rule caps the score.** Some criteria outweigh the sum: outside the served region, a banned segment, collateral below the minimum in lending. In these cases the score has a low cap, whatever the rest. Declare the list and show the reason. (Avoid: Let an off-profile lead make up for it with engagement.)
7. **Manual temperature is not the base.** The temperature marked by the rep (hot, warm, cold) is a subjective reading and usually has low coverage: in a real case, 8 in 10 leads had no value and the fill rate fell year after year. Use it as a complementary signal, never as the score. (Avoid: Use the card's temperature as the official priority.)
8. **The day's score is stored.** Store each day's score or a history with valid from and valid to. Recalculating the past with the new scoring rewrites what the team saw and prevents measuring whether band A closed more. In a real case, a new rule changed the qualification of signups from a month already reported and the month's number shrank on its own. (Avoid: Overwrite every lead's score on each run.)
9. **Write to the CRM with safeguards.** Update the score fields in the CRM only when the value changed, create at most one task per deal every 30 days and start in simulation mode, saving the plan in a log table before writing for real. (Avoid: Rewrite every field and create a task on each run.)

### How a band becomes an action

Example cutoffs. Calibrate the limits by each band's win rate in your data.

- **direct request for a proposal or contact** → Immediate priority, task created
- **score from 70 to 100** → Band A: approach the same day
- **score from 40 to 69** → Band B: task in the cadence
- **score from 20 to 39** → Band C: nurturing
- **score below 20 or a knockout criterion** → Band D: out of the queue, with a reason

### Definitions

| Metric | Definition |
|---|---|
| Score | sum of profile, intent and engagement points, from 0 to 100, calculated once a day per lead or open deal |
| Profile block | ICP fit points from the attributes declared at entry, up to the block cap |
| Intent block | points for explicit interest signals: proposal request, booked meeting, source |
| Engagement block | points for real interactions in the last N days: reply, meeting held, answered call |
| Band | score cut into A, B, C and D by declared limits |
| Win rate by band | won / (won + lost) among closed deals, by the band they had on the day they entered the queue |
| Band A lift | band A win rate / win rate of all deals in the same period |

### Pitfalls

- **Too good on history.** A propensity model scored very well on the past because it used calls from later weeks and days to proposal, which only exist after the decision. How to avoid: Calibrate only with signals prior to the decision and test on months that were not used for calibration.
- **Blanks punished good deals.** With the qualification field filled in on only a third of deals, treating blank as a negative answer pushed good deals to band D. How to avoid: Blank is neutral.
- **Famous and fake profiles.** Generic accounts or accounts with millions of followers (social networks, government bodies) earned reach points and went to the top. How to avoid: A block list and a cap for size signals.
- **Duplicate tasks.** The sync created a new task on every run and the rep stopped looking at the queue. How to avoid: One task per deal per window, with a log of what was already sent.
- **The month shrank after it was reported.** The recalculated scoring rewrote the qualification of old signups and the month's total changed after it was presented. How to avoid: Freeze the verdict on the day the lead arrived.

### Acceptance test

- [ ] Every lead or open deal has a score between 0 and 100, a band and a reason calculated today.
- [ ] On deals closed in the last 6 months that were not used for calibration, the win rate falls from A to B, from B to C and from C to D.
- [ ] No score criterion uses a field filled in after the calculation date.
- [ ] The CRM fields match the day's score table, and no deal got more than one task in the 30 day window.
- [ ] A past day's score does not change when the scoring is recalculated.

### Context document

```text
Lead scoring
- Source: daily score table (lead or deal x day), with score, band, points per block and reason.
- Score = profile + intent + engagement, from 0 to 100. Current weights: profile <x>, intent <y>, engagement <z>.
- Bands: A from <a> to 100, B from <b> up to below <a>, C from <c> up to below <b>, D below <c> or with a knockout criterion.
- The score is not a probability. Never say 'X% chance of closing'.
- A blank field is neutral. Only a negative answer deducts points.
- To explain a score, cite the points of each block and the stored reason.
- To evaluate the scoring, compare win rate by band using the band on the day the deal entered the queue, never today's.
- The temperature marked by the rep is only a complementary signal.
Client exceptions:
- <client>: knockout criteria = <list>.
- <client>: a direct proposal request creates a task, whatever the score.
```

### Variations

- **Statistical model:** Once the rules based scoring is audited, a calibrated model can replace the weights, keeping the reason readable and the test by band.
- **Credit score:** Weights by collateral, income and the ratio between credit and collateral, written back to the card in the workflow.
- **Repurchase propensity:** The same scoring over existing customers, to learn who tends to buy again and when.
