June 2, 2025 · Piyush Ranjan Mishra
Building AI Lead-Scoring Workflows: Lessons from Sales Intelligence Tools
At Revfx I built a set of AI workflows for lead generation, hiring-signal detection, and lookalike-account identification — using ChatGPT, Anthropic, and DeepSeek across different stages of the pipeline. Taken together they improved sales targeting efficiency by around 40%. The interesting engineering problem here isn’t “call an LLM and get a score back.” It’s making that score something a sales rep actually trusts enough to act on.
The naive version, and why it fails fast
The obvious first pass: feed a company’s firmographic data and some scraped signals into an LLM, ask for a 1-100 lead score, done. This works for a demo and falls apart within a week of real usage, for a specific reason — an unexplained number is not actionable. A rep looking at “Score: 78” has no idea whether that’s because the company just raised funding, is hiring for a role your product serves, or just happens to be in a industry your existing customers skew toward. Without the why, the score gets ignored the first time it’s visibly wrong, and trust doesn’t come back easily after that.
What actually made these workflows useful
Structured signals, not a single number. Every workflow I built decomposed the score into named, individually-surfaced signals — “hiring for [role] in the last 30 days,” “recently adopted [complementary tool],” “headcount growth trajectory matches your ICP” — each with its own confidence and source. Reps could see and question the individual signals, not just trust an opaque aggregate. This also made the system debuggable: when a score looked wrong, you could trace exactly which signal was the culprit.
Lookalike identification as retrieval, not generation. For lookalike-account identification, the LLM’s job wasn’t to “decide” who’s a lookalike — it was to help construct and refine a structured feature representation of your best existing customers, which then drove a similarity search over a company database. Generation was used for the fuzzy, language-shaped parts (summarizing why an account matched), while the actual matching was a retrieval problem underneath. Mixing these up — asking an LLM to “just find similar companies” from a huge candidate pool via prompting alone — produces slower, less consistent, and more expensive results than combining a proper retrieval step with LLM-generated explanations on top.
Multi-provider by necessity, not preference. Using ChatGPT, Anthropic, and DeepSeek across different workflows wasn’t about vendor loyalty — different tasks had different cost/quality/latency tradeoffs, and a high-volume signal-extraction pass over thousands of companies has very different economics than a low-volume, high-stakes “explain this lead’s fit” generation for a single account a rep is about to call. Treating “which LLM” as a per-workflow engineering decision, not a single company-wide default, saved real money at volume.
Hiring-signal detection: a narrower, higher-precision problem
Hiring signals (a target account posting job listings that suggest budget or a specific pain point) are a good example of where precision matters more than recall. A false positive here — telling a rep “this account is hiring for X, which suggests Y” when it’s a stretch — costs more in rep trust than a missed signal costs in opportunity. I tuned this workflow deliberately conservative: multiple corroborating signals required before surfacing anything, rather than a single job posting triggering an alert. Fewer, more reliable signals beat a noisy firehose of maybes.
The eval problem nobody budgets for
The hardest part of this work wasn’t the LLM integration — it was building a way to actually know if a change made the system better or worse. Sales signal quality doesn’t have a clean ground truth the way a classification benchmark does; “was this a good lead” is a judgment that plays out over weeks, involves the rep’s own skill, and is inherently noisy. What worked: a lightweight feedback loop where reps could flag a surfaced signal as helpful or not, logged and reviewed regularly — not a perfect eval set, but a real signal that beat guessing, and it caught several cases where a prompt change quietly degraded signal quality before it became a bigger problem.
The actual lesson
None of the value here came from a cleverer prompt. It came from decomposing “give me a lead score” into named, sourced, individually-trustworthy signals; treating retrieval and generation as separate problems even when an LLM could technically do both; and building a real (if imperfect) feedback loop instead of assuming the system was working because it shipped. AI sales tooling lives or dies on rep trust, and trust is earned by being explainable, not by being impressively autonomous.