Every business needs leads. Most founders spend hours on Google Maps, copying phone numbers into spreadsheets, cross-referencing against their existing list. I got tired of that after about two days.
So I built a system that does it automatically, multiple times a day, without me touching anything. Here's how it works and what I learned.
The Problem
I'm selling AI voice products to local businesses — medical practices, law firms, dental offices, CPAs. South Florida is my target market. The manual process looked like this:
- Search Google Maps for "dentists Boca Raton"
- Click through results, grab phone numbers
- Check if they're already in my queue
- Add new ones to the CRM
- Repeat for different categories and cities
This takes 30-60 minutes per session. I needed to do it 4-5 times a day across multiple campaigns. That's half my workday gone on data entry.
The Architecture
The solution uses cron jobs that trigger an AI agent (my personal assistant, Clawd) to run prospect searches on a schedule. Here's the stack:
- Cron scheduler — Fires at 10 AM, 1 PM, 3 PM, 5 PM, and 8 PM UTC
- AI agent — Searches Google Maps via API, extracts business info
- Deduplication layer — Checks phone numbers against the existing queue in PostgreSQL
- Campaign tagging — Each time slot maps to a different campaign (receptionist, reviews, AI demo, etc.)
- Convex backend — Stores prospects with full metadata
The agent rotates through search queries automatically: doctors in Miami one run, law firms in Fort Lauderdale the next, dentists in Boca Raton after that. It knows which areas are getting saturated and expands to new geographies when duplicates start piling up.
What Actually Happens Each Run
A typical run looks like this:
- Agent searches 3-4 category/city combinations
- Finds 10-15 candidate businesses
- Checks each phone number against the existing queue
- Adds 3-6 genuinely new prospects
- Logs everything to daily memory files
- Total time: about 2 minutes
In the last week alone, the system added over 80 new prospects across four campaigns. My queue went from around 170 to over 250 qualified local businesses — all without me doing a single search.
The Deduplication Problem
This was the trickiest part. As your queue grows, the duplicate rate climbs fast. In saturated areas like downtown Miami or Fort Lauderdale, I'm now seeing 60-70% duplicate rates per search. The system handles this by:
- Phone number matching — The primary dedup key. Same number = same business, even if the name varies slightly.
- Geographic expansion — When a city hits high duplicate rates, the agent automatically branches into neighboring areas (Jupiter, Plantation, Davie, Miami Lakes).
- Category diversification — Started with doctors and lawyers. Now searching orthodontists, chiropractors, immigration attorneys, wealth managers.
Lessons Learned
Start with the simplest dedup key. I initially tried fuzzy name matching. It was unreliable. Phone numbers are unique identifiers for local businesses. Use them.
Log everything. Each run writes to a daily markdown file with exact counts — prospects found, duplicates skipped, new additions, queue size. When something looks off, I can trace it back to the exact run.
Campaign separation matters. Different campaigns have different pitches. Tagging prospects at ingestion time means the outreach system already knows which script to use.
Geographic saturation is real. South Florida has a lot of professionals, but it's not infinite. After 250+ prospects in one metro area, you need to either expand geographically or accept diminishing returns.
What's Next
The prospecting pipeline feeds into an AI voice calling system that actually reaches out to these businesses. That's a whole other article. But the key insight is this: the boring work of finding leads is exactly the kind of thing AI agents excel at. It's repetitive, rule-based, and benefits from running at scale.
I spent maybe 4 hours building this system. It's saved me 15+ hours in the first week alone. And it'll keep running tomorrow while I focus on the parts of the business that actually need a human.
If you're manually prospecting, stop. Build the machine first. Your future self will thank you.
Top comments (0)