Last quarter, I stared down a spreadsheet with 5,000 leads. Five thousand. Each one was a potential customer, but without a clear way to prioritize, it felt like throwing darts in the dark. That’s when I really dug into how to use AI for lead scoring effectively, not just in theory, but in a way that actually moved the needle for our outbound efforts.
You see, everyone talks about AI agents transforming sales, but few actually ship something that works consistently without costing a fortune in compute or developer time. My goal wasn’t just to score leads; it was to find the right leads, the ones most likely to convert, and do it at scale. I needed something that could chew through raw data, identify specific signals, and give me a clear, actionable score. And I needed it to stop silently failing at 3 AM.
The Scenario: Prioritizing a Messy Prospect List
My problem wasn’t a lack of prospects. We had plenty. The issue was quality and relevance. We were doing a big push into a new vertical, and our initial list was broad. A lot of generic company names, some email addresses, maybe a LinkedIn URL if we were lucky. Manually sifting through these to understand company size, recent funding rounds, tech stack, or even just if they were actively hiring for roles relevant to our product? Impossible for one person, and prohibitively expensive for a team.
We needed to narrow that 5,000 down to the top 500, maybe even 200, that warranted a truly personalized cold email. This isn’t just about ‘lead scoring’ in the traditional sense of MQLs and SQLs; it’s about enriching raw data to find intent signals and fit. It’s about knowing which leads deserve an hour of research versus a five-minute glance. This is where AI should shine, right?
I started, like many do, by trying to roll my own. I looked at n8n for sales workflows for orchestration, pulling data from various APIs like Clearbit (for firmographics) and Hunter.io (for email verification). Then, I’d feed that into a custom Python script that used OpenAI’s API to analyze company descriptions, job postings, and recent news articles. The idea was to have the LLM give a ‘fit score’ based on a specific ICP (Ideal Customer Profile) I’d defined. It was a learning experience, to say the least.
What Broke and What Actually Worked
My concrete gripe? Debugging the LLM outputs. The Python script would run, the LLM would return a score, but sometimes it was wildly off. A company clearly in our ICP would get a low score, or a completely irrelevant one would float to the top. Why? Because the prompt wasn’t perfect, or the data quality from one of the APIs was inconsistent, or the LLM just hallucinated. Tracing these issues back through n8n, the Python script, and then the LLM’s ‘reasoning’ (which, let’s be honest, is often a black box) was a nightmare. LangSmith helped, sure, but it didn’t magically fix the underlying prompt engineering challenge or the data discrepancies.
It felt like I was spending more time debugging the scoring logic than actually using the scores. The cost of API calls started to climb, too. Running 5,000 leads through multiple data enrichment steps and then an LLM call quickly adds up. I realized that for this to be sustainable, it needed to be more robust and less prone to silent failures.
My concrete love, however, came from the data enrichment itself. Once I got the prompt dialed in (after many, many iterations), the AI’s ability to pull out specific, relevant details from a company’s ‘About Us’ page or recent press releases was incredible. It could identify that a company recently raised a Series B, was hiring for a ‘Head of AI,’ and had just announced a partnership with a specific tech provider – all signals for us. That level of detail, summarized and scored, was invaluable for our sales team to craft truly personalized cold email sequences. It made our outbound sequence guide much more effective.