How I Built an AI Prospecting Machine That Runs While I Sleep

Published: (March 4, 2026 at 05:00 AM EST)
3 min read
Source: Dev.to

Source: Dev.to

The Problem

I’m selling AI voice products to local businesses — medical practices, law firms, dental offices, CPAs — with South Florida as my target market. The manual process looked like this:

  1. Search Google Maps for a query (e.g., “dentists Boca Raton”).
  2. Click through results and grab phone numbers.
  3. Check if they’re already in my queue.
  4. Add new ones to the CRM.
  5. Repeat for different categories and cities.

Each session took 30–60 minutes. I needed to run it 4–5 times a day across multiple campaigns, which ate up half my workday.

The Architecture

The solution uses cron jobs that trigger an AI agent (my personal assistant, Clawd) to run prospect searches on a schedule. The stack consists of:

  • Cron scheduler – Fires at 10 AM, 1 PM, 3 PM, 5 PM, and 8 PM UTC.
  • AI agent – Searches Google Maps via API and 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, law firms in Fort Lauderdale, dentists in Boca Raton, etc.). It detects when an area becomes 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, growing the queue from ~170 to >250 qualified local businesses — all without a single manual search.

The Deduplication Problem

As the queue grows, the duplicate rate climbs quickly. In saturated areas like downtown Miami or Fort Lauderdale, duplicate rates can reach 60–70 % per search. The system mitigates this by:

  • Phone number matching – Primary dedup key; the same number = the same business, even if the name varies.
  • 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 also searching orthodontists, chiropractors, immigration attorneys, wealth managers.

Lessons Learned

  • Start with the simplest dedup key. Phone numbers are unique identifiers for local businesses; fuzzy name matching proved unreliable.
  • Log everything. Each run writes to a daily markdown file with exact counts (prospects found, duplicates skipped, new additions, queue size). This makes troubleshooting straightforward.
  • Campaign separation matters. Tagging prospects at ingestion time lets the outreach system know which script to use.
  • Geographic saturation is real. After 250+ prospects in one metro area, you need to 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—a whole other article. The key insight is that the boring work of finding leads is exactly the kind of thing AI agents excel at: repetitive, rule‑based, and scalable.

I spent maybe 4 hours building this system. It saved me 15+ hours in the first week alone, and it will keep running 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.

0 views
Back to Blog

Related posts

Read more »