Back to Alchemy
Alchemy RecipeIntermediateautomation

Automate email outreach sequences from LinkedIn profile research

Your sales team has just finished researching fifteen prospects on LinkedIn. They've taken screenshots, scribbled notes, and compiled a spreadsheet. Now comes the real work: crafting personalised cold emails that sound human, not templated. By the time they've written three emails, they've lost an hour. By day's end, they've sent ten emails into the void with no tracking system to monitor replies or flag who needs a follow-up. This is where most outreach campaigns die, not from poor targeting, but from sheer friction. Writing at scale requires either hiring another person or accepting that most emails won't get follow-ups. Neither option is practical. What if you could extract prospect data from LinkedIn, generate genuinely personalised emails, and set up automatic follow-up sequences, all without touching a spreadsheet or opening Gmail manually? You can. The trick is wiring together four specific tools and an orchestration layer that handles the entire conversation between them.

The Automated Workflow

The workflow runs like this: a prospect's LinkedIn profile URL triggers a research phase, which feeds into email generation, then branches into either immediate sending or review queue depending on your risk tolerance. All of this happens in an orchestration platform that coordinates timing and error handling.

Why n8n over Zapier or Make?

Zapier works well for simple automations, but this workflow has conditional logic and needs to parse unstructured prospect data into clean email copy. n8n gives you native support for code execution, better error handling, and lower per-execution costs. Make (Integromat) is a solid alternative if you prefer a visual builder; the logic remains identical.

Step 1: Trigger and Data Capture

Your sales team drops a LinkedIn profile URL into a shared n8n webhook or a simple webhook-receiving form. The workflow captures that URL and passes it to Cogram for research support. In practice, you'll manually copy prospect details (name, title, company, recent activity) from LinkedIn into a JSON payload, since LinkedIn blocks automated scraping.

json
{ "prospect_name": "Jane Chen", "prospect_title": "VP Marketing", "prospect_company": "TechFlow Inc", "prospect_industry": "SaaS", "recent_activity": "Posted about scaling GTM teams", "your_company": "Your Company Name", "your_value_prop": "We reduce GTM setup time by 40%"
}

This data structure becomes the input for all downstream nodes.

Step 2: Research Enrichment via Cogram

Cogram specialise in meeting notes and action items. In this workflow, you're using it differently: as a research summarizer. Create a Cogram-connected node that sends the prospect data to a "research meeting" where Cogram pulls together talking points and common problem for that role and industry. Set up a Cogram API webhook endpoint:

POST https://api.cogram.com/v1/meetings/enrich
{ "prospect": { "name": "Jane Chen", "title": "VP Marketing", "company": "TechFlow Inc", "industry": "SaaS" }
}

Cogram returns structured notes about typical challenges for VP Marketing roles in SaaS, which become context for your email generation. This step adds 30 seconds per prospect and lifts email relevance significantly.

Step 3: Email Generation with ChatGPT Writer and Claude

Now the core step. You'll use Claude Opus 4.6 for this rather than GPT-4o, because Opus handles longer context windows better when synthesizing prospect research into conversational copy. ColdConvert AI is also in your stack, but Claude gives you more fine-grained control. Create a prompt that combines the prospect data, Cogram research output, and your company positioning:

You are a sales email copywriter. Generate a single cold email (80-120 words) for: Prospect: {prospect_name}, {prospect_title} at {prospect_company}
Industry context: {cogram_research_summary}
Their recent activity: {recent_activity} Your company: {your_company}
Value proposition: {your_value_prop} Write the email as if you're a thoughtful peer, not a salesperson. Reference something specific from their recent activity. Ask for a 15-minute conversation, not a demo. Avoid phrases like "I thought of you" or "just checking in". Make it sound like you genuinely discovered them, not that they're one of 200 recipients.

In n8n, this becomes a "Claude" node (if using n8n's Claude integration) or an HTTP request to Anthropic's API:

POST https://api.anthropic.com/v1/messages
{ "model": "claude-opus-4.6", "max_tokens": 300, "messages": [ { "role": "user", "content": "[above prompt + filled variables]" } ]
}

Claude returns the email body. Extract it and pass to the next step.

Step 4: Review and Conditional Branching

You have two options here. Option A: route all emails to a human reviewer (slow but safe). Option B: flag only emails that score below a confidence threshold automatically. For Option B, add a second Claude call that scores the generated email on personalization, specificity, and tone (1-10 scale). If the score is below 7, the email goes to a Slack channel for manual review before sending. If it's 7 or above, it proceeds to sending.

POST https://api.anthropic.com/v1/messages
{ "model": "claude-opus-4.6", "max_tokens": 100, "messages": [ { "role": "user", "content": "Score this cold email on a scale of 1-10 for personalization, specificity, and conversational tone. Return only: SCORE: X. Email: [generated email]" } ]
}

If score >= 7, proceed to step 5. If score < 7, post to Slack and pause until manual approval.

Step 5: Email Sending and Tracking

Use ChatGPT Writer's native integration to draft the final version, then send via Gmail API (or your email provider's API). You'll need: - Gmail OAuth credentials configured in n8n

  • A designated "outreach" Gmail account or shared mailbox
