Skip to content

About

Book calls on LinkedIn by talking to Claude Code in plain English. Six skills that learn your voice, research every prospect, and launch a HeyReach campaign - but never send a single message you have not read and approved.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

LinkedIn Lead Gen, run from your terminal

Book calls on LinkedIn by talking to Claude Code in plain English. No content, no personal brand, no spam.

This is the exact system from the video, pre-built. You do not build any of it. You drop in one API key, talk to it in normal sentences, and it writes a genuinely personal message to every person on your list, in your voice, then launches the campaign.

It never sends anything you have not read and approved. Every launch stops and shows you 5 finished messages first. That gate is not optional and it cannot be skipped.


Why this works when the automation tools do not

Everyone else lets the automation tool do the thinking, the targeting, and the "personalization". Then they wonder why nobody replies.

Here the tool only does the sending.

The thinking Where it happens
Who to target Claude Code, from your ICP
Researching each person Claude Code, free web search
Writing the message, in your voice Claude Code
Reading it before it goes out You
Pressing send HeyReach
Replying to humans You, by hand

500 well researched prospects will always beat 5,000 random names who were never going to answer.


The five steps

  1. Set up Claude Code.
  2. Teach it your voice and your business. The step nobody does. It is why everyone else's messages sound like AI.
  3. Build the list and research it. Not just a list. A researched list.
  4. Launch from the terminal. Claude writes one message per person, shows you 5, and waits.
  5. Respond like a human. You do this yourself. It is the one thing no tool can fake.

What you need

Thing Why Cost
Claude Code The whole system runs inside it Claude subscription
A HeyReach account with your LinkedIn connected inside it The thing that actually presses send on LinkedIn paid, check heyreach.io for current pricing
A list source (Sales Navigator, Apollo, ZoomInfo, or your own CSV) Where the names come from varies, a free Apollo plan works to start
VS Code (optional but recommended) See your files on one side, talk to Claude on the other free
Aqua Voice (optional) Talk instead of type optional

The whole stack runs a couple of hundred dollars a month. You need one API key to start: HeyReach.


Step 0. Get this on your machine (2 minutes)

The easy way, no git needed:

  1. Click the green Code button at the top of this page, then Download ZIP.
  2. Unzip it somewhere you will find again, for example Documents/linkedin-lead-gen.

Or, if you have git:

git clone https://github.com/corebits-io/linkedin-lead-gen.git
cd linkedin-lead-gen

Then open that folder in VS Code (File → Open Folder). You now see the project on the left, and you will open Claude Code on the right.


Step 1. Set up Claude Code

If you have never used Claude Code, this is the easiest part. Everything you type from here on is plain English.

  1. Open the terminal inside VS Code (Terminal → New Terminal).

  2. Install it:

    npm install -g @anthropic-ai/claude-code

    No Node installed? Get it from nodejs.org, then run the line again.

  3. Start it from inside the project folder:

    claude
  4. Sign in with your Claude account when it asks.

  5. Test it. Type:

    hey, can you hear me?
    

That is the whole interface. You talk, it works.

Claude Code also runs in the desktop app, on the web, and as a JetBrains extension. The terminal inside VS Code is the nicest setup because you can watch the files change as it works.

Right now this thing knows nothing about you. That is exactly why everyone else's AI messages sound like AI. Fix that next.


Step 2. Teach it your voice and your business

Two things happen here. It learns how you write, and what you sell.

2a. Your voice

Get your own real messages:

LinkedIn → Settings → Data Privacy → Get a copy of your data → Download. LinkedIn emails you a zip. Unzip it and drop messages.csv into the voice-samples/ folder in this project.

No LinkedIn history? Fine. Drop in anything you have actually written: old emails, WhatsApp exports, your posts, notes. Any real writing works.

Then type this to Claude:

Use the teach-your-voice skill. I dropped my LinkedIn messages export in voice-samples/.
Read how I actually write, tell me in a few bullets how I sound, then save that as my voice profile.

It runs a small script over the file (your export can be tens of thousands of rows, so it never reads it all into the chat), prints a "here's how you sound" summary, and rewrites knowledge-base/voice-profile.md.

Then give it your own rules. Mine are:

Add these rules to my voice profile: no em dashes, no corporate words,
never say "I hope this finds you well". Nobody talks like that.

Your data never leaves your machine. voice-samples/ is gitignored. If you push this project to your own GitHub, your messages do not go with it.

2b. Your business

You do not need to write a strategy document. Just point it at your website:

Use the build-business-brain skill. My website is https://yourcompany.com
Read it and tell me what I sell, who I sell to, and who my best customers are.
Save it as my business profile and I'll fix anything that's off.

It reads the site, drafts your ICP, offer, personas and exclusions into knowledge-base/business-brain.md, and tags anything it guessed with [confirm]. Read it. Correct it. Your corrections win.

That is your ICP, your offer and your persona, done in one conversation.

The moment you know it worked

Ask it:

Write me one LinkedIn connection note for a founder who just raised a seed round.
Now show me one of my real messages next to it.

If you cannot tell which one is the machine, the prospect definitely cannot either.


Step 3. The list and the research

It is not "build a list". It is building a well researched list. That is what makes every message specific instead of generic.

3a. Work out who you are going after

Based on my business brain, what job titles and filters should I search for
in Sales Navigator or Apollo to find my ICP?

It gives you the exact search terms to paste in.

3b. Get the names out

Run that search in whatever database you have. Sales Navigator, Apollo, ZoomInfo, it does not matter. Sales Navigator has no export button, so either use an export tool on top of it or use something like Apollo that exports straight to CSV.

You need one file with four columns:

name,title,company,linkedin_url
Sarah Chen,Co-founder & CEO,Northwind Labs,https://www.linkedin.com/in/demo-sarah-chen

Drop it in the leads/ folder. There is a fake demo-list.csv in there already if you just want to test the flow.

No database at all? Claude can build a small list for you: Use the build-list skill to build a list from my ICP. It needs Clay or Apify connected and it burns tokens, so it is best for smaller lists.

3c. The part nobody does

Use the research-list skill on leads/my-list.csv

For every single person it finds what their company does and what is actually going on: funding, launches, hiring, a post they wrote. It writes all of it into a new file in research/ with a confidence tag on every row.

It will never invent a signal. If it finds nothing real about someone, it marks that row none and the message falls back to an honest company level note. Made up personalization is worse than none.

A 50 to 100 row list takes a few minutes.


Step 4. Launch from the terminal

You need a LinkedIn sequencer, the tool that actually sends connections and messages. This system uses HeyReach.

One time HeyReach setup

  1. Create a HeyReach account and connect your LinkedIn account inside their web app. This is a one time click and it cannot be done through the API.

  2. Get your API key: HeyReach → Settings → API Keys.

  3. In this project, make your env file:

    cp .env.example .env
  4. Open .env and paste your key after HEYREACH_API_KEY=. Save.

An API key is just a password that lets this system talk to HeyReach. .env is gitignored and never shared. Never put a key in any other file.

Write the messages

Using the researched list, write each person a short LinkedIn connection note
and first message in my voice, all about them, no pitch.
Show me 5 previews before anything is sent.

Claude takes the researched list and writes three things per person:

  • the connection note, under 300 characters, one line: "Hey Sarah, saw Northwind just shipped the eval tooling, so thought I'd connect."
  • the first message, sent after they accept, still 100% about them, ending in one genuine question
  • one follow up, only if they never reply, and it never opens with "just following up"

Your offer appears in none of them. That is the whole point. The offer comes up when you reply by hand, after they answer.

The gate

Claude builds the campaign in HeyReach as a draft, then stops and shows you 5 fully rendered messages, exactly as they will send, plus the safety summary: how many leads, the daily cap, how many rows were held back.

Nothing has been sent. Read them. Fix anything weird. Then, and only then:

These look good. Build the campaign in HeyReach and add the leads.
Connection request first, the DM after they accept, and one follow up if no reply.
Keep it to 25 a day.

Now it starts the campaign and pushes the leads, then reads them back to confirm each one really carried its own three messages.

Real humans do not send seven message sequences. Three touches, then stop.

