Set up the Cold Email Research Agent

About 15 minutes on n8n Cloud (longer on self-hosted n8n, where you first create your own Google OAuth client). Everything you need to go from download to the first drafts, in order. Ticks are saved in this browser so you can come back later.

Before you start

  • n8n (Cloud or self-hosted)
  • Google account: Sheets + Gmail
  • OpenAI API key (Tavily optional, for news)
  • Your offer, ICP and signature (Config)

1. Pick where it runs

n8n Cloud
  1. Log in to your n8n Cloud workspace.
  2. Workflows → Import from file.
  3. Pick the file(s) in workflow/.
n8n self-hosted
  1. Open your n8n (Docker or npm, v1.x/2.x).
  2. Workflows → Import from file.
  3. Same files; nothing else changes.
ChatGPT or Claude
  1. Create a Custom GPT or Claude Project.
  2. Paste gpt/INSTRUCTIONS.txt.
  3. Upload your sheet or paste rows in.

2. Setup checklist

3. Connect your tools

ServiceNodes that use it
Google SheetsGet New Leads, Update Lead Row
OpenAIResearch & Write
GmailCreate Gmail Draft

In each node, choose Create new credential and sign in (Google uses OAuth; OpenAI takes an API key). n8n stores credentials in your instance, not with us.

Run budget (n8n executions)

n8n Cloud counts one execution each time a schedule fires, even when nothing is new. Runs you start with Execute workflow in the editor don't count. n8n Cloud Starter includes 2,500 a month.

WorkflowDefault scheduleCronExecutions
ProspectingOn demand (manual trigger)-0 counted (manual runs don't count)

This employee at the defaults: 0 scheduled a month. All five AI employees on Workforce at their defaults: about 790 a month (724-833 depending on the number of weekdays), about a third of Starter's 2,500.

It runs when you click Execute workflow on a new batch. To schedule it, add a Schedule Trigger with a cron such as 0 8 * * 1-5 (weekdays 08:00, about 22 a month) and publish the workflow.

What the statuses mean

StatusMeaningYour next step
draftedDraft is in GmailReview, edit, send
low_fitBelow your fit thresholdSkip, or lower min_fit_score
missing_emailNo email in the rowAdd it or skip
errorSee the error columnFix and re-run

Troubleshooting

SymptomFix
Website fetch failsSome sites block bots: the row is marked error with the reason. Add notes in the sheet or skip it.
Drafts sound genericFill in value_prop and proof_point in Config and add 1-2 notes per lead.

Guardrails

  • Cold email rules differ by country (GDPR/ePrivacy, CAN-SPAM). Contact business prospects with a legitimate interest and honour opt-outs. Not legal advice.