Claude · Agents

Harvey: the free Claude Code agent that finds your clients and emails them for you

Harvey finds businesses that match your ideal customer, reads their website, writes them a personalized cold email, handles the replies and works the conversation toward a meeting. It runs on your Claude subscription, no API key. The setup, the settings that matter, and how not to burn your domain.

QQuentin Megevand
October 28, 2026 · 10 min read

Finding clients is three jobs at once: spotting the right businesses, understanding what's holding them back, then writing a message that makes them want to reply. Most people do one of the three, when they have time left over. Harvey does all three in a loop on your computer. It's an open source sales agent that runs on your Claude subscription, with no API key and no per-token bill.

It finds businesses that match your ideal customer, reads their website to pull out one specific fact, writes them a cold email that mentions it, reads the replies and works the conversation toward a meeting. By default, no email goes out without your approval. Here's how to install it, the settings that matter, and the rules to follow so you don't end up in spam.

Claude AI Lab

The Claude AI Lab is my Skool community where I share my Claude systems and the more advanced modules. Access is $67/month.

Join the Lab →
✅What you need
1
A Claude Pro or Max subscription, with Claude Code signed in (claude login). Harvey thinks and writes through it. A ChatGPT plan with Codex also works, as an option.
2
Python 3.11 or newer. Check with python3 --version. Macs ship 3.9: install 3.13 with brew install python@3.13.
3
A mailbox on a secondary domain. Gmail or Google Workspace preferred, Microsoft 365 works too. Never your main domain.
4
A website that describes your offer. Harvey reads it to learn what you sell and to whom.
2,800+
GitHub stars, MIT license
0
API keys, your Claude subscription is enough
15 min
between two work cycles
1

What Harvey does

🔗 github.com/ethanplusai/harvey
🔁One cycle every 15 minutes
5
It wakes up and checks its budget. Harvey reads your subscription quota and throttles itself to leave you headroom: 80% max by default, setting max_daily_claude_percent.
6
It picks the most useful task, without calling a model. In order: handle incoming replies, send ready campaigns, write missing campaigns, find new prospects, analyze.
7
It acts, logs everything, then goes back to sleep. The loop runs as long as your computer is on. Quiet hours (10 pm to 7 am by default, New York time) pause prospecting and writing: set usage.quiet_hours to your time zone.
🔎
Scout
Scores and personalizes the businesses it found. Code does the searching, the model only steps in where judgment is needed.
✍️
Writer
Writes 3-email sequences: under 75 words for the first two, under 40 for the last.
📤
Sender
Schedules each email, respects the daily cap and stops the sequence as soon as anyone at the company replies.
💬
Handler
Reads replies, works out the intent, prepares the next step and catches addresses that bounce.
📊
Analyst
Runs when there's nothing else to do: what's working, what isn't.
Its home turf
Harvey is strongest on small local businesses (5 to 50 people) and startups, exactly where paid contact databases are thinnest. No prospecting tool to pay for: no Apollo, no Clay, no ZoomInfo.
2

Install Harvey

💻 Terminal, then Claude Code
🤖The easy way: Claude Code handles it
8
Clone the repo and open Claude Code inside it with the three commands below.
9
Paste the message that follows. The repo ships a CLAUDE.md file that turns Claude Code into a setup wizard: it checks where you are, installs what's missing, asks one question at a time and trains Harvey on your offer.
git clone https://github.com/ethanplusai/harvey.git
cd harvey
claude
Set up Harvey for me. What I sell: [YOUR OFFER IN ONE SENTENCE]. My website: [YOUR WEBSITE URL]. My ideal customer: [INDUSTRY, COMPANY SIZE, CITY OR COUNTRY, ROLE OF THE PERSON TO CONTACT]. My time zone: [YOUR TIME ZONE]. I want every email to wait for my approval before it goes out. Ask me one question at a time and tell me what you're doing at each step.
🛠️Or by hand
10
Install with python3.13, not python3. On a Mac, python3 points to 3.9 and Harvey won't start.
11
Fill in the .env file. Every variable is explained inline. The only required one is your sending mailbox: harvey gmail auth connects Gmail once and for all.
12
Train Harvey on your website. It pulls out your offer, benefits, pricing and competitors, into files you can read and fix.
13
Confirm the signals, run discovery, open the dashboard, start the loop. Signals are covered right after.
python3.13 -m venv .venv && source .venv/bin/activate && pip install -e .
cp .env.example .env && $EDITOR .env
harvey train https://your-site.com
harvey signals --confirm free
harvey discover
harvey dashboard
harvey run
The dashboard
harvey dashboard prints a private link to 127.0.0.1:5555. It only listens on your machine and requires a token, because it can approve emails and start Harvey.
3

Tell it who to look for

🎯 Signals tab
📡29 signals, none without your OK
14
Harvey can collect 29 signals about a business, and collects none of them until you confirm. harvey signals --confirm free turns on the 26 free ones at once. Paid ones are opted into one by one.
15
Concrete buying signals. The business already pays for Google or Meta ads, has no online booking, has a stale blog, is hiring for a specific role, has no website, or its current agency credits itself in the footer.
16
It reads their website for free. Three requests per business, no browser, no model call: that's where it finds the specific fact that makes the email personal.
17
It finds who decides. The owner or founder, from the team and about pages, two people per company at most. Every address is verified, and only deliverable ones ever get an email.
🧮A cohort is a query
18
Tick what a good prospect must have and what rules it out. For example: works with a marketing agency, pays for Google ads, has no online booking. The dashboard counts the matching businesses live.
19
Every email knows why it's being sent. The signal that put the business in the cohort becomes the hook of the message.
Start for free
The default source, OpenStreetMap, is free with no account. It covers trades without a storefront poorly (roofers, plumbers). For more volume, paid sources start around $0.37 per 1,000 businesses, and harvey discover --estimate shows the cost before you spend anything.
4

The emails: writing, approval, replies

✉️ Outbox and Conversations tabs
✍️How it writes
20
Short emails that mention an observed fact. A ban list blocks AI tells ("I hope this finds you well", "I wanted to reach out", "circling back"), and there's never a pitch in a first email: first contact exists to start a conversation.
21
Its sales know-how lives in plain text files. The skills/ folder holds its methods: email frameworks, objections, qualification. Edit a file and the next cycle picks it up, no restart.
🛑Nothing goes out without you
22
Every email waits for your approval, by default. In the Outbox, one email fills the screen with everything Harvey knew when it wrote it. A to approve, E to edit, R to reject.
23
A check with no AI before every send. It blocks unfilled merge tags, banned phrases, emails over the length cap, too many links and undeliverable addresses.
24
Autopilot exists, just not yet. Approve a batch or two by hand, read what it writes, then turn it on in Settings, Sending. Even then, an email that links to a domain that isn't yours is held for you.
25
The kill switch. harvey sending pause stops every send in flight.
💬When someone replies
26
It works out the intent and drafts the answer. Interested, objection, not now: its reply goes through the same approval as everything else. A contract request, or a reply it has no safe answer for, comes straight to you.
27
It pushes toward the meeting. Choose how with booking_method: your calendar link (booking_url), two or three specific times offered in the email, or it asks the prospect what they prefer.
28
A "stop" is final. Any opt-out removes the person for good, and their later messages never get an automatic answer.
5

Don't burn your domain

🔥 harvey warmup
📬Deliverability: what decides everything
29
A dedicated sending domain. Buy a variant of your domain, for example getyourcompany.com for yourcompany.com. If a sending domain lands in spam, your main domain stays clean.
30
SPF, DKIM and DMARC set up. Without all three, Gmail junks you. harvey warmup checks them, along with domain age and blocklists, and answers READY or NOT READY.
31
2 to 4 weeks of warmup before real volume, with a warmup service that keeps running afterward. Harvey connects to TrulyInbox to track progress.
32
Ramp slowly. 10 to 20 emails a day per inbox at first, then about 5 more a day. The default cap of 50 a day is a ceiling, not a target.
33
Watch bounces. Above 3%, stop and clean your list. Harvey trips its own kill switch past the threshold you set.
⚖️The rules to follow
34
You are the sender. Every cold email carries an opt-out line and your postal address (compliance.postal_address, to set before your first campaign).
35
In the EU and UK, relevance is your justification. The email must relate directly to the person's role, you must know where the data came from, and opting out must be instant. Some countries, like Germany, want prior consent even for business email.
36
A do-not-contact list. Competitors, current customers: add them under compliance.do_not_contact. The check applies even to an email you already approved.
37
If someone asks whether it's an AI, it says yes. Never configure it otherwise. LinkedIn is off by default: automating it breaks LinkedIn's terms of service.
This isn't legal advice
If you send at volume or into a regulated industry, have a lawyer check your approach. And read your Claude subscription's terms before running an agent all day.
6

Your first week

📅 the day-by-day plan
🗓️The plan
38
Day 1: the domain. Buy your sending domain, create the mailbox, set up SPF, DKIM and DMARC, start the warmup. It's the longest step, so it goes first.
39
Day 2: the install. Claude Code installs Harvey, harvey train learns your offer. Read the files it produces and fix whatever sounds off.
40
Day 3: the target. Confirm the free signals, run harvey discover on the free source, build a first cohort of 20 to 30 businesses.
41
Days 4 to 7: the drafts. Let Harvey write, approve or reject each email, and rewrite skills/email_frameworks.md with your own wording, until you'd sign every email as is.
42
When harvey warmup says READY: the first sends, still on manual approval, 10 to 20 a day.
Useful even without sending
harvey export writes a CSV of every deliverable prospect it found, ready for your usual sending tool. While your domain warms up, Harvey is already building your list.

The real lever

A sales agent doesn't replace a clear offer. When Harvey's emails sound hollow, the cause is often upstream: a website that describes what you sell poorly, or an ideal customer that's too broad. Start there: an offer in one sentence, a precise customer, a buying signal that gives them away. Harvey does the rest in a loop, and you keep the part that really matters: approving, then talking to the people who reply.

Want to go further?

And day-to-day, I post one reel a day on Instagram: @quentin_iamarketing