@clawhub-razzledazzlei-0b345cabce
Automated lead generation pipeline that finds local businesses with weak/no websites, AI-generates custom demo sites, deploys to Vercel, and runs a 5-email c...
---
name: lead-gen-website-pipeline
description: Automated lead generation pipeline that finds local businesses with weak/no websites, AI-generates custom demo sites, deploys to Vercel, and runs a 5-email cold outreach drip sequence via AgentMail. Full pipeline from Google Places discovery to closed deal.
version: 1.0.0
homepage: https://github.com/RazzleDazzleI/lead-gen-pipeline
metadata:
openclaw:
emoji: "\U0001F680"
requires:
env:
- GOOGLE_PLACES_API_KEY
- GOOGLE_API_KEY
- VERCEL_TOKEN
- AGENTMAIL_API_KEY
bins:
- node
---
# Lead Gen Website Pipeline
Automated system that finds local businesses with weak or no websites, AI-generates a custom demo website for each, deploys it to Vercel, and sends a personalized cold outreach email sequence — all without human intervention after initial setup.
## What It Does
1. **Discovers leads** via Google Places API for configurable niches and cities
2. **Scores leads** 0-100 based on website quality, reviews, phone availability
3. **Queues leads** in a Google Sheet for human review/approval
4. **Generates demo websites** via a 5-stage AI pipeline (research → spec → build → QA → validate)
5. **Deploys to Vercel** automatically with daily rate limiting
6. **Sends cold outreach** via AgentMail with a 5-email drip sequence (Day 0, 3, 7, 14, 30)
7. **Notifies you** on Discord with pitch angles, demo URL, and visual QA scores
## Pipeline Architecture
```
Google Places API → Score Leads → Google Sheet (you approve)
↓
Approved lead → Scrape website → Fetch Google reviews
↓
AI Research → AI Spec (copy) → AI Build (HTML) → AI QA → Validate
↓
Deploy to Vercel → Update Sheet → Discord notification
↓
Generate outreach email → AgentMail sends → Drip follow-ups
```
## Requirements
### API Keys (set in your .env)
| Key | Service | Purpose | Cost |
|-----|---------|---------|------|
| `GOOGLE_PLACES_API_KEY` | Google Cloud | Lead discovery + photos | ~$0-20/mo |
| `GOOGLE_API_KEY` | Google AI Studio | Gemini for research/spec/QA | Free tier |
| `ANTHROPIC_API_KEY` | Anthropic | Claude for spec generation | Pay per use |
| `OPENAI_API_KEY` | OpenAI | GPT for HTML building | Pay per use |
| `VERCEL_TOKEN` | Vercel | Demo site deployment | Free tier (100/day) |
| `AGENTMAIL_API_KEY` | AgentMail | Cold outreach emails | Free tier |
| `GOOGLE_SHEET_ID` | Google Sheets | Lead tracking | Free |
### Google Sheet Setup
Create a Google Sheet with these columns (A-O):
`created_at | niche | business_name | address | phone | email | website | google_maps_url | rating | reviews_count | has_website | website_quality_score | lead_score | status | notes`
Status values: `review`, `filtered`, `approved`, `processing`, `demo_ready`, `failed`, `contacted`
Share the sheet with a GCP service account for API access.
### Infrastructure
- **Node.js 22+** on the host machine
- **Google Cloud service account** JSON key for Sheets API
- **Vercel account** (free Hobby tier works)
- **AgentMail account** with at least one inbox
- **Discord channel** for notifications (optional but recommended)
## Setup Instructions
### 1. Clone and install
```bash
git clone https://github.com/RazzleDazzleI/lead-gen-pipeline.git
cd lead-gen-pipeline
npm install
```
### 2. Configure environment
Copy `.env.example` to `.env` and fill in your API keys.
### 3. Configure your niches and city
Edit `scripts/niche-defaults.json` to customize:
- Target niches (landscaping, cleaning, roofing, etc.)
- Color palettes per niche
- Common services per niche
- Trust items per niche
The pipeline supports 15 niches out of the box:
landscaping, auto detailer, cleaning service, handyman, roofing, pressure washing, plumbing, electrician, HVAC, painting, fencing, tree service, junk removal, pest control
### 4. Set up the poller
The poller watches your Google Sheet for approved leads and triggers the pipeline:
```bash
# Run once to test
node scripts/poll-approved-leads.js
# Run continuously (every 5 minutes)
node scripts/run-poller.js 5
```
For production, set up as a systemd service or OpenClaw cron job.
### 5. Set up outreach emails
```bash
# Dry run first — see what would be sent
node scripts/send-outreach.js --dry-run
# Send pending initial emails + follow-ups
node scripts/send-outreach.js
# Only send scheduled follow-ups
node scripts/send-outreach.js --followups
```
Set up as an OpenClaw cron job to run 3x/day:
```bash
openclaw cron add --name "outreach-sender" \
--cron "0 9,15,21 * * *" --tz "America/Chicago" \
--session isolated --announce \
--message "Run: cd /path/to/project && node scripts/send-outreach.js"
```
## Customization
### Target City
Change the Google Places API search query in the n8n workflow or lead discovery script to target your city instead of Omaha.
### Pricing Tiers
The business plan template includes 3 tiers:
- **Starter** ($997 + $49/mo) — Single-page landing site
- **Professional** ($1,997 + $99/mo) — Multi-page with gallery, analytics
- **Premium** ($2,997 + $149/mo) — Blog, booking, live chat, priority support
### Email Templates
The drip sequence (in `send-outreach.js`) follows the proven pattern:
- **Day 0:** "I built you a website — take a look" (demo link)
- **Day 3:** Social proof — "businesses like yours saw 30-40% more calls"
- **Day 7:** Urgency — "your preview expires soon"
- **Day 14:** Last chance — "taking it down today"
- **Day 30:** Breakup — "closing the loop, door is always open"
Edit the templates in `send-outreach.js` → `getDripEmail()` function.
### Design Blueprints
Add niche-specific design guidance in `templates/designs/<niche>.md`. The build stage loads these automatically to produce better-looking sites per vertical.
## Pipeline Stages Deep Dive
### Stage 1: Research
Consolidates lead data (name, phone, address, website, reviews) into a structured JSON summary. Uses scraped website data + Google Places API reviews.
### Stage 2: Spec
Generates all website copy — hero section, services, about, reviews, service area, footer. No HTML yet, just structured content.
### Stage 3: Build
Converts the spec JSON into a single-file responsive HTML page. Injects real photos (scraped or Google Places fallback), logo, niche-specific color palette.
### Stage 4: QA
AI reviews the HTML for 13 quality checks: robots meta tag, demo banner, phone numbers, form action, footer attribution, broken images, alt text, mobile hamburger menu, and more.
### Stage 5: Validate
Programmatic validation confirms all critical elements are present. Non-blocking — logs warnings but doesn't block deployment.
### Stage 6: Deploy
POSTs the final HTML to Vercel API. Tracks daily deploy count (max 90/day to stay under free tier limit). Returns live URL.
### Stage 7: Outreach
Generates a personalized cold email with pitch angles extracted from the lead data (no website, Gmail address, strong reviews, years in business).
## Output Per Lead
Each processed lead produces a run folder with ~19 artifacts:
- `intake.json` — Enriched lead data
- `research.json` — Structured summary
- `spec.json` — All website copy
- `final.html` — Production-ready HTML
- `evaluation.json` — Deploy URL + metadata
- `outreach-email.json` — Cold email + follow-up
- `screenshot-*.png` — Mobile/tablet/desktop captures
- `visual-qa.json` — Gemini Vision quality scores
- `status.json` — Run tracking
## Costs
### Per-Lead Cost
- Google Places API: ~$0.03-0.05/lead
- AI generation (Gemini + Claude): ~$0.10-0.50/lead
- Vercel hosting: $0 (free tier)
- AgentMail: $0 (free tier)
- **Total: ~$0.15-0.55 per lead**
### Monthly Operating Cost (at 10-20 leads/day)
- Google APIs: $5-20/mo
- AI models: $30-150/mo (less with Claude Max plan)
- Everything else: $0
- **Total: $35-170/mo**
### Revenue Potential (at 2% response rate)
- 50 emails/week → 1 conversation/week → 1 client/month
- 1 client = $997+ one-time + $49+/mo recurring
- Year 1 from one client/month: ~$12,000+ one-time + $3,500+ recurring
## Selling This System
This pipeline is designed to be sold as a done-for-you service:
| Model | Setup Fee | Monthly | Your Time |
|-------|-----------|---------|-----------|
| Done-for-you | $2,000-$10,000 | $200-$1,000/mo | 4-8 hours setup |
| Pre-configured package | $500-$3,000 | $100-$500/mo | 1-2 hours per client |
| Productized service | — | $1,500/mo flat | Template + light customization |
The pipeline documents itself. Each run folder is a complete audit trail. The niche configs are templates. Second client takes 1/4 the time of the first.
## Credits
Built by Ryan Romero (Romero Automation) with Larry (OpenClaw agent). Pipeline architecture, spec generation, QA validation, and outreach automation — all designed for local service businesses in any US city.
FILE:_meta.json
{
"slug": "lead-gen-website-pipeline",
"name": "Lead Gen Website Pipeline",
"version": "1.0.0",
"description": "Find local businesses with bad websites, AI-generate custom demos, deploy to Vercel, and run a 5-email cold outreach drip via AgentMail. Full pipeline from Google Places discovery to closed deal.",
"author": "RazzleDazzleI",
"license": "MIT",
"tags": [
"lead-generation",
"website-builder",
"cold-outreach",
"email-drip",
"vercel",
"agentmail",
"google-places",
"local-business",
"automation",
"sales"
],
"repository": "https://github.com/RazzleDazzleI/lead-gen-pipeline",
"requires": {
"env": [
"GOOGLE_PLACES_API_KEY",
"GOOGLE_API_KEY",
"VERCEL_TOKEN",
"AGENTMAIL_API_KEY"
],
"bins": ["node"]
}
}
FILE:references/drip-sequence.md
# 5-Email Drip Sequence
## Email 1: The Intro (Day 0 — immediately after deploy)
**Subject:** I built [Business Name] a website — take a look
> Hi [First Name],
>
> I noticed [Business Name] doesn't have a website (or could use an upgrade), so I went ahead and built one for you.
>
> **Here's your preview:** [live demo link]
>
> It's mobile-friendly, shows up on Google, and has your phone number front and center so customers can call you directly.
>
> This is yours to keep if you want it — no obligation.
>
> — Ryan Romero
> Romero Automation
## Email 2: Social Proof (Day 3)
**Subject:** Quick question about your website preview
> Hi [First Name],
>
> Just checking in — did you get a chance to look at the website I built for [Business Name]?
>
> I've helped several businesses in the [City] area get online, and the ones who did saw an average of 30-40% more calls within the first month.
>
> Happy to walk you through it if you have questions. No pressure either way.
## Email 3: Urgency (Day 7)
**Subject:** Your [Business Name] website preview expires soon
> Hi [First Name],
>
> Heads up — the website preview I created for [Business Name] will be taken down in about a week.
>
> If you'd like to keep it, I can transfer it to your own domain. Pricing starts at $997 with everything included — hosting, SSL, updates, the works.
## Email 4: Last Chance (Day 14)
**Subject:** Last day for your [Business Name] website
> Hi [First Name],
>
> This is the last day your preview website will be live. After today, it'll be taken down.
>
> If you change your mind later, I can always rebuild it — but I wanted to give you a heads up.
## Email 5: Breakup (Day 30)
**Subject:** Closing the loop on [Business Name]
> Hi [First Name],
>
> Just a final note — the website preview I built for [Business Name] was taken down a couple weeks ago.
>
> If you ever decide you want a professional website, my door is always open.
## Psychology Behind the Sequence
- **Day 0:** No-pressure gift. They see their business on a real website before paying.
- **Day 3:** Social proof. Others like them got results.
- **Day 7:** Scarcity. The preview is temporary.
- **Day 14:** Loss aversion. Last chance to keep what they've already seen.
- **Day 30:** Clean break. Leaves the door open without being pushy.
FILE:references/env-example.md
# Environment Variables Reference
Copy this to your project's `.env` file and fill in your keys.
```bash
# Google (required)
GOOGLE_PLACES_API_KEY=your_places_api_key
GOOGLE_API_KEY=your_gemini_api_key
GOOGLE_SHEET_ID=your_google_sheet_id
# AI Models (at least one required)
ANTHROPIC_API_KEY=your_anthropic_key # Claude for spec generation
OPENAI_API_KEY=your_openai_key # GPT for HTML building
CLAUDE_BIN=/path/to/claude # Claude Code CLI (Max plan, optional)
# Deployment (required)
VERCEL_TOKEN=your_vercel_token
VERCEL_PROJECT_NAME=ai-website-specs # Optional, defaults to ai-website-specs
# Outreach (required for email automation)
AGENTMAIL_API_KEY=your_agentmail_key
[email protected]
# Branding
[email protected] # Contact form submissions go here
BRAND_DOMAIN=YourDomain.com # Footer attribution
# Optional
OLLAMA_BASE_URL=http://127.0.0.1:11434 # Local model fallback
OLLAMA_MODEL=qwen2.5-coder:3b
TZ=America/Chicago
```
FILE:references/google-sheet-setup.md
# Google Sheet Setup
## Create the Sheet
1. Go to Google Sheets and create a new spreadsheet
2. Name it something like "OpenClaw_Leads"
3. Name the first tab "leads"
## Add Column Headers (Row 1, Columns A-O)
| Column | Header | Description |
|--------|--------|-------------|
| A | created_at | ISO timestamp when lead was discovered |
| B | niche | Business category (landscaping, cleaning, etc.) |
| C | business_name | Full business name |
| D | address | Street address |
| E | phone | Phone number |
| F | email | Contact email |
| G | website | Current website URL (if any) |
| H | google_maps_url | Google Maps link |
| I | rating | Google rating (1-5) |
| J | reviews_count | Number of Google reviews |
| K | has_website | true/false |
| L | website_quality_score | 0-40 quality score |
| M | lead_score | 0-100 overall score |
| N | status | review / filtered / approved / demo_ready / failed |
| O | notes | Free text, demo URLs added here by pipeline |
## Service Account Access
1. Create a GCP project and enable the Sheets API
2. Create a service account and download the JSON key
3. Share your sheet with the service account email (Editor access)
4. Save the JSON key to `~/.openclaw/workspace/gcp-service-account.json`
## Lead Scoring
- No website: +40 points
- Weak website (quality < 20): +25 points
- Rating >= 4.0: +10 points
- 10+ reviews: +10 points
- Has phone: +10 points
- Base: +5 points
- **Minimum for review:** 60 points
## Status Flow
```
review → approved (manual) → processing (auto) → demo_ready (auto)
↓ ↓
filtered (auto, score < 60) failed (auto, on error)
```
Automated lead generation pipeline that finds local businesses with weak/no websites, AI-generates custom demo sites, deploys to Vercel, and runs a 5-email c...
---
name: lead-gen-website-pipeline
description: Automated lead generation pipeline that finds local businesses with weak/no websites, AI-generates custom demo sites, deploys to Vercel, and runs a 5-email cold outreach drip sequence via AgentMail. Full pipeline from Google Places discovery to closed deal.
version: 1.0.0
homepage: https://github.com/RazzleDazzleI/lead-gen-pipeline
metadata:
openclaw:
emoji: "\U0001F680"
requires:
env:
- GOOGLE_PLACES_API_KEY
- GOOGLE_API_KEY
- VERCEL_TOKEN
- AGENTMAIL_API_KEY
bins:
- node
---
# Lead Gen Website Pipeline
Automated system that finds local businesses with weak or no websites, AI-generates a custom demo website for each, deploys it to Vercel, and sends a personalized cold outreach email sequence — all without human intervention after initial setup.
## What It Does
1. **Discovers leads** via Google Places API for configurable niches and cities
2. **Scores leads** 0-100 based on website quality, reviews, phone availability
3. **Queues leads** in a Google Sheet for human review/approval
4. **Generates demo websites** via a 5-stage AI pipeline (research → spec → build → QA → validate)
5. **Deploys to Vercel** automatically with daily rate limiting
6. **Sends cold outreach** via AgentMail with a 5-email drip sequence (Day 0, 3, 7, 14, 30)
7. **Notifies you** on Discord with pitch angles, demo URL, and visual QA scores
## Pipeline Architecture
```
Google Places API → Score Leads → Google Sheet (you approve)
↓
Approved lead → Scrape website → Fetch Google reviews
↓
AI Research → AI Spec (copy) → AI Build (HTML) → AI QA → Validate
↓
Deploy to Vercel → Update Sheet → Discord notification
↓
Generate outreach email → AgentMail sends → Drip follow-ups
```
## Requirements
### API Keys (set in your .env)
| Key | Service | Purpose | Cost |
|-----|---------|---------|------|
| `GOOGLE_PLACES_API_KEY` | Google Cloud | Lead discovery + photos | ~$0-20/mo |
| `GOOGLE_API_KEY` | Google AI Studio | Gemini for research/spec/QA | Free tier |
| `ANTHROPIC_API_KEY` | Anthropic | Claude for spec generation | Pay per use |
| `OPENAI_API_KEY` | OpenAI | GPT for HTML building | Pay per use |
| `VERCEL_TOKEN` | Vercel | Demo site deployment | Free tier (100/day) |
| `AGENTMAIL_API_KEY` | AgentMail | Cold outreach emails | Free tier |
| `GOOGLE_SHEET_ID` | Google Sheets | Lead tracking | Free |
### Google Sheet Setup
Create a Google Sheet with these columns (A-O):
`created_at | niche | business_name | address | phone | email | website | google_maps_url | rating | reviews_count | has_website | website_quality_score | lead_score | status | notes`
Status values: `review`, `filtered`, `approved`, `processing`, `demo_ready`, `failed`, `contacted`
Share the sheet with a GCP service account for API access.
### Infrastructure
- **Node.js 22+** on the host machine
- **Google Cloud service account** JSON key for Sheets API
- **Vercel account** (free Hobby tier works)
- **AgentMail account** with at least one inbox
- **Discord channel** for notifications (optional but recommended)
## Setup Instructions
### 1. Clone and install
```bash
git clone https://github.com/RazzleDazzleI/lead-gen-pipeline.git
cd lead-gen-pipeline
npm install
```
### 2. Configure environment
Copy `.env.example` to `.env` and fill in your API keys.
### 3. Configure your niches and city
Edit `scripts/niche-defaults.json` to customize:
- Target niches (landscaping, cleaning, roofing, etc.)
- Color palettes per niche
- Common services per niche
- Trust items per niche
The pipeline supports 15 niches out of the box:
landscaping, auto detailer, cleaning service, handyman, roofing, pressure washing, plumbing, electrician, HVAC, painting, fencing, tree service, junk removal, pest control
### 4. Set up the poller
The poller watches your Google Sheet for approved leads and triggers the pipeline:
```bash
# Run once to test
node scripts/poll-approved-leads.js
# Run continuously (every 5 minutes)
node scripts/run-poller.js 5
```
For production, set up as a systemd service or OpenClaw cron job.
### 5. Set up outreach emails
```bash
# Dry run first — see what would be sent
node scripts/send-outreach.js --dry-run
# Send pending initial emails + follow-ups
node scripts/send-outreach.js
# Only send scheduled follow-ups
node scripts/send-outreach.js --followups
```
Set up as an OpenClaw cron job to run 3x/day:
```bash
openclaw cron add --name "outreach-sender" \
--cron "0 9,15,21 * * *" --tz "America/Chicago" \
--session isolated --announce \
--message "Run: cd /path/to/project && node scripts/send-outreach.js"
```
## Customization
### Target City
Change the Google Places API search query in the n8n workflow or lead discovery script to target your city instead of Omaha.
### Pricing Tiers
The business plan template includes 3 tiers:
- **Starter** ($997 + $49/mo) — Single-page landing site
- **Professional** ($1,997 + $99/mo) — Multi-page with gallery, analytics
- **Premium** ($2,997 + $149/mo) — Blog, booking, live chat, priority support
### Email Templates
The drip sequence (in `send-outreach.js`) follows the proven pattern:
- **Day 0:** "I built you a website — take a look" (demo link)
- **Day 3:** Social proof — "businesses like yours saw 30-40% more calls"
- **Day 7:** Urgency — "your preview expires soon"
- **Day 14:** Last chance — "taking it down today"
- **Day 30:** Breakup — "closing the loop, door is always open"
Edit the templates in `send-outreach.js` → `getDripEmail()` function.
### Design Blueprints
Add niche-specific design guidance in `templates/designs/<niche>.md`. The build stage loads these automatically to produce better-looking sites per vertical.
## Pipeline Stages Deep Dive
### Stage 1: Research
Consolidates lead data (name, phone, address, website, reviews) into a structured JSON summary. Uses scraped website data + Google Places API reviews.
### Stage 2: Spec
Generates all website copy — hero section, services, about, reviews, service area, footer. No HTML yet, just structured content.
### Stage 3: Build
Converts the spec JSON into a single-file responsive HTML page. Injects real photos (scraped or Google Places fallback), logo, niche-specific color palette.
### Stage 4: QA
AI reviews the HTML for 13 quality checks: robots meta tag, demo banner, phone numbers, form action, footer attribution, broken images, alt text, mobile hamburger menu, and more.
### Stage 5: Validate
Programmatic validation confirms all critical elements are present. Non-blocking — logs warnings but doesn't block deployment.
### Stage 6: Deploy
POSTs the final HTML to Vercel API. Tracks daily deploy count (max 90/day to stay under free tier limit). Returns live URL.
### Stage 7: Outreach
Generates a personalized cold email with pitch angles extracted from the lead data (no website, Gmail address, strong reviews, years in business).
## Output Per Lead
Each processed lead produces a run folder with ~19 artifacts:
- `intake.json` — Enriched lead data
- `research.json` — Structured summary
- `spec.json` — All website copy
- `final.html` — Production-ready HTML
- `evaluation.json` — Deploy URL + metadata
- `outreach-email.json` — Cold email + follow-up
- `screenshot-*.png` — Mobile/tablet/desktop captures
- `visual-qa.json` — Gemini Vision quality scores
- `status.json` — Run tracking
## Costs
### Per-Lead Cost
- Google Places API: ~$0.03-0.05/lead
- AI generation (Gemini + Claude): ~$0.10-0.50/lead
- Vercel hosting: $0 (free tier)
- AgentMail: $0 (free tier)
- **Total: ~$0.15-0.55 per lead**
### Monthly Operating Cost (at 10-20 leads/day)
- Google APIs: $5-20/mo
- AI models: $30-150/mo (less with Claude Max plan)
- Everything else: $0
- **Total: $35-170/mo**
### Revenue Potential (at 2% response rate)
- 50 emails/week → 1 conversation/week → 1 client/month
- 1 client = $997+ one-time + $49+/mo recurring
- Year 1 from one client/month: ~$12,000+ one-time + $3,500+ recurring
## Selling This System
This pipeline is designed to be sold as a done-for-you service:
| Model | Setup Fee | Monthly | Your Time |
|-------|-----------|---------|-----------|
| Done-for-you | $2,000-$10,000 | $200-$1,000/mo | 4-8 hours setup |
| Pre-configured package | $500-$3,000 | $100-$500/mo | 1-2 hours per client |
| Productized service | — | $1,500/mo flat | Template + light customization |
The pipeline documents itself. Each run folder is a complete audit trail. The niche configs are templates. Second client takes 1/4 the time of the first.
## Credits
Built by Ryan Romero (Romero Automation) with Larry (OpenClaw agent). Pipeline architecture, spec generation, QA validation, and outreach automation — all designed for local service businesses in any US city.
FILE:_meta.json
{
"slug": "lead-gen-website-pipeline",
"name": "Lead Gen Website Pipeline",
"version": "1.0.0",
"description": "Find local businesses with bad websites, AI-generate custom demos, deploy to Vercel, and run a 5-email cold outreach drip via AgentMail. Full pipeline from Google Places discovery to closed deal.",
"author": "RazzleDazzleI",
"license": "MIT",
"tags": [
"lead-generation",
"website-builder",
"cold-outreach",
"email-drip",
"vercel",
"agentmail",
"google-places",
"local-business",
"automation",
"sales"
],
"repository": "https://github.com/RazzleDazzleI/lead-gen-pipeline",
"requires": {
"env": [
"GOOGLE_PLACES_API_KEY",
"GOOGLE_API_KEY",
"VERCEL_TOKEN",
"AGENTMAIL_API_KEY"
],
"bins": ["node"]
}
}
FILE:references/drip-sequence.md
# 5-Email Drip Sequence
## Email 1: The Intro (Day 0 — immediately after deploy)
**Subject:** I built [Business Name] a website — take a look
> Hi [First Name],
>
> I noticed [Business Name] doesn't have a website (or could use an upgrade), so I went ahead and built one for you.
>
> **Here's your preview:** [live demo link]
>
> It's mobile-friendly, shows up on Google, and has your phone number front and center so customers can call you directly.
>
> This is yours to keep if you want it — no obligation.
>
> — Ryan Romero
> Romero Automation
## Email 2: Social Proof (Day 3)
**Subject:** Quick question about your website preview
> Hi [First Name],
>
> Just checking in — did you get a chance to look at the website I built for [Business Name]?
>
> I've helped several businesses in the [City] area get online, and the ones who did saw an average of 30-40% more calls within the first month.
>
> Happy to walk you through it if you have questions. No pressure either way.
## Email 3: Urgency (Day 7)
**Subject:** Your [Business Name] website preview expires soon
> Hi [First Name],
>
> Heads up — the website preview I created for [Business Name] will be taken down in about a week.
>
> If you'd like to keep it, I can transfer it to your own domain. Pricing starts at $997 with everything included — hosting, SSL, updates, the works.
## Email 4: Last Chance (Day 14)
**Subject:** Last day for your [Business Name] website
> Hi [First Name],
>
> This is the last day your preview website will be live. After today, it'll be taken down.
>
> If you change your mind later, I can always rebuild it — but I wanted to give you a heads up.
## Email 5: Breakup (Day 30)
**Subject:** Closing the loop on [Business Name]
> Hi [First Name],
>
> Just a final note — the website preview I built for [Business Name] was taken down a couple weeks ago.
>
> If you ever decide you want a professional website, my door is always open.
## Psychology Behind the Sequence
- **Day 0:** No-pressure gift. They see their business on a real website before paying.
- **Day 3:** Social proof. Others like them got results.
- **Day 7:** Scarcity. The preview is temporary.
- **Day 14:** Loss aversion. Last chance to keep what they've already seen.
- **Day 30:** Clean break. Leaves the door open without being pushy.
FILE:references/env-example.md
# Environment Variables Reference
Copy this to your project's `.env` file and fill in your keys.
```bash
# Google (required)
GOOGLE_PLACES_API_KEY=your_places_api_key
GOOGLE_API_KEY=your_gemini_api_key
GOOGLE_SHEET_ID=your_google_sheet_id
# AI Models (at least one required)
ANTHROPIC_API_KEY=your_anthropic_key # Claude for spec generation
OPENAI_API_KEY=your_openai_key # GPT for HTML building
CLAUDE_BIN=/path/to/claude # Claude Code CLI (Max plan, optional)
# Deployment (required)
VERCEL_TOKEN=your_vercel_token
VERCEL_PROJECT_NAME=ai-website-specs # Optional, defaults to ai-website-specs
# Outreach (required for email automation)
AGENTMAIL_API_KEY=your_agentmail_key
[email protected]
# Branding
[email protected] # Contact form submissions go here
BRAND_DOMAIN=YourDomain.com # Footer attribution
# Optional
OLLAMA_BASE_URL=http://127.0.0.1:11434 # Local model fallback
OLLAMA_MODEL=qwen2.5-coder:3b
TZ=America/Chicago
```
FILE:references/google-sheet-setup.md
# Google Sheet Setup
## Create the Sheet
1. Go to Google Sheets and create a new spreadsheet
2. Name it something like "OpenClaw_Leads"
3. Name the first tab "leads"
## Add Column Headers (Row 1, Columns A-O)
| Column | Header | Description |
|--------|--------|-------------|
| A | created_at | ISO timestamp when lead was discovered |
| B | niche | Business category (landscaping, cleaning, etc.) |
| C | business_name | Full business name |
| D | address | Street address |
| E | phone | Phone number |
| F | email | Contact email |
| G | website | Current website URL (if any) |
| H | google_maps_url | Google Maps link |
| I | rating | Google rating (1-5) |
| J | reviews_count | Number of Google reviews |
| K | has_website | true/false |
| L | website_quality_score | 0-40 quality score |
| M | lead_score | 0-100 overall score |
| N | status | review / filtered / approved / demo_ready / failed |
| O | notes | Free text, demo URLs added here by pipeline |
## Service Account Access
1. Create a GCP project and enable the Sheets API
2. Create a service account and download the JSON key
3. Share your sheet with the service account email (Editor access)
4. Save the JSON key to `~/.openclaw/workspace/gcp-service-account.json`
## Lead Scoring
- No website: +40 points
- Weak website (quality < 20): +25 points
- Rating >= 4.0: +10 points
- 10+ reviews: +10 points
- Has phone: +10 points
- Base: +5 points
- **Minimum for review:** 60 points
## Status Flow
```
review → approved (manual) → processing (auto) → demo_ready (auto)
↓ ↓
filtered (auto, score < 60) failed (auto, on error)
```