Candidate Outreach Automation Workflow: Research, Personalise, Follow Up, Stop on Reply
Recruiting outreach fails for two reasons: the message is generic, and the follow-up never happens. The workflow takes a sourced list, researches each candidate from their public profile and work, drafts a message that references one specific thing they did, sends it from the recruiter's address, follows up twice on a schedule, and stops the sequence the moment the candidate replies — handing the thread to the recruiter with the research attached. Reply rates double against templated outreach, and the recruiter's time goes to conversations, not first messages.
- Built and run for you$197/month
- Custom build$2,000–3,500 one-time
- TriggerNew candidate added to an outreach list (ATS project, sheet, CSV)
- Reference stackClaude + n8n
Per recruiter, up to 400 new candidates a month, email only. LinkedIn steps, multi-language outreach, or an agency running shared sequences across several recruiters are a custom build.
Written by Max Zeshut
Founder at Agentmelt · Last updated Sep 14, 2026
A recruiter can write ten good outreach messages a day or fifty bad ones. The good ones get replies; there is no time for them. Follow-ups are forgotten, and the ATS shows 'contacted' next to people who got one message six weeks ago.
Every sourced candidate gets a researched first message and two follow-ups, and the recruiter only sees the ones who replied. Outreach volume goes up without the reply rate going down, and the ATS reflects what actually happened.
How the workflow runs
Trigger, then 8 steps.
Trigger — New candidate added to an outreach list (ATS project, sheet, CSV). A candidate added to a sourcing project in the ATS or a row added to the outreach sheet starts a sequence for that person.
- 01Receive the candidateIntake & triggersWebhookName, current title and company, profile URL, and the role they are being sourced for.
- 02ResearchEnrichment & researchHTTP RequestPublic profile, company page, recent talks or posts, open-source or portfolio work — three to five facts, with sources.
- 03Pick the hookData extractionAI AgentOne specific, recent, professional thing the candidate did that relates to the role. Not their title, not their employer's tagline.
- 04Draft the messageDrafting & generationAI AgentUnder 90 words: the hook, why the role is relevant to it, one question. Plain text, no tracking pixels, no 'I hope this finds you well'.
- 05Send from the recruiterWrite-back & actionsGmailFrom the recruiter's own address, spaced to stay under daily limits; the ATS gets the message logged against the candidate.
- 06Follow up twiceScheduling & remindersWaitDay 4 and day 10, each a different angle (the team, the problem, the timing), each shorter than the last.
- 07Stop on replyNotifications & escalationGmail TriggerAny reply ends the sequence and forwards the thread with the research to the recruiter; an out-of-office pauses it.
- 08MeasureEvaluation & learning loopsGoogle SheetsPer role: sent, replied, positive, interviews — by hook type, so the recruiter learns which angles work for which roles.
Each capability page explains the pattern and lists every automation that uses it.
The template is built on n8n. The same steps run on Make, Zapier or plain code; the tool is chosen to fit your accounts, and you own the result.
- 01 Receive the candidate —
Webhook - 02 Research —
HTTP Request - 03 Pick the hook —
AI Agent - 04 Draft the message —
AI Agent - 05 Send from the recruiter —
Gmail - 06 Follow up twice —
Wait - 07 Stop on reply —
Gmail Trigger - 08 Measure —
Google Sheets
Data it touches
- Sourcing list (ATS project, Google Sheet, CSV)
- Public profiles and company pages
- Role brief
- Recruiter voice samples
- ATS for logging
Guardrails
- Only public, professional information is used; nothing personal, nothing inferred about protected characteristics.
- Sending limits: 40 new messages a day per mailbox, spaced, so the recruiter's domain reputation is protected.
- Every message is sent from a person's address and signed by that person; replies go to them.
- Opt-out language in every message; an opt-out suppresses the candidate across all roles.
- Follow-ups stop on any reply, including 'not now', which is logged as a future-contact date.
Standard or custom
When this becomes a custom build.
The subscription covers the standard version — $197/month, setup and maintenance included. Three things move it to a custom build ($2,000–3,500 one-time), delivered into your accounts to keep. If one of them is you, say so on the audit and the plan prices both.
LinkedIn as a channel, with the tooling and limits that brings.
Outreach in several languages or markets.
An agency with several recruiters sharing sequences, with assignment rules and a manager view.
Running the standard version first is the usual path: the exceptions it logs in the first month are the scope of the custom build, with your own numbers. How custom builds work.
One specific fact is the whole difference
Candidates can tell within one line whether a message was written for them. 'Saw the migration you led at Northwind' gets a reply; 'I came across your profile' does not. The workflow spends its effort on finding that one fact from public work — a talk, a project, a post, a product they shipped — and refuses to send when it cannot find one, because a generic message costs more in reputation than it earns.
Follow-ups are where the replies are
Most positive replies arrive on the second or third message; most recruiters never send them. The workflow's two follow-ups are scheduled, short, and take a different angle each time, and they stop on any reply. The recruiter never has to remember who to chase.
Sending limits protect the address you cannot replace
A recruiter's own address is the asset. Forty new messages a day, spaced through working hours, plain text, no tracking, sent from a warmed mailbox is what keeps that address landing in inboxes. The workflow enforces the limits rather than trusting the day's enthusiasm.
Tools in the stack
What it connects to.
| Tool | Role in this workflow |
|---|---|
| n8n | Sequencing, sending, reply detection, logging |
| Claude | Research summary, hook selection, drafting |
| Greenhouse / Lever / Ashby | Sourcing projects and message logging |
| Gmail / Outlook | Sending from the recruiter's address |
| Google Sheets | Outreach list and results |
Building it in Zapier instead? The step-by-step recipe.
Zapier has no importable file, so this is the build guide: the same process as the n8n template and the Make blueprint, one Zap step per line. Expect 10–14 steps; the AI steps use the Anthropic (Claude) app, rules go in Code by Zapier, and every AI step is followed by a Filter that stops the Zap when Claude flags the item for a person.
Before you start
– Keep the values from "Config (edit me)" somewhere the steps can read them — a Storage by Zapier key each, or a Formatter → Utilities step at the top of the Zap: your name, your email, company, time zone, quiet hours (21–8), approver (channel or email), test mode.
– Connect the apps once: Anthropic (an API key), plus Greenhouse / Lever / Ashby, Gmail / Outlook, Google Sheets.
– Turn the Zap on with test mode on; read the first runs in Zap History before switching it off.
Steps
- Trigger — Webhooks by Zapier — Catch Hook (trigger). A candidate added to a sourcing project in the ATS or a row added to the outreach sheet starts a sequence for that person.
- Clearbit — Find Person — Research. Public profile, company page, recent talks or posts, open-source or portfolio work — three to five facts, with sources.
- Anthropic (Claude) — Send Message. Model
claude-sonnet-5, max tokens 2000, temperature 0.2. Paste the system prompt below; the user message is the fields from the previous step.You are the "Pick the hook" step of the Candidate Outreach Automation Workflow workflow run by Agentmelt. Task: One specific, recent, professional thing the candidate did that relates to the role. Not their title, not their employer's tagline. Rules: - Only public, professional information is used; nothing personal, nothing inferred about protected characteristics. - Sending limits: 40 new messages a day per mailbox, spaced, so the recruiter's domain reputation is protected. - Every message is sent from a person's address and signed by that person; replies go to them. - Opt-out language in every message; an opt-out suppresses the candidate across all roles. - Follow-ups stop on any reply, including 'not now', which is logged as a future-contact date. - Answer only from the data provided in the input. If something is missing, say so in the output instead of guessing. - If this step produces a message or a document, put the full text in `draft` (and a `subject` if it is an email); put a one-line summary in `summary`. - Set `needs_human` true whenever you are unsure, the input is unusual, or a rule above applies; a person will look at it. - Return valid JSON matching the output schema; no prose outside the JSON. Reply with a single JSON object and nothing else: the fields the task needs, plus "needs_human" (true when unsure), "confidence" (0–1) and "summary" (one line).
- Code by Zapier (JavaScript) — parse Claude's JSON. Input
text= Claude's reply; codereturn JSON.parse(inputData.text);so the fields become mappable in later steps. - Filter by Zapier. Only continue if
needs_human(from the previous step) *does not exactly match*true. Everything Claude is unsure about stops here — check Zap History for those, or add a Paths step whose second path posts the item to your approver. - Anthropic (Claude) — Send Message. Model
claude-sonnet-5, max tokens 2000, temperature 0.2. Paste the system prompt below; the user message is the fields from the previous step.You are the "Draft the message" step of the Candidate Outreach Automation Workflow workflow run by Agentmelt. Task: Under 90 words: the hook, why the role is relevant to it, one question. Plain text, no tracking pixels, no 'I hope this finds you well'. Rules: - Only public, professional information is used; nothing personal, nothing inferred about protected characteristics. - Sending limits: 40 new messages a day per mailbox, spaced, so the recruiter's domain reputation is protected. - Every message is sent from a person's address and signed by that person; replies go to them. - Opt-out language in every message; an opt-out suppresses the candidate across all roles. - Follow-ups stop on any reply, including 'not now', which is logged as a future-contact date. - Answer only from the data provided in the input. If something is missing, say so in the output instead of guessing. - If this step produces a message or a document, put the full text in `draft` (and a `subject` if it is an email); put a one-line summary in `summary`. - Set `needs_human` true whenever you are unsure, the input is unusual, or a rule above applies; a person will look at it. - Return valid JSON matching the output schema; no prose outside the JSON. Reply with a single JSON object and nothing else: the fields the task needs, plus "needs_human" (true when unsure), "confidence" (0–1) and "summary" (one line).
- Code by Zapier (JavaScript) — parse Claude's JSON. Input
text= Claude's reply; codereturn JSON.parse(inputData.text);so the fields become mappable in later steps. - Filter by Zapier. Only continue if
needs_human(from the previous step) *does not exactly match*true. Everything Claude is unsure about stops here — check Zap History for those, or add a Paths step whose second path posts the item to your approver. - Gmail — Send Email — Send from the recruiter. From the recruiter's own address, spaced to stay under daily limits; the ATS gets the message logged against the candidate.
- Delay by Zapier — Delay For — Follow up twice. Day 4 and day 10, each a different angle (the team, the problem, the timing), each shorter than the last.
- Gmail — New Email Matching Search (trigger) — Stop on reply. Any reply ends the sequence and forwards the thread with the research to the recruiter; an out-of-office pauses it.
- Google Sheets — Create Spreadsheet Row — Measure. Per role: sent, replied, positive, interviews — by hook type, so the recruiter learns which angles work for which roles.
Guardrails to keep
– Only public, professional information is used; nothing personal, nothing inferred about protected characteristics.
– Sending limits: 40 new messages a day per mailbox, spaced, so the recruiter's domain reputation is protected.
– Every message is sent from a person's address and signed by that person; replies go to them.
– Opt-out language in every message; an opt-out suppresses the candidate across all roles.
– Follow-ups stop on any reply, including 'not now', which is logged as a future-contact date.
Full blueprint: https://agentmelt.com/workflows/candidate-outreach-automation/ · n8n template and Make blueprint: https://github.com/zeshutmax/agentmelt-blueprints
Want this running without building it?
Automation workflow
$197/month
We set up, host and maintain this workflow on n8n and connect it to your tools. Setup included, cancel monthly, you keep the JSON.
Custom build
$2,000–3,500 one-time
Your systems, your rules, your edge cases. A one-off build on Claude and n8n, delivered with documentation and a walkthrough.
Per recruiter, up to 400 new candidates a month, email only. LinkedIn steps, multi-language outreach, or an agency running shared sequences across several recruiters are a custom build.
Also sold one-time, installed in your own accounts, as part of the recruiters package — kit $49 · install $249 · package $490.
FAQ
Frequently asked questions.
Will candidates know it is automated?
The first message references something specific they did, comes from the recruiter's real address, and stops the moment they reply — from there it is the recruiter. Generic messages get noticed; researched ones get answered.
Does it use LinkedIn?
Not in the standard version. LinkedIn steps have their own limits and tooling, so they are part of a custom build once the email version is running.
Is this compliant with anti-spam rules?
Messages are individual, professional, from a named person, with a clear way to opt out, and opt-outs are honoured everywhere. That is the standard recruiters already work to by hand; the workflow just never forgets it.
Sources
What this blueprint is built on.
Vendor documentation the steps rely on, and the rules the guardrails are written against.
- Greenhouse — Harvest API developers.greenhouse.io/harvest.html
- NYC DCWP — Automated employment decision tools (Local Law 144) www.nyc.gov/site/dca/about/automated-employment-decision-tools.page
- Google — Email sender guidelines support.google.com/a/answer/81126