This is a deep-dive post because I want to share the actual architecture not just "I automated outreach" vibes.
For context: I build AI systems chatbots, voice agents, outreach automation for service businesses and agencies. Every system I build for clients gets tested on my own business first.
Last 2 weeks I built the outreach system I'd been putting off for 6 months. Here's what's inside.
THE PROBLEM
Every outreach tool I tried had one of two flaws:
1. It sold me scale but gave me spammy templates that killed my sender reputation
2. It was a dashboard, not a system I still had to decide who to message, when, and what to say
What I wanted was the opposite: a system that runs like a pipeline. Something that tells me every morning: "Here are 23 people to message today here's which channel, here's the context, here's the template."
And dedupes across every channel so the same prospect never gets 5 messages from me in 3 days.
THE ARCHITECTURE
Three layers, all built on Python + Google Sheets + Apps Script.
Layer 1: PROSPECTING
Six scrapers running in parallel:
- Google Maps (for local service businesses)
- Hunter.io (for domain-based email discovery) - Snov.io (for additional email enrichment) - Apify (for Instagram/LinkedIn web scraping)
- Serper (Google search API for long-tail discovery)
Each feeds into its own raw sheet. Every lead gets a universal ID.
Layer 2: ORCHESTRATION
One master sheet that:
- Pulls from all 6 scraper sheets
- Dedupes across platforms (same person on LinkedIn + Twitter = one entry)
- Tags with source, niche, platform readiness
- Generates a daily queue: 15-30 people to message TODAY, split by channel
- Tracks a 21-day follow-up sequence per prospect
Layer 3: DELIVERY
Four Apps Scripts (one per channel) that:
- Read the daily queue
- Pull the right template for Day 1 / Day 3 / Day 5 / Day 7 / Day 14 / Day 21
- Personalize based on niche and prospect data
- Log every send back to the master sheet
Cold email uses a fifth Apps Script that batches through Gmail API.
THE PHILOSOPHY
Here's what took me the longest to internalize: the point of automation is not to send more messages. It's to stay relevant to the same person for longer.
Old outreach: blast 500 cold DMs, hope 5 convert, move on.
This system: 15-30 touches a day, tracked across 5 channels, 21 days per prospect, zero spam.
Result: same message volume per month, way higher conversion, and my sender domains/accounts stay clean.
TOTAL COST TO RUN
~$20/month in API credits (Apify, Hunter, Snov, Serper, Apollo free tier).
No Zapier. No n8n. No $300/month outreach SaaS.
The spreadsheet does more than most commercial tools I've seen.
LESSONS
1. Build the tracking system BEFORE the automation. If you can't see the pipeline, you can't fix it.
2. Dedupe across channels is the hardest part. Nail it early or you'll look desperate.
3. The difference between "outbound that works" and "outbound that feels spammy" is entirely about follow-up cadence and relevance.
What's the one channel you've never been able to figure out for outbound? I've been in the weeds on all 5 for months happy to share what's working and what's not.
And if you've built something similar, I want to see your architecture. Drop it in the thread.