Every morning I wake up to a queue of fresh, qualified prospects — complete with phone numbers, websites, and campaign tags. No VA. No manual Googling. Just an AI agent running on cron jobs, doing the boring work 24/7.
Here's how I built it, and what I learned.
The Problem
I'm building AI-powered tools for local businesses — think AI receptionists, automated review management, that kind of thing. The challenge isn't building the product. It's finding the right businesses to pitch.
Manual prospecting is brutal. You search Google Maps, cross-reference websites, check if they're a good fit, log everything in a spreadsheet. It's 80% research, 20% actual outreach. And it's the kind of work that makes you want to close your laptop and go outside.
So I automated it.
The Architecture
The system runs as a set of cron jobs inside my AI assistant (built on OpenClaw, which is basically a framework for giving Claude persistent memory and tool access). Here's the flow:
- Cron triggers fire throughout the day — morning, midday, afternoon, evening
- Each trigger targets a campaign with a specific angle (receptionist, reviews, AI tools, etc.)
- The agent searches using Brave Search API for businesses matching criteria (dentists in Boca Raton, law firms in Fort Lauderdale, etc.)
- Results get validated — does the business have a website? A phone number? Are they a real local business?
- Qualified prospects get queued in a database with campaign tags, ready for outreach
Each campaign has a different hook:
- Receptionist: "What happens when someone calls after hours?"
- Reviews: "How are you managing your online reputation?"
- AI Tools: "Are you still doing X manually?"
- Boring: "What's the most repetitive task in your office?"
What Actually Works
After running this for a couple weeks, I'm averaging 5-10 new qualified prospects per day across all campaigns. That's 35-70 per week with zero manual effort.
A few things I learned:
Rotate your searches. If you hammer the same query patterns, you get the same results. I rotate across cities (Miami, Fort Lauderdale, Boca Raton, West Palm Beach, Palm Beach Gardens) and business types (dentists, dermatologists, law firms, medical practices, CPAs, wealth managers).
Campaign-specific targeting matters. A dentist is a great prospect for review management. A law firm is a better fit for after-hours answering. Don't pitch the same thing to everyone.
Validate before you queue. Early versions would add businesses with no phone number or clearly defunct websites. Now the agent checks for working websites and valid phone numbers before adding to the queue.
Deduplication is essential. When you're running 4-5 campaigns across overlapping geographies, the same business will surface multiple times. The system checks against existing prospects before adding.
The Tech Stack
- OpenClaw — AI agent framework (gives Claude tools, memory, cron)
- Brave Search API — for finding businesses (way better than scraping Google)
- PostgreSQL — prospect storage and dedup
- Convex — backend for the CRM/dashboard
- Cron jobs — scheduled via OpenClaw's built-in scheduler
The whole thing runs on a single Hostinger VPS alongside a dozen other services. Total additional infrastructure cost: $0.
What's Next
Right now the pipeline is: find → queue → manual outreach. The next step is connecting the outreach itself — AI voice calls that actually dial the prospect, deliver the pitch, and handle the conversation. I've already built the voice infrastructure with OpenAI's Realtime API and Twilio.
The dream is a fully autonomous sales pipeline: find prospects, call them, book demos, follow up. All while I'm building the actual product.
The Takeaway
If you're doing repetitive research work — prospecting, lead gen, market research — you're leaving money on the table by not automating it. The tools exist today. An AI agent with web search access and a database can do in minutes what takes a human hours.
The hard part isn't the tech. It's defining what a good prospect looks like clearly enough that an agent can find them. Once you nail that, the rest is just cron jobs and patience.
Top comments (0)