Every sales team has the same bottleneck: finding leads. Not closing them — finding them. The hours spent Googling businesses, checking if they are a fit, pulling phone numbers, deduplicating against your existing list. It is mind-numbing work that eats your day before you have even picked up the phone.
So I automated the entire thing.
The Problem
I am building AI-powered voice agents for small businesses — think AI receptionists, review collection bots, appointment schedulers. My target market is doctors, lawyers, and dentists in South Florida. There are thousands of them.
Manually, finding 10 qualified prospects takes about an hour. You search Google Maps, check their website, find a phone number, verify they do not already have an AI solution, and add them to your CRM. Multiply that by the 150+ prospects I need in my pipeline, and you are looking at weeks of grunt work.
The Architecture
The system runs on cron jobs through my AI agent (built on OpenClaw). Here is the flow:
- Search — The agent queries Google Maps for specific business types in target cities (Miami, Fort Lauderdale, Boca Raton, West Palm Beach)
- Evaluate — Each result gets checked: Do they have a phone number? Are they already in the queue? Do they fit the campaign criteria?
- Enrich — Pull additional context: practice type, location, specialization
- Deduplicate — Cross-reference against the existing prospect database. No duplicates.
- Queue — Valid prospects get added to the outreach queue with campaign tags
The whole thing runs multiple times per day across different campaigns — receptionist, reviews, AI services — each with slightly different search queries and targeting criteria.
The Results
In the last three days alone, the pipeline has:
- Evaluated 100+ candidates across four campaigns
- Added 54 qualified prospects to the queue
- Filtered out 60+ duplicates automatically
- Grown the total pipeline from 119 to 173 prospects
- Done all of this with zero human intervention
The agent searches different verticals on rotation — dermatologists one run, chiropractors the next, estate planning lawyers after that. It covers ground I would never have the patience to cover manually.
What Makes It Work
A few design decisions that matter:
Campaign segmentation. Not every prospect gets the same pitch. The receptionist campaign targets high-call-volume practices. The reviews campaign targets businesses with mediocre Google ratings. Different searches, different qualifying criteria, same pipeline.
Aggressive deduplication. When you are running 5+ searches per day, you will hit the same businesses repeatedly. The system checks phone numbers and business names against the existing queue before adding anything. On a typical run, 60-70% of candidates are already in the system.
Scheduled diversity. Each cron job searches different keywords and locations. Morning might be "dentists Boca Raton," afternoon is "immigration lawyers Fort Lauderdale," evening is "dermatologists West Palm Beach." This prevents the pipeline from becoming too concentrated in one vertical.
Hands-off operation. I get a notification after each run with a count of what was added. That is it. No approval needed, no manual review. The qualifying criteria are baked into the prompts.
The Bigger Picture
This is one piece of a larger system. Once prospects are in the queue, another automation handles outbound calls using AI voice agents. The voice agent pitches the service, handles objections, and books demos. But that is a topic for another post.
The point is this: the boring parts of sales — the research, the list building, the data entry — are exactly the kind of work AI agents excel at. They do not get bored, they do not cut corners, and they run at 3 AM without complaining.
If you are still manually building prospect lists in 2026, you are leaving money on the table. Not because the tools are hard to build — they are not. But because every hour you spend on research is an hour you are not spending on the conversations that actually close deals.
The pipeline never sleeps. Neither should yours.
Top comments (0)