The safety rules, built in

  • 25 connection requests per day by default. Change it in .env, but LinkedIn does not like volume, so keep it low.
  • A lead is only pushed if all three of its messages exist. Anything incomplete is held back, never sent with a generic filler.
  • Loading is not launching. No approval, no launch.

Step 5. Respond like a human

This is where you come in. Manually.

Yes, you could automate the replies. But every person replying here could be worth thousands of dollars to you. Do you really want to hand that conversation to an AI on day one?

Open LinkedIn. You already have research on every one of these people, it is sitting in your research/ file. Or just open their profile and look for ten seconds.

The number one rule

Never ask for a call in the first two messages. Ever.

They replied, so talk to them. About the thing they posted. About what is going on in their space. There is a real person on the other side of that screen, treat them like one. The call comes up on its own, usually by the third or fourth message, and half the time they are the one who asks.

To see how it is going:

Use the campaign-stats skill

Connections sent, accepted, replied, with the real rates.


What's in this folder

knowledge-base/          The brain. Everything it knows about you.
  voice-profile.md         How you sound. Your rules, your style.
  business-brain.md        What you sell and who you sell to.
  heyreach-api.md          How it talks to the tool that sends.
  playbooks/               Step by step procedure for each job.

.claude/skills/          The six skills. You get all of them.
  teach-your-voice         Learn how you write
  build-business-brain     Read your site, draft your ICP
  build-list               Build a list from your ICP (optional)
  research-list            Research every prospect
  launch-campaign          Write, preview, launch
  campaign-stats           Pull the numbers

voice-samples/           Your LinkedIn export goes here.      (private)
leads/                   Your prospect lists go here.         (private)
research/                Researched versions come out here.   (private)
campaigns/               Previews and push logs land here.    (private)

CLAUDE.md                The operating instructions Claude reads every session.
.env                     Your API key. Never shared.          (private)

Everything marked private is gitignored. It stays on your machine.

Skills vs playbooks: the skill is the thin front end, the playbook is the detailed procedure behind it. Edit the playbook to change how a step behaves.


All the prompts, in one place

See PROMPTS.md for every prompt in this guide, ready to copy.


Troubleshooting

The skills do not show up. New skills only register after a Claude Code restart. Quit and run claude again from inside the project folder.

"NO EXPORT FOUND" when teaching your voice. Your messages.csv is not in voice-samples/. LinkedIn's export is a zip, unzip it first, then move messages.csv in. Or point at it directly: python3 .claude/skills/teach-your-voice/analyze_voice.py path/to/messages.csv

HeyReach says no sender account. You have to connect your LinkedIn account inside the HeyReach web app first. The API cannot log a LinkedIn account in.

A message came out with an em dash / a buzzword / a pitch. Say so. That message breaks my voice rules, rewrite it and update voice-profile.md so it never happens again. The rulebook is a file you own, edit it.

Research came back empty for a lot of rows. That is honest, not broken. Those rows get a plain company level note instead of an invented hook. If most rows are empty, the list is probably too obscure or the LinkedIn URLs are wrong.

It is about to send something I did not approve. It will not. But if anything ever looks off, hit escape. Nothing reaches LinkedIn before you type your go.


Ground rules this system will not break

  1. Quality over volume. One genuine message beats fifty templated ones.
  2. Never invent data. No fabricated signals, names, numbers or references. If nothing real was found, it says so.
  3. Loading is not launching. Nothing goes live until you have seen the preview and said go.
  4. The 5 message preview happens every single time.
  5. 25 connection requests a day by default. Raising it comes with a warning.
  6. Stop before anything irreversible. Adding leads to a live campaign is real outreach. It proposes first.

A note on being careful

LinkedIn automation carries account risk. Keep the volume low, keep the messages real, and never send anything you would not send by hand. This system is built to make that easy, not to help you blast.

Your data, your keys and your prospect lists never leave your machine. Nothing in this repo phones home.


Credits

Built by Corebits. Free, MIT licensed, take it and change it.

If you would rather have something like this custom built for your business, there is a link for that on the site.

About

Book calls on LinkedIn by talking to Claude Code in plain English. Six skills that learn your voice, research every prospect, and launch a HeyReach campaign - but never send a single message you have not read and approved.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages