Lead qualification 5 min read

We built a lead scorer for our own contact form

The weights, the reasoning, and the bug that real traffic found in week one — a working lead qualification system, described in full.

Published

Every enquiry sent through this website is scored automatically, and the score decides which one we look at first. This article is that system, described in full: the signals, the weights, the design decisions, and the bug that real traffic found within a week of it going live.

We publish it for two reasons. The first is that lead qualification is something we build for clients, and showing our own is more use than describing someone else's. The second is that most writing on this subject is vague in a way that makes it impossible to argue with. Numbers you can check are more useful than principles you cannot.

What it scores

The contact form collects a name, email, message, and optionally a phone number, company, capability and indicative budget. From those, seven rules contribute points:

Signal Points
Budget: over ₹50 lakh +30
Budget: ₹15–50 lakh +28
Budget: ₹5–15 lakh +22
Budget: ₹1–5 lakh +14
Budget: under ₹1 lakh +6
Budget not stated +8
Named a specific capability +12
Message of 60+ words +20
Message of 20–59 words +13
Message of 10–19 words +7
Gave a company name +10
Gave a phone number +8
Email at a company domain +12
Enquired from a capability page +10
Enquired after reading an article +8
Message contains 2+ links −25

Above 65 is hot, 35 to 64 is warm, below that is cold.

Two of those deserve explaining. "Budget not stated" scores higher than the lowest band, because declining to name a number to a firm you have not met is normal behaviour for a serious buyer, whereas naming a small one is genuine information. And message length is a crude proxy for how specific someone is being — imperfect, but honest, and it correlates with whether the person has actually thought about the problem.

Why rules and not a model

This gets asked immediately, so: it uses fixed weighted rules, not machine learning, and that is deliberate.

A model needs training data. Training data for lead scoring means closed-won and closed-lost outcomes — enough of them for a pattern to exist that a rule could not express. At the point you are building your first qualification system you have, by definition, none of that. A model trained on nothing is superstition with extra steps.

Rules also have three properties that matter more than accuracy at this stage. They are explainable, so a salesperson can disagree with a specific line rather than with a number. They are instant and free, with no API call per enquiry. And they keep the data in place — nothing about your enquiry leaves our server to produce a score, which is what lets our privacy policy say what it says.

The honest position is that a model becomes the right answer later, once there is history to learn from. We will say so when that is true.

The design decision that matters most

Every score is stored with its reasons. Not just "73", but the list:

+28  Budget: ₹15–50 lakh
+12  Named a specific capability
+13  Described the problem (46 words)
+10  Gave a company name
 +8  Gave a phone number
+12  Company email domain

This is not a nicety. A score nobody can interrogate gets quietly ignored within about a month — someone disagrees with it once, cannot see why it said what it said, stops trusting it, and goes back to working the list top to bottom. Showing the working is what keeps the system in use.

The second decision: the score orders the queue, it never rejects anyone. Nothing in the system sets a status, deletes an enquiry, or sends an auto-reply. A cold lead is a lead we answer second, not a lead we ignore. Our four-hour reply commitment applies to every enquiry regardless of what it scored.

The bug production found in week one

We tested the scorer against five invented enquiries before shipping it. They all behaved sensibly. Then we looked at the two real submissions sitting in the live database.

A spam submission scored 27. A genuine enquiry scored 16.

The cause was mundane. The scorer awards +12 for an email at a company domain, on the reasoning that someone using their work address is more likely to be a real buyer. It decides "company domain" by checking the address against a list of free providers — Gmail, Yahoo, Outlook and so on. The spam came from a mail.ru address, which was not on that list, so it was treated as a company domain and collected a bonus it should never have had.

The fix was one line: a longer list, covering the major global providers, the Indian ones, and the Russian free providers that are the commonest source of form spam. Afterwards: spam 15, genuine enquiry 16, a real buyer with a company domain 79.

The point is not that the bug was clever, because it was not. It is that five invented test cases did not find it and two real ones did. Any scoring system is a set of assumptions about your own customers, and assumptions are exactly the thing that synthetic data confirms rather than challenges. Ours are a starting position, not a finding, and they get revisited against what actually converts.

What we would build for you

The same shape, with your signals rather than ours. Your qualifying criteria are not our qualifying criteria — a clinic and a logistics firm and a SaaS product weight entirely different things — so the first conversation is about what genuinely predicts a good customer for you, and it usually involves the person who answers the phone rather than the person commissioning the system.

Then the rules go where your team already works, the reasons travel with the score, and nothing gets rejected automatically.

If that is useful, tell us what your enquiries look like. And if you want to see this one working, you already have: you can send us an enquiry and ask what it scored.

Alpha Technocrats builds custom software for businesses across India — AI systems, web and mobile platforms, ERP and CRM, cloud and blockchain. Tell us what you need built and an engineer will reply within four hours.