Personalized Email Outreach with LinkedIn & Crunchbase Data and Gemini AI Review
AI-Enriched Cold Outreach: Research → Draft → QA → Write-back
What this template does
Automates cold email drafting from a lead list by:
Enriching each lead with LinkedIn profile, LinkedIn company, and Crunchbase data
Generating a personalized subject + body with Gemini
Auto-reviewing with a Judge agent and writing back only APPROVED drafts to your Data Table
Highlights
Hands-off enrichment via RapidAPI; raw JSON stored back on each row
Two-agent pattern: Creative Outreach Agent (draft) + Outreach Email Judge (QA)
Structured outputs guaranteed by LangChain Structured Output Parsers
Data Table–native: reads “unprocessed” rows, writes results to the same row
Async polling with Wait nodes for scraper task results
How it works (flow)
Trigger: Manual (replace with Cron if needed)
Fetch leads: Data Table “Get row(s)” filters rows where email_subject is empty (pending)
Loop: Split in Batches iterates rows
Enrichment (runs in parallel):
LinkedIn profile: HTTP (company_url) → Wait → Results → Data Table update → linkedin_profile_scrape
LinkedIn company: HTTP (company_url) → Wait → Results → Data Table update → linkedin_company_scrape
Crunchbase company: HTTP (url_search) → Wait → Results → Data Table update → crunchbase_company_scrape
(All calls use host cold-outreach-enrichment-scraper with a RapidAPI key.)
Draft (Gemini): “Agent One” composes a concise, personalized email using row fields + enrichment + ABOUT ME block.
Structured Output Parser enforces:
{
"email_subject": "text",
"email_content": "text"
}
Prep for QA: “Email Context” maps email_subject, email_content, and email for the judge.
QA (Judge): “Judge Agent” returns APPROVED or REVISE (brief feedback allowed).
Route:
If APPROVED → Data Table “Update row(s)” writes email_subject + email_body (a.k.a. email_content) back to the row.
If REVISE → Skipped; loop continues.
Required setup
Data Table: “email_linkedin_list” (or your own) with at least:
email, First_name, Last_name, Title, Location, Company_Name, Company_site,
Linkedin_URL, company_linkedin (if used), Crunchbase_URL,
email_subject, email_body,
linkedin_profile_scrape, linkedin_company_scrape, crunchbase_company_scrape (string fields for JSON).
Credentials:
RapidAPI key for cold-outreach-enrichment-scraper (store securely as credential, not hardcoded)
Google Gemini (PaLM) API configured in the Google Gemini Chat Model node
ABOUT ME block:
Replace the sample persona (James / CEO / Company Sample / AI Automations) with your own.
Nodes used
Data Table**
HTTP Request:**
AI Agent:**
Google Gemini Chat Model**
Split in Batches:** Main Loop
Set:** RapidAPI-Key
Customization ideas
Process flags:** Add email_generated_at or processed boolean to prevent reprocessing.
Human-in-the-loop:** Send drafts to Slack/Email for spot check before write-back.
Delivery:** After approval, optionally email the draft to the sender for review.
Quotas & costs
RapidAPI: Multiple calls per row (three tasks + result polls).
Gemini: Token usage for generator + judge per row.
Tune batch size and schedule accordingly.
Privacy & compliance
You are scraping and storing person/company data.
Ensure lawful basis, respect ToS, and minimize stored data.
Related Templates
Instagram Full Profile Scraper with Apify and Google Sheets
📸 Instagram Full Profile Scraper with Apify and Google Sheets This n8n workflow automates the process of scraping ful...
Technology News Workflow Explanation with Key Services
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Auto-Publish Techn...
Auto-classify Gmail emails with AI and apply labels for inbox organization
Who is this for? Professionals and individuals who receive high volumes of emails, those who want to automatically organ...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments