How does AI lead scoring actually work inside a CRM?
The honest version. What a vendor means by a lead score, what is actually in the repository, and the four questions that separate the two.
By Eugene Romanov·Published
The short answer
In most small-business CRMs, including the one this page can show you the files for, there is no model assigning numbers to leads. Three things run instead: replies are classified so a bounce never counts as a person answering, real replies nobody has answered are pushed to the top of a daily list, and the calling queue is ordered by hand-written arithmetic about the hour rather than by a prediction.
SHT-02What drives the number
What vendors mean by lead scoring, and what is actually in the repository
Lead scoring usually describes a number on a lead card, produced by a model trained on which past leads closed. No such model runs in any of the systems this studio has in production, and this page will not pretend otherwise. What exists is smaller and easier to defend: a classifier that sorts inbound replies into four kinds, a query that finds real replies nobody has answered, and an arithmetic sort deciding which number a person should dial next. Each of those is a rule somebody wrote, can read and can change. Saying it plainly is worth doing, because a score nobody can explain is a score a sales team learns to ignore, usually within a month of launch.
Classification is the part that actually pays
lib/followups/reply-classifier.ts separates four cases: a bounce, an automatic out-of-office, an opt-out, and a real human reply. Before it existed every inbound message promoted a lead to replied and paused its sequence, so mail-daemon bounces and vacation autoreplies produced a pipeline full of fake interest that somebody undid by hand every week. Bounces are caught first, by sender and by subject, because they are the strongest signal. Opt-out language is checked only in the first couple of hundred characters, since the word unsubscribe sits in the quoted footer of our own outgoing mail and a whole-body check matches our footer rather than the reader. That single detail is the difference between a classifier and a nuisance.
Prioritization: the oldest unanswered real reply, at the top, until it moves
lib/followups/hot-replies.ts takes the leads the classifier promoted to replied, keeps the ones nothing has been sent to since, sorts them oldest first and prints them into the daily digest with an age beside each one, capped at ten with the remainder counted. The field it measures against is the last outbound timestamp, chosen because inbound classification never touches it: if somebody answers privately from their own mail client instead of through the system, that lead keeps appearing until the record is moved. That is deliberate. An instant alert only works if you happen to be holding your phone, and a list which refuses to shrink until the work is done is what survives a bad week.
The one number on a lead is about the clock, not the lead
There is a numeric score in production and it deserves describing precisely, because it is nothing like a model. In app/api/va-log/route.ts each lead carries a small integer made of two parts: a fixed priority for the state it sits in, plus a score for what time it currently is where that lead lives, with the early-morning and end-of-day windows scoring highest and the lunch hour scoring negative. The queue sorts on that, so a fresh lead in a good window outranks a callback in a bad one. It predicts nothing about whether anyone will buy. It answers a smaller question, whether this is a sensible minute to dial this number, and a smaller question is one you can check.
Four questions that separate a real scoring feature from a number
Ask them in this order and the answers arrive fast. What was the model trained on, and was it your leads or somebody else's. What counted as a win in that training data, because a demo booked and a job paid for are different labels and produce different scores. Show me one lead and tell me why it scored what it scored. And what happens to the score when a salesperson disagrees with it. A vendor who answers all four has built something. A vendor who answers with a case study has built a number, and the failure mode is not that the number is wrong. It is that nobody can tell when it is wrong.
When lead scoring is the wrong thing to buy
Scoring answers the question which of these many leads first. If you get a handful of inquiries a week, that is not your question, and buying an answer to it changes nothing. At that size the real question is which of these has nobody replied to, and it needs a status field and a list rather than a model. Scoring is also wrong when your records are patchy, because a score computed over missing fields is confident and meaningless. And it is wrong when nobody will behave differently because of it: a ranked list only changes anything if somebody works it from the top. Fix the record and the habit first, and the ranking may turn out never to have been the problem.
SHT-03In this hub
How much does a custom CRM actually cost?
The commonly quoted range describes a different kind of company building a different kind of system. Here is the arithmetic underneath it.
Should you build a custom CRM or buy one?
Start from buy. Make the build argue its way in. Here is the argument it has to win, and the cases where it genuinely does.
How long does it take to build a custom CRM?
The schedule is not decided by how fast anyone types. It is decided by how quickly questions get answered and what state your data is in.
Who owns the code and the database when someone builds your system?
The answer that matters is not in the contract's intellectual property clause. It is in what stops working the day you stop paying.
Moving a business off spreadsheets: what actually has to happen
Nobody has ever been stopped by the number of rows. What stops migrations is that half the columns mean something only one person knows.
Custom CRM vs Jobber: when each one actually wins
Written by someone who builds the custom side, which is why the answer below is the product more often than not. The interesting part is the line where that flips.
SHT-04General notes
The questions people actually ask.
- N01How does AI lead scoring work inside a CRM?
- In the systems this studio runs it does not happen at all: nothing is trained on past outcomes and no lead carries a predicted number. Three mechanisms do the work a score is usually sold for. Inbound replies are sorted into bounce, automatic reply, opt-out and real. Real replies nobody has answered are listed oldest first and stay listed until the record moves. And the calling queue is ordered by a small integer about the local hour.
- N02Is there any numeric score on a lead at all?
- One, and it is about the clock rather than the lead. Each lead gets a small integer combining a fixed priority for its state with a score for the local hour where it sits, so the queue puts early-morning and end-of-day leads first and pushes the lunch hour down. It predicts nothing and it is arithmetic somebody wrote by hand.
- N03Why not build a real lead-scoring model?
- Because at small-business volumes there is not enough closed-won history to train one that means anything, and an unexplainable number on a lead card gets ignored inside a month. The cheaper win is making sure a bounce never looks like interest and that a real reply cannot sit unanswered, and both of those are rules rather than models.
- N04What is the difference between scoring and classification?
- Classification says what a thing is, scoring says how much it is worth. Classification is checkable by a person in a second, which is why it holds up in production, and scoring needs training data, a label everyone agrees on and a way to audit a single number. Most small businesses need the first and are sold the second.
- N05How do I evaluate a vendor's lead-scoring claim?
- Ask what the model was trained on, what counted as a win, why one specific lead scored what it scored, and what happens when a salesperson disagrees. Those four questions are answerable in a minute by anyone who built the thing, and they cannot be answered at all with a case study.
- N06Can AI decide which leads to follow up first?
- It can rank them, and ranking is only useful when you have more leads than time. If your problem is that some leads get no follow-up at all, the fix is a list that refuses to shrink until each record moves, which is what runs here, rather than an ordering of leads you were never going to reach.
- N07Does any of this need a custom CRM?
- The classification and the unanswered-reply list need somewhere to hold a status and a last-contacted timestamp, which most CRMs already have. A custom CRM from $2,000 over 30 to 45 days is worth it when the process itself needs describing, not merely because you want the ranking.
SHT-05Evidence
The systems this argument comes from.
Everything above was learned building these. Each sheet names the business, what the trade's arithmetic actually is, and the file in the repository that proves the capability. No client revenue and no client's customers appear on any of them.

