Free guide · from the reel

A free Claude agent with one job: finding you clients.

It's called Harvey. You give it your website and the kind of client you want. It finds local businesses that match, reads their websites for a reason to reach out, writes each one a short email about that exact detail, and drafts your answers when they reply. Nothing sends until you approve it.

✦ Free · open source (MIT)⭐ 1.2k stars on GitHub🧠 Runs on your Claude plan

What it does

Harvey runs on your own computer, in a loop. Every 15 minutes it checks what needs doing and does it.

1.Learns your businessGive it your website. It works out what you sell, who you sell to, your competitors and the objections you'll hear.
2.Finds businesses that matchTell it the kind of client you want and where. The default source (OpenStreetMap) is free and needs no account.
3.Reads every websiteIt looks for a reason to reach out: a site nobody has updated in years, missing SEO basics, which agency built it, whether they run Google or Meta ads. Reading a site costs nothing, with no AI call.
4.Writes the emailA short first email about that one detail (under 75 words), plus two follow-ups. A ban list blocks phrases that sound like AI, like "I hope this finds you well".
5.Handles the repliesIt reads each reply, works out what the person meant, handles the objection and drafts your answer.
6.Waits for youBy default every email waits in the Outbox until you approve it. A check with no AI in it blocks broken emails before anything leaves.

What you need

🧠Claude Pro or Max + Claude Code Harvey thinks through the Claude Code CLI on the plan you already pay for, so there's no separate AI bill. It shares your plan's usage limits and stops at 80% by default. claude.com/pricing
🐍Python 3.11 or newer freeMacs ship with 3.9, so install a newer one first. python.org
📮A mailbox on a separate sending domain Gmail / Google Workspace, Microsoft 365 or any SMTP mailbox. Never your main domain (more on that below).
🔎Email finder + checker free tiersTo find the owner's address and check it before sending: Hunter (25 searches a month free) and Reoon or ZeroBounce. Without a checker, addresses are marked "guess" and Harvey never sends to them.

The setup

The easy way: let Claude Code set it up for you. Harvey ships with instructions that turn Claude Code into its setup wizard.

1

Let Claude set it up

Once · paste into Claude Code

Open Claude Code in an empty folder and paste this:

Paste into Claude CodeClone https://github.com/ethanplusai/harvey.git and set Harvey up for me using its README and CLAUDE.md. First check that I have Python 3.11 or newer. Don't send any email, create accounts or change DNS records without asking me first.
The Harvey repository on GitHub: MIT license, about 1.2k stars

github.com/ethanplusai/harvey

Prefer the terminal? These are the README's own commands:

Or do it by handgit clone https://github.com/ethanplusai/harvey.git cd harvey python3.13 -m venv .venv && source .venv/bin/activate && pip install -e . cp .env.example .env
2

Teach it your business

harvey train · about a minute

It reads your site and writes your product file, ICP and objection playbook. Check the result in harvey.local.yaml and fix your name and email there.

Terminalharvey train https://your-website.com
3

Choose what it looks for

harvey signals

Harvey collects nothing until you confirm which signals matter. This turns on the 21 free ones (old site, SEO gaps, agency in the footer, ads, page count and more):

Terminalharvey signals --confirm free
4

Find businesses

harvey discover

Set the type of business and the city in harvey.local.yaml (under icp). Check the cost first, then run it:

Terminalharvey discover --estimate harvey discover
💡The free map source covers 8 kinds of business: roofers, plumbers, HVAC, electricians, dentists, lawyers, builders/contractors and landscapers. For anything else (shops, restaurants, clinics of other kinds), add a paid source. DataForSEO starts at $0.372 per 1,000 businesses with $1 free credit, and Serper gives 2,500 free searches. See them with harvey discover --providers.
5

Watch it and approve

harvey dashboard · harvey run
Terminal · two windowsharvey dashboard harvey run

The dashboard opens at localhost:5555. In the Outbox, read each email and press A to approve or R to reject.

Harvey's Outbox with one email waiting for approval and Approve / Reject buttons

Harvey's real Outbox (the clinic and email in this demo are made up).

🛑Stop everything at once: harvey sending pause. The loop keeps running, nothing leaves.

I tested it first

I ran Harvey on my own agency with sending switched off. Here's what really happened.

~1 minto learn my site
95dentists found around Lisbon
$0to find them
0emails sent

What worked: it found 95 clinics in under 3 minutes for free, and read the 16 that list a website. It spotted real things to talk about. Four hadn't updated their site in over a year, and one not since January 2020.

What it wrote for that clinic, once it had the fact (clinic name removed):

Noticed the newest page on your website dates back to January 2020. For a dental clinic, the site is often where new patients go to check treatments before they ever pick up the phone. Curious whether most of your new patients still come through referrals, or does the website bring some in?

What to know:

Add Hunter + a checker to find ownersWrites in English by default"No booking" signal misses non-English sites

On the free setup it found the businesses but 0 people to email. Finding the owner's address needs the free email-finder keys above. The "no online booking" signal only looks for English booking tools, so it flagged Portuguese clinics that do take bookings. "No website" means the map listing has none, not that the business has no site.

Make it yours

All of Harvey's sales know-how is plain text in the skills/ folder. Change a file and the next cycle behaves differently.

Write in your languageIn this Harvey folder, edit skills/email_frameworks.md so every email and reply is written in [your language], in a natural local tone. Keep every existing rule, length limit and banned phrase, and translate the banned phrases too.
Sound like youRead skills/email_frameworks.md and skills/objection_handling.md in this Harvey folder. Ask me 5 questions about how I talk to clients and the objections I really hear, then update both files with my answers. Don't remove any compliance rules.

Before you send anything

🌐Use a separate sending domainBuy one (e.g. getyourbrand.com, not yourbrand.com), set up SPF, DKIM and DMARC, warm it up for 2–4 weeks and start at 10–20 emails a day. The 50 a day default is a ceiling, not a target.
⚖️Follow cold email lawIn the US (CAN-SPAM): a true subject line, a working opt-out and your postal address. Fines run up to $53,088 per violation. In the EU and UK (GDPR / PECR): the email must be clearly relevant to that person's job.
📅It doesn't book meetings yetIt moves the conversation toward a call. Calendar booking is on Harvey's roadmap, so for now you book it.
🤖Be honest if askedHarvey is told to say yes if someone asks whether they're talking to an AI. Keep it that way.
🔗Leave LinkedIn offIt's off by default. Automating LinkedIn breaks its terms and can get the account restricted.

If something goes wrong

command not found: harveyActivate the environment first: source .venv/bin/activate
ModuleNotFoundError: harvey (Mac)Run harvey install again. It fixes a macOS hidden-file flag that breaks the install.
Discovery finds nothingConfirm the signals first (step 3). On the free source, use one of the 8 kinds of business it covers, or add a paid source.
"No prospects with deliverable emails"Add a Hunter key and a Reoon or ZeroBounce key to .env. Harvey never sends to guessed addresses.
Emails land in spamIt's almost always the domain: check SPF, DKIM and DMARC, warm it up, and halve your volume.
🙌Harvey is by ethanplusai (MIT). Claude and Claude Code are by Anthropic.

This is what I do. Check out my work.

I make content, websites and AI tools for brands, with the same kind of AI tools you just saw.

See my portfolio →
Got a project in mind? paulino@trigonagency.com