Built a Cold Email Machine with Claude Code
Scrape outdated local-business sites, rebuild the worst ones as modern React sites, and cold-email every owner automatically.
What you'll build
An end-to-end pipeline that scrapes local businesses with outdated websites, scores their sites with Gemini Vision, rebuilds the worst ones as modern React sites, deploys them to Netlify, and sends each owner a cold email with their own rebuilt site linked inside it.
The core thesis: the rebuilt website IS the cold-email hook. Every agency owner runs cold email and reply rates have collapsed - because the ask is the friction. "Book a call," "see a demo," "let's chat." Here, the demo already exists before the prospect ever replies. They click the link, see their own business rebuilt, and the curiosity does the selling. A website of this quality would've cost them $5-10K a couple years ago; you're handing it over for free - or charging $500 and passing off the repo.
The numbers: ~$2 per batch of 10 sites, ~30 minutes wall-clock once the infrastructure exists (almost all of it unattended), and it scales to 500 sites before Netlify charges you anything.
What you'll need
- Claude Code
- Apify account (Google Maps scraper - ~$0.03/result, $1 got me ~40 leads)
- Gemini API key (2.5 Flash Vision - ~$0.0005/site to score)
- Netlify account (free up to 500 sites)
- Instantly.ai with a warmed sending domain
- The Superpowers skill for the planning phase
Step 1: Scope the build with the Superpowers skill
I had this idea sitting in Notion for a while, so the first thing I did was point Claude at that project folder and give it the whole concept in one ramble: scrape business leads, look at their websites, find the bad ones, take all their images and text, remodel the site, send it to them - completely automated.
Then I invoked the Superpowers skill. It asks deep discovery questions during plan mode - six of them in my case - and that's where the stack got decided: Apify to scrape (it can already access Google Maps), Gemini 2.5 Flash for scoring (best at processing screenshots, especially the cheap models), Netlify to host (500 sites free), and Instantly to send.
Step 2: Pick a market where the website drives revenue
This is the part I messed up first. My v0 batch targeted Yorktown Heights - my suburban local area. Built 14 candidates. Killed all of them. In suburbia, people find local services through Google Maps reviews and word of mouth; the website doesn't drive the buying decision, so nobody cares that theirs is ugly.
v1 targeted White Plains - the commercial center of Westchester County - and research-before-buy verticals: cosmetic dentists, personal injury attorneys, medspas, pilates studios, wedding venues. People read these websites to decide if it's a legitimate modern business. There, the website IS the buying decision.
Step 3: Scrape with Apify
The Apify Google Maps actor pulls business name, email, phone, address, and website URL for whatever niche + location you give it. ~$0.03 per result - a dollar got me about 40 leads, which narrowed down to the final 10.
Step 4: Screenshot and score with Gemini Vision
Puppeteer captures desktop, mobile, and about-page screenshots of every candidate. Then Gemini 2.5 Flash Vision does two jobs per site: rates how outdated it is (boxy layouts, walls of text), and picks one of 4 design presets matched to the vertical. Cost: about $0.0005 per site - effectively nothing.
You obviously don't want to remake a website that's already good - this stage is the filter.
Step 5: Curate by hand
80% of this is automated, but there's still a manual curation layer and it's worth your time. I reviewed the 20 candidates Gemini liked best in browser tabs and picked 9 - the ones with genuinely rich copy buried in genuinely weak design. The question for each one: is this worth my tokens?
The 9 from White Plains: a cosmetic dentist, a personal injury attorney, a medspa, a pilates studio, a wedding venue, a psychiatry practice, an orthodontist, and so on.
Step 6: Hand-build exemplars to set the quality bar
Before scaling, I built one site the proper way - full React + Vite + GSAP + Tailwind. Static-template attempts looked template-y, so I killed that approach entirely. I ended up manually refining 3 exemplar sites, talking to Claude the whole time - "make the logo bigger," "use a better image" - until it understood the level of quality I was aiming for.
Always give Claude examples of what a good finished product looks like. Once it locks onto the bar, it replicates it for everything after.
Step 7: Dispatch parallel agents for the rest
Claude Code spins up 6 background subagents in one message. Each gets its own context window (so each performs at full quality), the 3 exemplars as required references, its assigned design preset, the source URL, and a "make it visually distinct" instruction.
All 6 shipped in ~15 minutes wall-clock versus roughly 2 hours sequential. Two hiccups: one agent got rate-limited mid-run and one put itself into plan mode - both just got relaunched.
Step 8: Deploy headlessly with a Netlify token
Netlify CLI normally wants an interactive browser login every session. A Personal Access Token solves that permanently - 60-second one-time setup. Then one script creates all 9 sites via the API, pushes each dist/, and PATCHes the site names to branded subdomains. No manual clicks, no hosting dashboard, no tab-switching.
Step 9: Build the Instantly campaign via API
Never send cold email from your main domain. If most people don't respond - and most won't - your real domain gets flagged as spam. I send from 2 warmed inboxes on successaiwaterside.com, a domain bought just for this.
The campaign ("SMB Website Remodel #1 - White Plains") was created entirely through the Instantly v2 API - campaign, sequences, schedule, leads, even activation. Zero clicks in the Instantly UI.
- Step 1 (Day 0), two variants: A is the free soft pitch - "I rebuilt your website with AI, let me know what you think, happy to iterate" - giving value first. B asks for the $500 directly.
- Step 2 (Day 4): a short reply-nudge bump.
- Schedule: Tue/Wed/Thu, 9am-3pm ET (quirk: Instantly's timezone whitelist meant using America/Detroit for Eastern).
- Leads: all 9 loaded with custom variables - greeting, cleaned company name, the demo URL, and a personalization line.
Step 10: Rerun it for ~$2 and none of your time
v1 took about 2.5 hours wall-clock - mostly decision-making, the Yorktown pivot, quality iteration, and one-time auth. That infrastructure is the real asset: tokens, warmed domain, campaign template, exemplars. Now a repeat is one sentence - "scrape 10 more businesses, upload into Instantly, send it off" - and Claude runs ~30 minutes unattended: Apify 10m → Gemini 3m → curation 5m → builds 15m → deploy 3m → Instantly 1m. I go eat lunch and come back to 10 leads emailed with brand-new websites.
The ROI math: sending 500 sites costs maybe $10-20 total before any paid tier. One person pays $500 for their site and you've 25X'd the spend - and the better outcome is the reply that says "how did you do this? teach me more about AI."
That's pretty much a wrap - you have all the tools. Good luck and happy building.
Resources
- Apify - https://apify.com (Google Maps scraper actor)
- Instantly - https://instantly.ai (cold email platform, v2 API)
- Netlify - https://netlify.com (500 free sites; set up a Personal Access Token)
- Gemini API - https://ai.google.dev (2.5 Flash Vision for scoring)
- Unsplash - https://unsplash.com (free high-quality fallback imagery)
- Superpowers skill - https://github.com/obra/superpowers