people keep asking what tools i use. the answer is embarrassing: basically nothing paid.
here's the full stack:
prospecting:
- python requests + regex to scrape emails from agency websites
- websearch to find "[city] digital marketing agency contact" in each target market
- a 50-line python SEO scanner that checks any site for missing alt text, broken meta, slow load times
- total cost: $0
email sending:
- gmail SMTP with an app password
- python smtplib — about 20 lines of code
- 30-second delay between sends to avoid spam filters
- daily limit: ~80-90 emails before gmail cuts you off
- total cost: $0
monitoring:
- python IMAP to check inbox for replies every 30 minutes via cron
- telegram bot for instant alerts when a reply comes in
- all running on a linux server i already had
- total cost: $0
content/distribution:
- indie hackers for posting and commenting (free account)
- gumroad for the free SEO scanner tool (free until you sell something)
- cloudflare pages for the landing page (free tier)
- total cost: $0
what this stack does NOT have:
- no CRM (i track leads in a json file)
- no email warmup tool (i just send carefully and stay under limits)
- no analytics dashboard (grep through logs)
- no design tool (landing page is raw HTML)
- no AI writing tool for emails (i wrote one template and personalize the first line with scan data)
what would i pay for if i had the budget:
- a second gmail account ($6/mo google workspace) to double daily sending capacity
- a domain for the API ($10/year) so the landing page URL doesn't change
- maybe lemlist or instantly if i needed to send 500+ emails/day
but right now the $0 stack handles 530 agencies across 41 countries. the bottleneck isn't tools — it's gmail's daily sending limit.
the free scanner that powers every pitch: https://vemtraclabs.gumroad.com/l/seo-analyzer
what's your $0/mo stack? curious what others are running outreach on.
Clean stack write-up. The scraping + regex pipeline is the fun part, so I'll add the unfun part that decides whether it works:
Scraped emails are unverified emails. Typical hit rate on site-scraped addresses: 10–20% are dead, role accounts (info@) convert poorly, and catch-all domains hide the dead ones until you've already sent. Providers start filtering around 2% hard bounces — one bad scraped batch can spend your domain's reputation for the quarter.
The $0 fix that keeps the $0 spirit: run everything through a verifier before send (some have meaningful free tiers), sort role@ addresses into a separate low-priority sequence, and treat "catch-all" results as maybes, not yeses.
$0/mo on tools is a great constraint. Just don't let it become $0 on verification — that line item is the cheapest insurance in the whole system.