DEV Community

RyanCwynar
RyanCwynar

Posted on • Originally published at ryancwynar.com

Building an Automated Prospecting System That Actually Works

Every founder knows the drill. You need leads. You spend hours on Google searching for businesses, copy-pasting contact info into spreadsheets, then manually reaching out one by one. It's tedious, error-prone, and doesn't scale.

I spent the last few weeks building an automated prospecting system that runs 24/7, finds relevant businesses, validates their information, and queues them for outreach—all without me touching a keyboard.

Here's how it works and what I learned.

The Architecture

The system has three main components:

  1. Discovery Engine - Uses search APIs to find businesses matching specific criteria
  2. Validation Layer - Scrapes websites to verify contact info and assess fit
  3. Queue Manager - Stores prospects in Redis, ready for outreach campaigns

Each component runs on a cron schedule. The discovery engine fires every few hours, searching for businesses in specific verticals (medical practices, law firms, CPAs) and locations (South Florida, in my case).

Why Cron Jobs Beat Real-Time

I initially tried running everything in real-time, triggered by webhooks. Bad idea. Search APIs have rate limits. Websites return errors. Networks timeout.

Cron jobs with smaller batch sizes work much better:

  • Run every 2-3 hours
  • Process 3-5 prospects per run
  • Handle failures gracefully
  • Stay well under rate limits

Over a day, this adds up to 20-30 qualified prospects without hitting any API walls.

The Campaign Approach

Not every prospect gets the same outreach. I run multiple campaigns in parallel:

Receptionist Campaign: "What happens when someone calls after hours?" Targets practices that probably miss calls—and money.

Reviews Campaign: Focuses on businesses with room for improvement in their online reputation.

AI Automation Campaign: For practices still using paper-heavy or manual workflows.

Each campaign has its own search parameters, qualification criteria, and outreach scripts. The system tags prospects with their campaign type so follow-up is contextual.

Lessons from the Trenches

Rate limits are real. Brave Search, Google, and most scraping services throttle aggressively. Build your system assuming you'll get rate-limited, not hoping you won't.

Data quality matters more than quantity. I'd rather have 5 prospects with verified phone numbers than 50 with bad data. The validation layer rejects anything incomplete.

Location specificity helps. Searching for "dentists in Miami" returns better results than "dentists in Florida." Narrow your geographic focus.

Phone numbers are gold. Email gets ignored. Cold calls still work—especially for local service businesses. Prioritize finding phone numbers.

The Stack

For anyone wanting to build something similar:

  • Search: Brave Search API (solid results, reasonable rate limits)
  • Scraping: Firecrawl for clean webpage extraction
  • Queue: Redis with sorted sets for priority management
  • Scheduling: Cron jobs via my AI assistant's scheduling system
  • Outreach: Twilio for calls, SendGrid for email backup

Total cost? About $50/month for APIs, running on a $30 VPS.

Results So Far

In the past week, the system found and validated 40+ qualified prospects across three campaigns. Each one has a verified phone number, business type, and campaign assignment.

The human effort? Reviewing the queue occasionally and making the actual calls. Everything else is automated.

What's Next

The natural evolution is automating the outreach itself. Voice AI has gotten good enough that an AI receptionist can make initial qualification calls, book appointments, and hand off warm leads.

But that's a post for another day.

The takeaway: If you're still manually hunting for leads, stop. A weekend of building automation will pay dividends for months. The tools exist. The APIs are affordable. The only question is whether you'll keep doing things the slow way.

Top comments (0)