I have a confession: I used to spend hours every week manually searching Google Maps for potential clients, copying phone numbers into spreadsheets, and deduplicating against my existing list. It was mind-numbing work that felt productive but wasn't.
So I automated the entire thing. Here's how.
The Problem
If you're selling a B2B service — in my case, AI-powered phone systems for medical practices, law firms, and dental offices — you need a constant flow of prospects. The traditional approach is painful:
- Search Google Maps for "dentists Boca Raton"
- Click through results, grab phone numbers
- Check if they're already in your CRM
- Add new ones, tag them with a campaign
- Repeat for every category and city
Do this manually and you'll burn 2-3 hours to find maybe 10 qualified prospects. That's not scalable.
The Architecture
My automated pipeline runs on cron jobs, executing multiple times per day across different campaign types. Here's the stack:
- Google Maps API for location-based business search
- PostgreSQL for the prospect queue (deduplication by phone number)
- Cron scheduling to run searches at 10am, 1pm, 3pm, 5pm, and 8pm
- AI agent to orchestrate the whole thing
Each run searches 2-3 category/city combinations, finds candidates, checks them against the existing queue, and inserts only genuinely new prospects. The agent rotates through different geographies and business types to keep the pipeline diverse.
What I Learned Building This
Deduplication is 70% of the work
Once your queue hits 200+ prospects, most new search results are duplicates. My system went from adding 15 prospects per run to adding 3-4 as the queue grew. Phone number matching is the most reliable dedup key — business names are inconsistent across sources.
Geography saturation is real
After a week of searching South Florida, I was hitting 60-80% duplicate rates. The system needs to either expand geographically or get smarter about searching for niche categories (orthodontists, chiropractors, immigration attorneys) instead of broad ones.
Multiple campaigns need different messaging
I run four parallel campaigns — each with different value propositions. The prospecting system tags each prospect with its campaign at creation time, so when it's time to make the call, the AI phone agent knows exactly which pitch to use.
Volume matters more than precision
In cold outreach, a 2-3% conversion rate is normal. That means you need hundreds of prospects in the pipeline at all times. My system added 256 prospects in one week without me touching it. That's a pipeline that would have taken me 50+ hours to build manually.
The Numbers
After one week of automated prospecting:
- 256 total prospects across 4 campaigns
- ~20 searches per day across different categories
- 4-6 new prospects per run (decreasing as saturation increases)
- 0 hours of manual work
The system runs while I sleep, while I'm coding, while I'm on calls. It just keeps feeding the pipeline.
What's Next
The prospect finder is only half the equation. The other half is the AI phone agent that actually calls these prospects. That's a separate system — built on Retell AI and custom voice models — that handles the outbound calls, navigates gatekeepers, and books demos.
But that's a story for another post.
The Takeaway
If you're doing any kind of repetitive research task more than twice a week, automate it. The upfront investment is a few hours of coding. The return is hundreds of hours saved. And unlike a human researcher, the automation doesn't get bored, doesn't make typos, and doesn't forget to check for duplicates.
Stop doing work that a script can do better. Build the machine, then let it run.
Top comments (0)