POST https://www.googleapis.com/gmail/v1/users/me/messages/send
{ "raw": "[base64-encoded email with headers]"
}

Alternatively, use Payman AI to manage the sending orchestration if you want to distribute sends across multiple team members' mailboxes to avoid spam filters.

Step 6: Follow-up Sequence Setup

After sending, log the sent email details to a database (Google Sheets, Airtable, or Postgres). Tag it with a timestamp and "awaiting response." Three days later, a scheduled trigger fires. The workflow checks Gmail for replies using Gmail API filters:

GET https://www.googleapis.com/gmail/v1/users/me/messages?q=from:{prospect_email} after:{timestamp}

If a reply exists, mark the prospect as "responded" and skip follow-up. If no reply exists after 3 days, trigger a follow-up email. Use the same Claude node, but with a modified prompt:

Generate a 2-sentence follow-up email for {prospect_name}. Reference the previous email about {your_value_prop}. Ask if they're open to a brief call. Keep it under 40 words and genuinely friendly.

Set a second follow-up trigger for day 7 if still no response. Most outreach stops here; responses after two touches are low-probability. Full n8n Workflow Summary 1. Webhook receives prospect JSON.

  1. Cogram node enriches research.

  2. Claude Opus node generates email.

  3. Conditional scoring node evaluates quality.

  4. If score < 7, Slack notification pauses workflow.

  5. If score >= 7, Gmail API sends email.

  6. Database logging records send timestamp and prospect email.

  7. Day 3 trigger checks for replies via Gmail API.

  8. If no reply, Claude generates follow-up and sends via Gmail.

  9. Day 7 trigger repeats if needed. Each execution takes roughly 45 seconds. A team sending 20 emails per day costs you about 15 minutes of orchestration overhead, versus 4 hours of manual work.

The Manual Alternative

If you prefer human control over speed, run steps 1 through 4 automatically, then pause the workflow at step 5 (before sending). Review the generated email in a dashboard or Slack message, approve or edit it, then resume the workflow manually. This gives you quality control without sacrificing the time saved on research and copywriting. Most teams end up here initially, then gradually increase automation once they trust the email quality.

Pro Tips

Rate limiting and Gmail quotas.

Gmail API has a 100-message-per-day send limit for new accounts, and 500 messages per day once your account ages.

Space sends across 4 hours minimum per day to avoid hitting limits. Use n8n's delay node to stagger sends by 15 minutes.

Error handling on Claude API calls.

Claude's API occasionally returns rate-limit errors (429 status). Set up retry logic with exponential backoff in n8n: first retry after 2 seconds, second after 4 seconds, third after 8 seconds, then fail. This catches temporary overloads without crashing your workflow.

Cost per email.

A Claude Opus API call costs roughly 0.015 cents per email (with context). Gmail API is free. The workflow cost is about 2 pence per prospect end-to-end. Scaling to 500 emails a month costs under 10 pounds in API fees.

Avoiding spam filters.

Send from authenticated Gmail accounts with established history. Mix in personalised details early in the email body (use their company name, recent post, or role). Avoid URL shorteners; use full company domain URLs. Don't send more than 50 emails in an hour from one account.

Database logging.

Store every sent email, response, and follow-up action in a single table. This data becomes gold for your sales team later: you can see which industries respond best, which subject lines work, and whose follow-ups convert. Use Airtable API or Google Sheets for lightweight logging.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
n8nCloud paid tier25 poundsSupports 1,000 workflow executions; adequate for 500 prospects/month
Claude Opus 4.6 (API)Pay-as-you-go8–12 pounds~0.015 pence per email depending on context length
CogramProfessional20 poundsIncludes meeting notes and research enrichment
Gmail APIFree0 poundsIncluded with Google Workspace account
ChatGPT WriterN/A0 poundsBrowser extension; no additional cost if already used
Payman AIFree tier or Pro0–15 poundsOptional; only if distributing sends across team
Total53–72 poundsCovers research, generation, sending, and follow-up for 500 prospects/month