What if you could automatically find businesses with terrible websites, generate beautiful redesigns, and reach outāall without lifting a finger?
I built exactly that. Here's the full system.
The Problem
Millions of small businesses have websites that hurt more than they help. Broken layouts, missing contact info, no mobile optimization, Comic Sans. You know the type.
These businesses need help. They just don't know it yet.
The Pipeline
Google Maps API ā Website Scraper ā AI Scorer ā Mockup Generator ā Outreach Automation
Each step is automated. Let's break it down.
Step 1: Finding Businesses
Google Maps API + Places API gives you everything:
const businesses = await maps.placesNearby({
location: { lat: 40.7128, lng: -74.0060 },
radius: 5000,
type: 'plumber' // or any business type
});
// Returns: name, address, phone, website, rating, reviews
I target specific industries: plumbers, electricians, contractors, restaurants. High-value services with often-neglected web presence.
Step 2: Scraping & Scoring Websites
For each business with a website, I run a quality analysis:
const score = await analyzeWebsite(url);
// Checks:
// - Mobile responsiveness (viewport meta, media queries)
// - Page speed (Lighthouse scores)
// - SSL certificate
// - Contact info visibility
// - Modern design patterns
// - Broken links/images
// - SEO basics (title, meta, h1)
Businesses scoring below 40/100 are prime candidates.
Step 3: AI-Generated Mockups
This is where it gets interesting. Using the scraped content, I generate a modern redesign:
const mockup = await generateMockup({
businessName: business.name,
industry: business.type,
existingContent: scrapedText,
colorScheme: inferBrandColors(existingLogo),
template: 'modern-service-business'
});
The mockup isn't just a templateāit's customized with their actual business info, services, and contact details.
Then I screenshot it with Puppeteer:
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setContent(mockup.html);
const screenshot = await page.screenshot({ fullPage: true });
Step 4: Automated Outreach
Now I have:
- Business contact info
- Their current website (ugly)
- A beautiful mockup screenshot
- A quality score showing what's wrong
The outreach is personalized:
Hi [Name],
I was looking for a [plumber] in [City] and found your website.
I noticed a few things that might be costing you customers:
- [Specific issues from the score]
I put together a quick mockup of what a modern version could look like.
[Attached: mockup screenshot]
No pressureājust thought you'd want to see it. Happy to chat if you're interested.
- Ryan
The Results
From a test run of 50 businesses:
- 15 SMS sent
- 9 emails sent
- 4 responses (16% response rate)
- 2 calls scheduled
- 1 paying customer ($25/month)
Not bad for zero manual work.
The Tech Stack
- Google Maps API: Business discovery
- Puppeteer: Website screenshots
- GPT-4: Content analysis, mockup generation
- n8n: Workflow orchestration
- Twilio: SMS outreach
- Mailgun: Email outreach
- PostgreSQL: Tracking and CRM
Why This Works
The "proof of work" principle. When someone sends you a custom mockup of your business, it's obvious they put in effort. It's not spamāit's a gift.
Most cold outreach fails because it's generic. This isn't.
Ethical Considerations
A few rules I follow:
- Never mislead: The mockup is clearly labeled as a concept
- Easy opt-out: Every message has a clear way to say no
- Respect frequency: One touch per business, period
- Genuine value: Only reach out if the mockup is actually better
This isn't about tricking people. It's about showing them something they didn't know was possible.
Scaling Up
The system runs on a schedule:
- Monday: Scrape new businesses in target area
- Tuesday: Score and filter candidates
- Wednesday: Generate mockups
- Thursday-Friday: Send outreach
All automated. All tracked. All iterating based on what works.
Building outreach automation? The key is genuine personalization at scale. AI makes it possible.