Writing · AI & Automation · Sep 19, 2023 · 7 min

How I built an AI lead scoring assistant for B2B fintech, twice

No engineering build resources and no black box. An interpretive qualification system I wired through the existing stack, and the real win was one definition of lead quality across every region and team.

~12h → 1–2 minmarketing → sales handoff
5 questionsone prompt step each

Every CRM I've worked in has a lead-score field. Most of the time it sits empty, or it holds a number nobody can explain and nobody trusts. I eventually built a qualification assistant that BD and sales actually use: no engineers, wired through Zapier, OpenAI's API, Salesforce, HubSpot, and SalesLoft. But my first version was exactly the kind of scoring nobody uses. Both versions are worth writing down.

The problem: qualification that didn't scale

When I joined, qualification was almost entirely manual. BD and sales reviewed websites one by one, interpreted business descriptions, hunted for inconsistencies, guessed at risk signals, and made a judgment call on whether a lead was even worth calling. It all ran on human interpretation, and interpretation doesn't scale.

Fintech makes it worse. A single lead can carry regulatory considerations, restricted categories, onboarding differences between regions, and a business model that only reveals itself once you analyze the website. Two leads can look identical in the CRM and behave completely differently in the real world. That complexity showed up as slow first responses, inconsistent routing, and a recurring argument about what “qualified” meant in North America versus Europe versus Southeast Asia. Every region was sure its definition was the definition.

My first version failed the way scoring always fails

I did the obvious thing first: one Zapier step, one prompt. Read the form, read the website, return a score. It ran fine. The output looked confident. And it told nobody anything. A lead marked high says nothing about why. Does the website match the form? Is the category restricted? Is this a real company or a Gmail address with ambitions? Sales checked the score against their gut a few times, found it couldn't answer a single follow-up question, and quietly stopped opening the field. Worse: the same lead run twice could come back with two different scores. The model could not explain itself, and it did not agree with itself twice.

v1 · one prompt, one score
Same lead · run 182
Same lead · run 261
Follow-up questions it could answer0
Why sales stopped opening it
Says why the lead is highno
Same answer twiceno
Version one in a picture: the same lead pushed through one prompt came back with two different scores, and neither number could answer a single follow-up question.

That failure was the useful part. It told me to build an interpretive system: something that reads context the way a person would: understands what a business actually does, spots contradictions, fills in missing details, and hands over a conclusion in the shape BD and sales already used to make decisions. A head start.

Mapping what “qualified” actually meant

So before rebuilding anything, I sat with the people doing manual vetting and wrote down what they were actually trying to figure out. It came down to five questions:

  • Is the business real?
  • Does the website match the information in the form?
  • Does the category fall into a restricted or high-risk bucket?
  • Is the email domain a real company or a personal account?
  • Do the engagement patterns show real intent?

Once those were on paper, the spec wrote itself: the assistant needed to see what the team saw and interpret it the way they interpreted it. One question per step, each doing one job.

The build: no engineers, existing stack only

I had no engineering resources for this, so everything ran on tools already in the stack: OpenAI's API through Zapier, logic I layered between Salesforce, HubSpot, and SalesLoft, signals fed in from our internal CRM. My second version was a multi-step chain, one step per question. Summarize the website and business description in plain language. Compare that summary against the form and list any contradictions. Check the category against the restricted and high-risk rules. Check the domain and the engagement history. The last step writes a short narrative assessment with a recommendation.

The output that lands in the CRM reads roughly like this (paraphrased, details changed):

Business: cross-border e-commerce, sells auto parts into the EU. Website: live, matches the form description. Category: clean, off the restricted list. Domain: corporate, matches the company name. Signals: pricing page and docs visited before signup. Assessment: real business with a clear payments use case. Route to EU mid-market cadence. Flag for human review: site mentions shipping to one region we don't onboard.

The CRM acts on the structured parts of that output. A restricted category goes to the compliance queue and never to a sales call. A contradiction between form and website goes to human review before anyone reaches out. A clean assessment fires routing, prioritization, and the right cadence automatically.

real business?1–2restricted?3–4real intent?5one question per step, each answerable alone
One question per step: five checks compress into a narrative assessment, and the CRM routes on the structured parts: restricted categories to compliance, contradictions to a human, clean leads straight into cadence.
Every boundary and rule in the system was reviewed with compliance before it shipped. AI outputs were aligned with the risk logic that already governed the business.

What changed

First response to a new lead went from hours → minutes; the legitimacy research that used to eat those hours now happens before anyone touches the record. Handoff from marketing to sales, which across our funnel used to take ~12 hours of someone noticing, reading, and forwarding, dropped to 1–2 minutes, because routing fires off the assessment inside the same automation estate (200+ workflows by the time I was done with it). Cadences start immediately instead of after the weekly cleanup. And the regional argument about what “qualified” meant mostly ended, because the definition now lives in the rules instead of in three time zones' worth of opinions.

What the assistant compressedsame funnel, before and afterFirst response · washoursFirst response · nowminutesMarketing to sales · was~12 hoursMarketing to sales · now1–2 minutesThe 12 hours were someone noticing, reading and forwarding. Routing now fires off the assessment inside the same estate of 200+ workflows.
Same funnel, before and after the assistant.

What I can't give you is a clean accuracy percentage, and I won't make one up. The assistant did get leads wrong, most often businesses whose websites said less than their form did, and when it did, the correction happened in Slack and never got logged anywhere I could count. That gap is on me.

Why it actually worked

Every rule in the system came out of boring conversations. BD walked me through why “qualified” carried different regional standards, and I turned those standards into routing rules instead of tribal knowledge. Sales showed me the research steps they repeated on every single lead; I rebuilt those steps as the prompt chain. Marketing's segmentation and engagement signals became the intent inputs. Engineering helped align the AI's outputs with the risk logic that already existed, and compliance signed off on every rule before it touched a live lead.

The system removes the repetitive reading and keeps humans on every exception. That is all it does.

What I'd do differently

Two things, if I rebuilt it tomorrow. First: log every human override from day one. That log is your accuracy metric, and I let mine evaporate into Slack threads. Second: make the assistant state its own uncertainty. “low confidence, thin website” is far more useful to a rep than a fluent paragraph that hides how little the model had to work with.

And if you're about to build one of these: skip the score. Sit with whoever qualifies leads today and write down the five questions they answer by hand, that list is your spec, and it costs nothing. Automate the reading, keep the judgment human, and start counting overrides before you start bragging about response times.

Suggested posts