AI cold outreach — the pipeline that works for me
Generating personalized offers for agritourism, carpentry, physiotherapy. AI takes a lead list, runs research, builds demo sites, drafts brand briefs and emails. Showing the pipeline structure.

Cold outreach via AI isn't spam-bombing. It's an individualized process where every lead gets materials made specifically for them, company research, brand brief, an actual demo site with their data. Showing the structure of my pipeline that runs for agritourism, carpentry, physiotherapy and other niches.
Philosophy
Classic outreach: "I send 1000 emails, 10 reply." Mine: "I make 10 emails, 5 reply."
Difference: each email has research + demo + a concrete idea. That costs 30 minutes of LLM time per lead but conversion is 10×. Numerically: 1000 × 1% = 10 replies vs 10 × 50% = 5 replies at 1/100 the time.
Pipeline in seven steps
1. Company research (Google Places + scraping)
2. Brand brief (LLM)
3. Design preset selection (manual based on industry)
4. Demo site generation (Next.js template)
5. Demo deploy to subdomain
6. SEO audit PDF
7. Email draft in PolishEach step is a script. Chain: first 3 in n8n, last 4 in bash + Claude Code.
Step 1: Company research
A Vikunja task triggers the pipeline. n8n workflow:
[New Vikunja task in "Cold outreach Q3"]
↓
[Google Places API: lookup name + address]
↓
[Web scraping if site exists]
↓
[Save to JSON: company-{slug}.json]The JSON has: name, address, phone, hours, services, photos, social media, Google reviews.
Step 2: Brand brief
LLM call to Claude Sonnet 4.6 (cheaper, batchable):
Prompt template:
"Based on [research JSON], describe this company's brand voice.
Format:
- Tone (formal/casual/playful/luxury)
- Target audience
- 3 values they communicate
- 5 keywords for positioning
- Brand colors (from photos, if any)"Output: 200-300 words of markdown. Not perfect, but 80% lands.
Step 3: Design preset
A human returns here. I have 5 visual presets for different niches:
| Preset | Where it fits |
|---|---|
agro-warm-stone | Rustic agritourism |
editorial-warm | Premium guesthouses |
editorial-mountain | Mountain destinations |
workshop-craft | Carpentry, crafts |
medical-clean | Physio, dentist, clinic |
Manual because "vibe" is something the LLM still doesn't feel well.
Step 4: Demo site generation
The last n8n step triggers a script on the mini PC:
./scripts/generate-demo.sh \
--slug company-name \
--preset workshop-craft \
--research /home/kkaletka/research/company-x.json \
--brief /home/kkaletka/briefs/company-x.mdScript:
- Clones the Next.js template (
demo-template/) - Personalizes content (section names, copy, colors from the brief)
- Pulls reference images (if the client has them)
- Generates a portfolio thumbnail
- Pushes to
/home/kkaletka/demo-{slug}on forge PC
Time: ~3 minutes per demo.
Step 5: Deploy
Script on forge:
ssh forge "cd /home/kkaletka/demo-{slug} && \
docker compose up -d --build"
# Update Cloudflare ingress
./scripts/cloudflare-add-route.sh demo-{slug}.kamilkaletka.dev forge:{port}The subdomain demo-{slug}.kamilkaletka.dev is alive in 30 seconds.
Step 6: SEO audit PDF
I generate an SEO report of the client's current site (if they have one) + suggestions:
./scripts/seo-audit.sh \
--url www.client-company.pl \
--output /home/kkaletka/audits/company-x.pdfThe audit has: PageSpeed, missing meta tags, structured data, top 10 niche keywords (Google Trends), comparison with 3 competitors. 3-page PDF.
Step 7: Email draft
Final step. Claude Code gets:
- research JSON
- brand brief
- demo link
- audit PDF
- previous-conversations history (if any)
Generates a draft in Polish with concretes:
Hi {first name},
I was on your website. I see {concrete detail from research}.
I made a proposal for what a new version could look like:
{demo link}
Plus a short audit of the current site — mainly {concrete finding from audit}:
{PDF link}
No obligations. If it clicks — let's talk.
Best,
Kamil Kaletka
602 148 729Every email is unique. Personalization sits in the things a spam-bot can't do, research, demo, audit.
What works, what doesn't
Works:
- Conversion ~30-50% reply rate on 10 sent
- Reactions like "wow no one made me a site before pitching"
- The demo is strong social proof, the client sees what they'll get
Doesn't work:
- Scale. 30 minutes of LLM per lead = max 5 leads per day
- Some industries (law firms, finance) need a formal voice the LLM struggles with
- Demos without actual client photos look generic, I ask for photos after first contact
Costs
Per lead:
- Claude Sonnet 4.6 (research analysis + brief + draft): ~$0.30
- Claude Opus 4.7 (final email personalization): ~$0.20
- Google Places API: ~$0.05
- Compute (forge VM): negligible
- Total: ~$0.55 per lead
30% conversion × average 5000 PLN deal = +1500 PLN expected per lead. Math closes.
AI cold outreach isn't a spam bot with mailmerge. It's a pipeline that for each lead does research, brand strategy, prototype and a draft email. The "1000 emails" era is passé. The "10 emails, 30-min LLM each" era, works.