You built a product. Now you need to find the right market. Testing one vertical at a time is slow and expensive. This n8n workflow solves that by automating vertical discovery across 10-30 markets simultaneously. You'll identify adjacent verticals with AI, generate customized landing pages for each, prospect decision-makers with Exa.ai, and measure engagement to find product-market fit in weeks instead of months.
The Problem: Manual Market Validation Kills Momentum
Most founders test product-market fit by manually targeting one vertical at a time. You build custom messaging, create landing pages, research prospects, and run outreach campaigns. After weeks of work, you discover the vertical doesn't convert. Then you start over with a new vertical.
Current challenges:
- Testing 10 verticals manually takes 6-12 months of full-time work
- Each vertical requires custom landing pages, prospect research, and messaging
- No systematic way to compare engagement signals across markets
- Guessing which verticals will work instead of measuring actual demand
Business impact:
- Time spent: 40+ hours per vertical for setup and testing
- Opportunity cost: Missing better markets while focused on wrong verticals
- Cash burn: Paying for ads and tools across multiple failed experiments
- Decision paralysis: No clear data on which vertical to scale
The Solution Overview
This n8n workflow turns product validation into a systematic process. AI identifies 10-30 adjacent verticals where your product solves similar problems. The system generates unique landing pages for each vertical, stores them in Supabase, prospects decision-makers with Exa.ai, and runs targeted cold email campaigns. You measure engagement across all verticals simultaneously and identify the 2-3 markets with the strongest product-market fit signals.
The workflow uses Claude for vertical identification and landing page generation, Supabase as your database, Exa.ai for prospect discovery, and email automation for outreach. Each vertical gets tested in parallel, giving you comparative data within weeks.
What You'll Build
This vertical prospecting engine automates the entire market validation process from vertical identification through prospect outreach.
| Component | Technology | Purpose |
|---|---|---|
| Vertical Discovery | Claude AI | Identifies 10-30 adjacent markets for your product |
| Landing Page Generation | Claude AI + Custom Code | Creates vertical-specific pages with tailored messaging |
| Database | Supabase | Stores landing pages, prospects, and engagement metrics |
| Prospect Research | Exa.ai | Finds decision-makers in each vertical |
| Email Outreach | SMTP/Email Service | Sends personalized cold emails to prospects |
| Analytics Engine | n8n Function Nodes | Tracks engagement and identifies winning verticals |
Prerequisites
Before starting, ensure you have:
- n8n instance (cloud or self-hosted)
- Claude API key (Anthropic account)
- Supabase account with database configured
- Exa.ai API access
- Email service (SMTP or SendGrid/Mailgun)
- Domain for hosting landing pages
- Basic JavaScript knowledge for Function nodes
Step 1: Set Up Vertical Discovery with AI
The workflow starts by analyzing your product and identifying adjacent verticals where it could provide value. If you built a sales training tool for real estate photographers, AI suggests other service-based sales roles: HVAC sales, roofing consultants, medical device reps, insurance agents, and 20+ more.
Configure the Claude AI Node
- Add an HTTP Request node to call Claude's API
- Set the endpoint to
https://api.anthropic.com/v1/messages - Configure authentication with your Anthropic API key in headers
- Build a prompt that describes your product and asks for vertical suggestions
Node configuration:
{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 4000,
"messages": [
{
"role": "user",
"content": "Product: [Your product description]. Identify 20-30 adjacent verticals where this product solves similar problems. For each vertical, provide: industry name, typical pain points, decision-maker titles, and why this product fits."
}
]
}
Why this works:
Claude analyzes your product's core value proposition and maps it to industries with similar workflows, pain points, and buying behaviors. The AI identifies patterns in who benefits from your solution, not just obvious competitors.
Parse and structure the response:
Add a Function node to extract the vertical list from Claude's response and format it as structured data. Each vertical becomes a record with fields for industry name, pain points, target personas, and customization notes.
Step 2: Generate Vertical-Specific Landing Pages
Each vertical needs a landing page that speaks directly to their pain points using industry-specific language. A real estate photographer sees "Close more listing appointments." An HVAC salesperson sees "Win more installation contracts."
Configure Landing Page Generation
- Loop through each vertical from Step 1 using a Split in Batches node
- For each vertical, call Claude again to generate landing page content
- Include the vertical's pain points, target persona, and your product's core features
- Generate headline, subheadline, benefit bullets, social proof, and CTA copy
Prompt structure for landing pages:
const vertical = $input.item.json.vertical;
const painPoints = $input.item.json.painPoints;
const persona = $input.item.json.persona;
const prompt = `Create a landing page for ${vertical} professionals.
Pain points: ${painPoints}
Target persona: ${persona}
Product: [Your product description]
Generate:
- Headline (8-12 words, speaks to main pain point)
- Subheadline (15-20 words, explains solution)
- 5 benefit bullets (specific to ${vertical})
- Social proof section (testimonial format for ${vertical})
- CTA button text and supporting copy
Use ${vertical} industry terminology. Make it feel like it was built specifically for them.`;
Store in Supabase:
Connect a Supabase node to insert each landing page into your database. Store the vertical name, all copy elements, creation date, and a unique URL slug. This makes it easy to update content and track which pages perform best.
Database schema:
CREATE TABLE landing_pages (
id UUID PRIMARY KEY,
vertical_name TEXT,
url_slug TEXT UNIQUE,
headline TEXT,
subheadline TEXT,
benefits JSONB,
social_proof TEXT,
cta_text TEXT,
created_at TIMESTAMP,
engagement_score DECIMAL
);
Step 3: Prospect Decision-Makers with Exa.ai
Now you need people to send to these landing pages. Exa.ai finds decision-makers in each vertical based on job titles, company characteristics, and online presence.
Configure Exa.ai Integration
- Add an HTTP Request node for Exa.ai's API
- Set endpoint to
https://api.exa.ai/search - Build search queries for each vertical using job titles and industry keywords
- Request 20-30 prospects per vertical
Search query structure:
{
"query": "{{$json.vertical}} {{$json.decisionMakerTitle}} email contact",
"num_results": 25,
"type": "neural",
"contents": {
"text": true
},
"include_domains": ["linkedin.com"],
"category": "company"
}
Extract and enrich prospect data:
Use a Function node to parse Exa.ai results and extract names, titles, companies, and LinkedIn profiles. Add another HTTP Request node to find email addresses using an email finder service (Hunter.io, Apollo, or similar).
Store prospects in Supabase:
CREATE TABLE prospects (
id UUID PRIMARY KEY,
vertical_id UUID REFERENCES landing_pages(id),
name TEXT,
title TEXT,
company TEXT,
email TEXT,
linkedin_url TEXT,
found_date TIMESTAMP,
outreach_status TEXT
);
Step 4: Automate Cold Email Campaigns
Each prospect receives a personalized email that drives them to their vertical-specific landing page. The email references their industry, pain points, and includes the customized landing page URL.
Configure Email Node
- Add an SMTP or email service node (SendGrid, Mailgun, etc.)
- Loop through prospects for each vertical
- Generate personalized email copy using Claude
- Include the vertical-specific landing page URL with UTM parameters
Email template structure:
const prospect = $input.item.json;
const landingPage = $input.item.json.landingPageUrl;
const emailPrompt = `Write a cold email to ${prospect.name}, a ${prospect.title} at ${prospect.company}.
Context:
- Industry: ${prospect.vertical}
- Pain point: ${prospect.painPoint}
- Solution: [Your product]
- Landing page: ${landingPage}
Requirements:
- Subject line (5-7 words)
- 3-4 short sentences
- One specific pain point for ${prospect.vertical}
- Clear CTA to visit landing page
- Professional but conversational tone`;
Track email engagement:
Add UTM parameters to landing page URLs so you can track which verticals generate the most clicks. Store email open rates, click rates, and reply rates in Supabase for each vertical.
Workflow Architecture Overview
This workflow consists of 24 nodes organized into 4 main sections:
- Vertical discovery (Nodes 1-6): Claude identifies adjacent markets, parses responses, structures data
- Landing page generation (Nodes 7-14): Loops through verticals, generates custom copy, stores in Supabase
- Prospect research (Nodes 15-20): Exa.ai finds decision-makers, enriches with emails, stores in database
- Email outreach (Nodes 21-24): Generates personalized emails, sends campaigns, tracks engagement
Execution flow:
- Trigger: Manual execution or scheduled weekly
- Average run time: 15-25 minutes for 20 verticals
- Key dependencies: Claude API, Supabase database, Exa.ai, email service
Critical nodes:
- HTTP Request (Claude): Handles vertical identification and landing page generation
- Supabase nodes: Store and retrieve landing pages, prospects, engagement data
- Split in Batches: Processes verticals and prospects in parallel
- Function nodes: Parse API responses, format data, calculate engagement scores
The complete n8n workflow JSON template is available at the bottom of this article.
Key Configuration Details
Claude API Settings
Required fields:
- API Key: Your Anthropic API key
- Model:
claude-3-5-sonnet-20241022(best for creative content generation) - Max tokens: 4000 (sufficient for landing page copy)
- Temperature: 0.7 (balances creativity with consistency)
Common issues:
- Using
claude-instantinstead of Sonnet → Lower quality landing page copy - Token limit too low → Truncated landing page content
- Missing system prompt → Generic copy that doesn't match vertical
Supabase Configuration
Connection settings:
- Host: Your Supabase project URL
- API Key: Service role key (not anon key) for write access
- Table names:
landing_pages,prospects,engagement_metrics
Why this approach:
Supabase provides a PostgreSQL database with a REST API, making it easy to store structured data from n8n. The service role key allows the workflow to insert and update records without authentication issues. Using separate tables for landing pages and prospects enables you to track relationships and calculate engagement scores per vertical.
Variables to customize:
verticalCount: Adjust from 10-30 based on how many markets you want to testprospectsPerVertical: Change from 20-30 based on outreach volume capacityemailDelay: Set delay between emails to avoid spam filters (recommended: 30-60 seconds)
Testing & Validation
Test vertical discovery:
Run the workflow with your product description and review the AI-generated vertical list. Verify that suggested verticals make sense and have clear pain point mappings. If verticals are too broad or unrelated, refine your product description prompt.
Validate landing page quality:
Generate 3-5 test landing pages and review them for industry-specific language. Check that headlines address vertical-specific pain points, not generic benefits. Test that all copy elements are present (headline, subheadline, benefits, social proof, CTA).
Verify prospect data:
Run Exa.ai searches for 2-3 verticals and inspect the results. Confirm that job titles match decision-maker profiles. Validate email addresses using an email verification service before sending campaigns.
Test email delivery:
Send test emails to your own address for each vertical. Check that personalization works, landing page URLs are correct, and UTM parameters track properly. Verify emails don't trigger spam filters by testing with Mail-Tester.com.
Deployment Considerations
Production Deployment Checklist
| Area | Requirement | Why It Matters |
|---|---|---|
| Error Handling | Retry logic on API failures with exponential backoff | Claude and Exa.ai can timeout; prevents data loss |
| Rate Limiting | Delay nodes between API calls (2-3 seconds) | Avoids hitting API rate limits and getting blocked |
| Email Warmup | Start with 20-30 emails/day, increase gradually | Cold domains need warmup to avoid spam folders |
| Database Backups | Daily Supabase backups enabled | Protects landing page content and prospect data |
| Monitoring | Webhook alerts for workflow failures | Detect issues within minutes instead of days |
Scaling considerations:
For 10 verticals with 25 prospects each (250 total emails), expect the workflow to run for 20-30 minutes. If you're testing 30 verticals (750 emails), split the workflow into batches and run them on different schedules to avoid API timeouts.
Email deliverability:
Use a dedicated sending domain with proper SPF, DKIM, and DMARC records. Warm up your domain by sending to engaged contacts first. Monitor bounce rates and unsubscribe rates per vertical to identify deliverability issues early.
Real-World Use Cases
Use Case 1: SaaS Product Validation
- Industry: B2B SaaS
- Scale: Testing 15 verticals with 300 total prospects
- Modifications needed: Add Stripe integration to track which verticals convert to paid trials
- Result: Identified 3 high-converting verticals within 3 weeks
Use Case 2: Service Business Expansion
- Industry: Professional services (consulting, coaching)
- Scale: 20 verticals with 400 prospects
- Modifications needed: Replace landing pages with Calendly booking links for each vertical
- Result: Booked 45 discovery calls across 4 winning verticals
Use Case 3: E-commerce Product Launch
- Industry: Direct-to-consumer products
- Scale: 12 verticals with 360 prospects (B2B buyers)
- Modifications needed: Add Shopify integration to track which verticals place wholesale orders
- Result: Secured 8 wholesale accounts in 2 winning verticals
Customizing This Workflow
Alternative Integrations
Instead of Supabase:
- Airtable: Best for non-technical users - requires swapping Supabase nodes for Airtable API nodes
- PostgreSQL: Better for high-volume data - use n8n's Postgres node instead of Supabase
- Google Sheets: Use when you need easy manual editing - replace Supabase with Google Sheets nodes
Instead of Exa.ai:
- Apollo.io: Better B2B contact database - swap Exa.ai node for Apollo API calls
- LinkedIn Sales Navigator: More accurate for enterprise prospects - requires manual export or scraping
- Hunter.io: Simpler email finding - replace Exa.ai with Hunter domain search
Workflow Extensions
Add automated reporting:
- Add a Schedule node to run weekly engagement analysis
- Connect to Google Sheets API to generate comparison tables
- Calculate engagement scores: (email opens × 1) + (clicks × 3) + (replies × 10)
- Nodes needed: +4 (Schedule, Function, Google Sheets, Email)
Scale with A/B testing:
- Generate 2-3 landing page variations per vertical
- Split prospects into test groups
- Track which copy performs best per vertical
- Performance improvement: 30-50% higher conversion on winning variations
Integration possibilities:
| Add This | To Get This | Complexity |
|---|---|---|
| Slack integration | Real-time alerts when prospects reply | Easy (2 nodes) |
| HubSpot CRM | Automatic contact creation and deal tracking | Medium (5 nodes) |
| Zapier webhook | Connect to 1000+ other tools | Easy (1 node) |
| Stripe payments | Track which verticals convert to paid customers | Medium (4 nodes) |
| Google Analytics | Deep landing page behavior analysis | Medium (3 nodes) |
Customization ideas:
- Add a sentiment analysis node to score email replies and prioritize high-intent responses
- Integrate with a scheduling tool (Calendly, Cal.com) to book calls automatically from landing pages
- Build a dashboard in Retool or Bubble that visualizes engagement metrics across all verticals
- Add a follow-up sequence that sends 2-3 additional emails to non-responders
- Connect to LinkedIn automation tools to send connection requests alongside emails
Get Started Today
Ready to automate your vertical prospecting?
- Download the template: Scroll to the bottom of this article to copy the n8n workflow JSON
- Import to n8n: Go to Workflows → Import from URL or File, paste the JSON
- Configure your services: Add API credentials for Claude, Supabase, Exa.ai, and your email service
- Test with sample data: Run the workflow with your product description and verify landing pages generate correctly
- Deploy to production: Set your schedule and activate the workflow to start testing verticals
Need help customizing this workflow for your specific product or want guidance on scaling your winning verticals? Schedule an intro call with Atherial.
