How the bot scores and routes a lead
A structured lead arrives at the move-picker with a clean read of intent, urgency, fit signals, and free enrichment. Now the bot has to commit. Four moves, one pick per lead. Two overrides that bypass scoring entirely. A round-robin owner assignment that respects who’s on call. The whole step is small. The hard work was the reading.
Key takeaways
- Four moves, one pick per lead: hot route, warm follow-up, nurture, reject.
- Two override gates fire before scoring: partner allowlist forces hot; reject gate kills off-ICP, competitors, support, and one-line junk.
- The linear scorer reads the ICP file and combines fit signals, urgency, intent, and enrichment into a single 0–1 score.
- Hot needs three things at once: score ≥ 0.7, sales-shaped intent, and either hot urgency or a clear deadline phrase.
- Round-robin assignment respects on-call hours; a 15-minute escalation timer re-routes if the first rep doesn’t acknowledge.
Four moves, one pick
The two overrides come first
Before any scoring, two override gates fire on every lead.
The partner allowlist forces hot route. Companies you already have a relationship with — named partners, current customers asking about an expansion, the four agencies you trade referrals with — should never be slowed down by score thresholds. If the email domain is on the partner allowlist (a small list in the policies file), the move is hot. The owner is the named partner-account contact. The ping carries a tag that tells the rep this isn’t a cold lead. An existing customer asking about an upgrade should not be scored by the same rubric as a stranger filling out a form for the first time.
The reject gate kills off-ICP fast. Four signals drop a lead straight into reject without ever hitting the scoring step. The email domain matches a competitor on the competitor list. The intent extractor returned support — that’s a help-system question, not a sales lead, and it routes to your support inbox instead. The screen earlier flagged a vendor pitch. Or the message is a one-liner with no fit signals, no urgency phrases, and no specific question. (These are almost always typos, tests, or soft “just looking” messages that belong in nurture, not in front of a rep.) Each rejection records its reason in the audit row so you can spot a misfire on review.
Override gates exist for the same reason guardrail keywords exist on the review responder. Some categories of leads have a right move so obvious that running them through scoring is just expensive noise. Catch them at the front of the pipeline. The scoring step has fewer things to balance, and the team never sees the rejected ones.
The scoring step
For everything that survives the overrides, the move-picker computes a single fit score from 0 to 1. The score combines four inputs from the structured lead:
- Fit signals against the ICP doc. The ICP doc lists the industries, company sizes, geographies, and roles you sell to, plus disqualifiers. The picker matches the extracted fit signals against that list and produces a sub-score.
- Urgency level. Hot urgency adds a fixed bump. A deadline phrase adds another. None contributes nothing.
- Intent shape. Sales-shaped intents (demo, quote, partnership) carry weight. Info contributes a smaller amount. Other contributes nothing on its own.
- Enrichment. A business-domain email adds a small bump over a free-mail address. The absence of a phone number doesn’t penalize; the presence of one slightly helps.
The combination is a small linear formula in code, not a model call. It runs in microseconds. It costs nothing. It’s fully auditable — every score in the audit row breaks down into its four sub-scores, so you can see why a given lead came out at 0.62 instead of 0.75. When you change your ICP, the formula doesn’t change. The ICP doc does, and the fit-signals sub-score reads the new doc on the next refresh.
The three thresholds
From the score, the move-picker chooses between hot, warm, and nurture. Reject was already handled.
Hot needs three things at once: score at least 0.7, intent that’s sales-shaped, and either hot urgency or a clear deadline phrase. All three is the bar because hot pings are expensive — not in dollars, in attention. The rep’s phone goes off. A wrong hot ping costs you trust in the system. A score of 0.71 with no urgency is a warm lead, not a hot one. The rep gets to it Monday, not at midnight.
Warm is a score of at least 0.5 with a sales-shaped intent. These don’t ping. They show up in the team’s draft queue with the proposed first reply already written. The rep glances at the draft, edits a sentence, sends it. The follow-up SLA is “within one business day,” not “within fifteen minutes.” That’s the right SLA for these.
Nurture is everything else: low score, info-only intent, or no urgency on a borderline fit. The bot tags the contact in the CRM with the right campaign, adds them to the slow-drip list, and writes a row to the 8am digest the team reads in the morning. Long-tail fits that show up later as real leads (because their need finally became urgent six months after first contact) get re-evaluated automatically when they re-engage. The dedupe step in intake checks for prior leads on the same email and surfaces the history to the qualifier.
Routing the hot move — owner and escalation
Hot leads need an owner. The routing step picks one round-robin from the list of on-call sales reps in the policies file, with two refinements that matter on a real team. On-call hours are respected. A lead that lands at 3am gets queued for the next on-call rep waking into their shift — not pinged into the previous shift’s now-asleep phone. Acknowledgement is timed. If the assigned rep doesn’t click the acknowledge button within fifteen minutes, the lead re-routes to the next rep on the list with a quick “reassigned because the first one didn’t pick up” tag. The CRM owner field is set atomically when the rep clicks acknowledge, so two reps can’t both think they own the same lead.
For warm leads, the owner field stays unassigned until a rep picks it up from the draft queue. For nurture leads, it stays unassigned indefinitely (campaigns don’t need owners). For partner-override hot leads, the owner is forced to the named partner-account contact, ignoring round-robin entirely.
What the next post handles
By the end of this step every lead has a move, a score breakdown, and (for hot moves) an assigned owner with an escalation timer. What it doesn’t yet have is the actual auto-acknowledgement reply — the warm draft and the optional hot first-touch. The next post is about how that reply gets composed without the bot inventing a discount, an SLA, or an availability promise you don’t offer.
All posts