workflows.fit
Back to n8n workflows
n8n templateFreeBy Johnny Rafael

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...

DevelopmentCore NodesAILangchainOutput Parser StructuredSplit In BatchesIfAgent
Loading interactive preview...

Template notes

AI-Enriched Cold Outreach: Research → Draft → QA → Write-back ============================================================

What this template does ----------------------- Automates cold email drafting from a lead list by: 1. Enriching each lead with LinkedIn profile, LinkedIn company, and Crunchbase data 2. Generating a personalized subject + body with Gemini 3. 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) ------------------- 1. Trigger: Manual (replace with Cron if needed) 2. Fetch leads: Data Table “Get row(s)” filters rows where emailsubject is empty (pending) 3. Loop: Split in Batches iterates rows 4. Enrichment (runs in parallel): - LinkedIn profile: HTTP (companyurl) → Wait → Results → Data Table update → linkedinprofilescrape - LinkedIn company: HTTP (companyurl) → Wait → Results → Data Table update → linkedincompanyscrape - Crunchbase company: HTTP (urlsearch) → Wait → Results → Data Table update → crunchbasecompanyscrape (All calls use host cold-outreach-enrichment-scraper with a RapidAPI key.) 5. Draft (Gemini): “Agent One” composes a concise, personalized email using row fields + enrichment + ABOUT ME block. - Structured Output Parser enforces: json { "emailsubject": "text", "emailcontent": "text" } 6. Prep for QA: “Email Context” maps emailsubject, emailcontent, and email for the judge. 7. QA (Judge): “Judge Agent” returns APPROVED or REVISE (brief feedback allowed). 8. Route: - If APPROVED → Data Table “Update row(s)” writes emailsubject + emailbody (a.k.a. emailcontent) back to the row. - If REVISE → Skipped; loop continues.

Required setup --------------- Data Table: “emaillinkedinlist” (or your own) with at least: - email, Firstname, Lastname, Title, Location, CompanyName, Companysite, LinkedinURL, companylinkedin (if used), CrunchbaseURL, emailsubject, emailbody, linkedinprofilescrape, linkedincompanyscrape, crunchbasecompanyscrape (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