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
Generate Product Ad Copy & CTAs with GPT-4 for Slack and Airtable
⚡ AI Copywriter Pro: Instant Ad Copy & CTA Generator Transform product details into compelling marketing copy in second...
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...
Compare Lists and Identify Common Items & Differences Using Custom Keys
This workflow compares two lists of objects (List A and List B) using a user-specified key (e.g. email, id, domain) and ...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments