Your sales team spends two hours daily copying LinkedIn profiles into documents, cross-referencing company websites, and drafting individualised cold emails. By the time the fourth email lands in a prospect's inbox, you've already lost an entire working day to busywork. The irony: your best salespeople are the worst at this task because they're too valuable to be doing manual research. Yet somehow, this remains the standard workflow at most companies. The problem isn't complexity; it's fragmentation. You have tools that can extract prospect data, tools that can write personalised copy, and tools that can send emails. None of them talk to each other. So your team becomes the glue, manually copying information between windows, checking facts, rewriting subject lines, and hitting send one profile at a time. This post shows you how to automate the entire pipeline so a single link to a LinkedIn profile generates a fully personalised, ready-to-send cold email sequence. This is a genuinely useful workflow because it operates within realistic constraints. We're not pretending an AI can replace your sales instinct; we're automating the labour-intensive research and drafting so your team can focus on strategy and relationship building. The result: your team sends four times as many personalised emails without working weekends.
The Automated Workflow
We'll use n8n as the orchestration layer because it handles credential management well, integrates directly with LinkedIn data sources, and doesn't require you to write production-grade code. (Zapier works too, but n8n gives you more control over data transformation without extra cost.) How the workflow moves: 1. Sales rep pastes a LinkedIn profile URL into a simple form or Slack command.
-
n8n extracts prospect data (name, company, headline, recent activity) from LinkedIn.
-
Claude Sonnet 4.6 analyses the profile and generates a research summary.
-
ChatGPT Writer generates a personalised cold email using the summary.
-
ColdConvert AI optimises the email for open rates and tone.
-
n8n sends the final email via your email provider.
-
Everything logs to a Google Sheet for your CRM integration.
Setting up the LinkedIn data extraction:
You'll need a LinkedIn scraping tool that respects LinkedIn's terms. Use either RapidAPI's LinkedIn data endpoints or integrate with a tool like Apollo.io, which has clean API access. For this example, we'll assume you're using Apollo (which also provides enriched company data).
GET https://api.apollo.io/v1/people/search
Parameters:
- linkedin_url: [prospect_url]
- api_key: [your_apollo_key] Returns JSON with:
{ "person": { "name": "Sarah Chen", "title": "Head of Growth", "company_name": "TechCorp", "company_size": "201-500", "last_activity_date": "2025-01-15", "summary": "5 years SaaS marketing experience" }
}
Configure n8n webhook:
Create an n8n workflow that starts with an HTTP Request node (webhook). Sales reps trigger this by pasting the LinkedIn URL into a form, Slack slash command, or even a simple Google Sheet.
POST https://your-n8n-instance.com/webhook/linkedin-to-email
Headers: Content-Type: application/json Body:
{ "linkedin_url": "https://www.linkedin.com/in/sarah-chen-growth/"
}
Step 1: Extract prospect data (n8n HTTP node):
{ "method": "GET", "url": "https://api.apollo.io/v1/people/search", "qs": { "linkedin_url": "{{$json.linkedin_url}}", "api_key": "{{$env.APOLLO_API_KEY}}" }
}
Store the response in a variable called prospectData.
Step 2: Analyse the profile with Claude Sonnet 4.6:
Use the Code node in n8n to format a prompt, then call Claude's API.
POST https://api.anthropic.com/v1/messages
Headers: Content-Type: application/json x-api-key: {{$env.ANTHROPIC_API_KEY}} Body:
{ "model": "claude-sonnet-4-6", "max_tokens": 500, "messages": [ { "role": "user", "content": "Analyse this LinkedIn prospect and identify 3 key insights we could reference in a cold email:\n\nName: {{prospectData.name}}\nTitle: {{prospectData.title}}\nCompany: {{prospectData.company_name}}\nCompany Size: {{prospectData.company_size}}\nRecent Activity: {{prospectData.last_activity_date}}\nSummary: {{prospectData.summary}}\n\nReturn only the 3 insights as bullet points." } ]
}
Step 3: Generate cold email with ChatGPT Writer:
POST https://api.openai.com/v1/chat/completions
Headers: Content-Type: application/json Authorization: Bearer {{$env.OPENAI_API_KEY}} Body:
{ "model": "gpt-4o", "temperature": 0.7, "max_tokens": 400, "messages": [ { "role": "system", "content": "You are an expert cold email writer. Write personalised, concise cold emails that reference specific details from the prospect's profile. Keep emails under 150 words. Use a conversational tone." }, { "role": "user", "content": "Write a cold email to {{prospectData.name}} at {{prospectData.company_name}}. They are a {{prospectData.title}}. Here are 3 reasons they might care about our product:\n\n{{claudeAnalysis}}\n\nOur product helps teams reduce manual data work by 60%. Keep the email short and end with a clear call to action." } ]
}
Step 4: Optimise with ColdConvert AI:
ColdConvert AI has a simpler API. Send the draft email for tone and structure optimisation.
POST https://api.coldconvert.ai/v1/optimise
Headers: Content-Type: application/json api-key: {{$env.COLDCONVERT_API_KEY}} Body:
{ "email_body": "{{gptDraftEmail}}", "prospect_name": "{{prospectData.name}}", "industry": "{{prospectData.company_industry}}", "tone": "friendly"
}
Step 5: Log to Google Sheets and send email:
Use n8n's Google Sheets node to append a row with prospect data, email content, and timestamp. Then use the Send Email node to deliver via your SMTP provider (Gmail, SendGrid, etc.).
GET https://sheets.googleapis.com/v4/spreadsheets/{{SHEET_ID}}/values/append
Body:
{ "values": [ [ "{{prospectData.name}}", "{{prospectData.company_name}}", "{{prospectData.title}}", "{{optimisedEmail}}", "pending", "{{$now}}" ] ]
}
For email sending, configure n8n's Gmail or SendGrid node with the optimised email body and your sales rep's email address as the sender.
The Manual Alternative
If you want more control over which emails actually go out, insert a manual review step before sending. After ColdConvert optimises the email, n8n can send a Slack message to the sales rep with the draft email, two buttons (Send / Edit), and wait for approval before triggering the final send. This adds 30 seconds of human verification per email but prevents awkward mistakes (wrong prospect name, irrelevant company references). For teams sending dozens of emails daily, a small review checkpoint is sensible. Alternatively, generate the email and log it to a Google Sheet without sending automatically. Sales reps batch-review and send from the sheet, maintaining full visibility into what's going out.
Pro Tips
1. Rate limit Claude and GPT-4o carefully.
Both APIs have rate limits; Claude Sonnet 4.6 allows 50 requests per minute on most plans. If your team sends 100 emails per day, space requests across the day using n8n's delay node. Set delays to 2 seconds between requests to stay well within limits.
2. Cache LinkedIn profile data.
Use Apollo's caching or store extracted profiles in n8n for 24 hours. If two reps prospect the same company on the same day, you save API costs and avoid duplicate requests.
3. Monitor email deliverability.
ColdConvert AI optimises for open rates, but Gmail and Outlook still apply their own spam filters. Send test emails to your own inbox first. Check spam folder placement before rolling out to 50 prospects. Use a tool like Mailmodo or Warm to track open rates and adjust subject lines accordingly.
4. Set cost guards on OpenAI calls.
GPT-4o costs roughly £0.015 per 1,000 input tokens and £0.06 per 1,000 output tokens. A typical cold email generation uses 400-600 tokens total; call it £0.01 per email. If you accidentally loop the workflow, 1,000 runaway requests cost £10. Set usage alerts in your OpenAI dashboard and add error handling in n8n to catch failed API responses.
5. Test the workflow on 10 profiles first.
Before scheduling automated sends, manually run the workflow on 10 real LinkedIn profiles your team wants to contact. Review the generated emails for tone, accuracy, and whether Claude and GPT actually captured the right insights. Adjust system prompts if emails feel generic or miss obvious company details. Once you're happy with quality, scale up.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| n8n | Self-hosted (free) or Cloud Pro | £0–£25 | Self-hosted is free; Cloud Pro £25/month for reliable webhooks |
| Apollo.io | Professional | £50–£200 | Depends on monthly searches; 5,000 searches/month costs ~£99 |
| OpenAI (GPT-4o) | Pay-as-you-go | £5–£15 | £0.01 per email; 500–1,500 emails/month across team |
| Anthropic (Claude Sonnet 4.6) | Pay-as-you-go | £2–£8 | Slightly cheaper than GPT-4o; ~£0.005 per email |
| ColdConvert AI | Starter | £29 | Flat monthly; unlimited email optimisations |
| Google Sheets | Free or Workspace | £0–£8 | Free tier sufficient; Workspace for business email integration |
| Email provider (Gmail/SendGrid) | Free or Standard | £0–£20 | Gmail free for <5,000/month; SendGrid Pro £20/month for 10k/month |
| Total | £86–£296 | Budget assumes 1,000 emails/month across team |