Setup and run guide, step by step with prompts. Connect Apify once, build your voice and ICP files, then run repeatable batches that find, score, and draft outreach to LinkedIn leads matching your ideal client. You approve every message before anything goes out.
First-time setup: about 25 minutesIntermediateJuly 2026
Purpose
Prospecting is the job nobody wants to do. Sitting on LinkedIn for two hours, opening profile after profile, reading their posts, hunting for something specific to say. The LinkedIn Lead Engine hands all of that to Claude, once it's set up. Claude searches for people who match your criteria, reads what they've been posting, scores how well they fit, and drafts a comment and a DM for each one, anchored to something real.
The setup takes five steps and you only do it once. After that, running a new batch of leads is a single prompt.
Prerequisite
Apify must be connected in Claude before Step 5 can run. Step 0 below covers how to connect it if it isn't already.
A Claude Pro, Team, or Enterprise plan with the Apify MCP connector
Real writing samples to build voice.md from (emails, posts, docs, transcripts)
A raw ICP description to build icp.md from (job titles, industries, company size, signals)
00
Connect Apify
Where this happensClaude Settings, in claude.ai or the Claude Desktop app.
Go to Settings, then Connectors.
Click Add custom connector (or search the connector directory for Apify).
Server URL: https://mcp.apify.com
Complete the OAuth flow: sign into your Apify account and authorize.
Enable the connector for whichever chat or project you plan to use.
Sanity-check it works: ask "List the input schema for harvestapi/linkedin-profile-search" and confirm you get a real response before moving on.
01
Build voice.md
Where this happensA new, standalone chat, outside any Project.
Attach example texts, emails, or docs that represent your real writing. Paste this prompt in the same message:
Prompt
I'm giving you real samples of my writing (emails, posts, docs, transcripts,
whatever I paste below). Build a voice.md file from them, following this
exact structure:
1. The voice, describe the tone in plain terms based on patterns you
actually see in the samples, not generic assumptions.
2. Format rules, sentence length, paragraph length, how it opens, how it
closes, based on what the samples actually do.
3. Banned phrases, pull any phrase you notice me avoiding across samples,
plus flag any AI-sounding phrase that appears nowhere in my samples (a
phrase's absence across real writing is itself a signal it doesn't
belong).
4. Banned structures, same approach, pattern-matched from the samples,
not assumed.
5. Positioning rule, how I refer to myself and my authority based on how
I actually write about my own experience in the samples.
6. Final checklist, a short list to verify any new draft against this
voice before delivering it.
Do not invent tone traits the samples don't support. If the samples are too
thin to confirm something, say so instead of guessing.
When generating new content later using this file, never rephrase or lightly
modify ideas I've already given you. Generate genuinely new ones.
Samples:
[paste emails/posts/docs here]
Output: voice.md
02
Build icp.md
Where this happensSame chat as Step 1, as a new message.
Paste your raw ICP description along with this prompt:
Prompt
I'm giving you a raw ICP description below. Convert it into an icp.md file
for [platform, e.g. LinkedIn / Instagram] lead sourcing, using this exact
structure:
1. Who we're looking for, plain description, unchanged from what I gave you.
2. Platform filters, map every dimension in my raw ICP to an actual filter
field on [name the search tool/actor, e.g. harvestapi/linkedin-profile-search].
For each mapped field, say what value to use and why. If a dimension in
my raw ICP has no equivalent filter on this platform (e.g. gender,
hashtag communities, follower count), say so explicitly and move it to
section 3 instead of forcing a fit.
3. Signals that require post content or LLM judgment, everything from my
raw ICP that can't be a search filter. Include exact skip/exclude
criteria I gave you, worded as I gave them.
4. Scoring weight guidance, rank the signals from section 3 by how strong
a fit indicator each one is, highest first.
Ask me before guessing on anything ambiguous, especially seniority level,
company size bucket, or any filter with fixed enum values you're not certain
of. Don't force a loose match into a filter field just to fill it in.
Raw ICP:
[paste raw ICP here]
Output: icp.md
03
Create the Project
Where this happensClaude Projects, New Project.
Paste this as the Project instructions. Swap in your own name, brand, and preferences:
Prompt
I am Umaima, founder of AI Savvy Founders, based in Dubai. This project
contains my complete business context. Before responding to anything, read
the source of truth document uploaded in the knowledge files. It contains
my voice rules, business model, positioning, target audience, tech stack,
masterclass structure, and competitive intelligence. Always write in AI
Savvy Voice. Never use banned phrases or structures listed in the source
of truth.
STRICT RULE TO FOLLOW WHENEVER I ASK TO GENERATE IDEAS OR PROVIDE A SOURCE
OF IDEAS AS REFERENCE: NEVER CUSTOMIZE THEM OR MODIFY THEM. OWN YOUR OWN.
Preferences:
- Banned hook word: "most people"
- Brand name is AI Savvy Founders, never AI Savvy CEO
04
Upload files to Project knowledge
Where this happensInside the Project, Knowledge files (Add Content).
Add voice.md and icp.md from Steps 1 and 2 to the Project's knowledge files.
05
Run the pipeline
Where this happensA new chat started inside the Project.
Paste this master prompt:
Prompt
Read icp.md and voice.md before doing anything else.
Run the LinkedIn Lead Engine:
1. Search harvestapi/linkedin-profile-search using the filters in icp.md.
Confirm the count with me before fetching posts on anyone.
2. Filter out obvious mismatches (see icp.md exclusions) before spending
on step 3.
3. Fetch top 5 recent posts (harvestapi/linkedin-profile-posts, maxPosts:5,
postedLimit:"month") for everyone who survives the filter.
4. Score each lead 0-100 against icp.md, with one-line reasoning.
5. Draft one comment and one DM per lead, in voice.md, under 200 characters
each, anchored to a real detail from their profile or posts.
Show me a table first for review: name, linkedin_url, current_company,
role, fit_score, reasoning, draft comment, draft DM. Wait for my approval
or edits on each row.
Once I approve, export the approved rows to a CSV file with columns:
name, linkedin_url, current_company, role, website, email, fit_score,
draft_comment, draft_dm. Leave website/email blank if the profile search
didn't return one, don't guess or fabricate either. Never auto-send anything.
Batch size: [X] leads.
NOTE
Swap [X] for the batch size you want. If Actor 1 isn't set to profileScraperMode: "Full + email search", the website and email columns will come back empty.
WARNING
Claude does not send any messages. It generates a table and then a CSV for you to review. You are always the one choosing who gets contacted and when.
Running future batches
Once Steps 0 through 4 are done, only Step 5 repeats. Steps 1 and 2 only need to run again if your voice or ICP changes.
Frequently Asked Questions
Do I have to redo Steps 0 through 4 every time?
No. Those are one-time setup. Once Apify is connected, voice.md and icp.md are built, and the Project has both files in its knowledge, every future run is just Step 5 in a new chat inside the Project.
What batch size should I run?
Start small, 5 to 10 leads, since fetching posts costs Apify credits per profile. Once you trust the scoring and drafts, increase the number in "Batch size: [X] leads."
Why are the website and email columns empty in my CSV?
Actor 1 needs profileScraperMode set to "Full + email search" to return those fields. If it isn't set that way, Claude leaves the columns blank rather than guessing.
What if someone hasn't posted anything recently?
Claude scores and drafts from whatever is available, profile details, role, or company, and won't invent a post that doesn't exist.
Does Claude send the messages for me?
No. Claude drafts a comment and a DM per lead and waits for your approval row by row. Nothing sends automatically, ever.
Go deeper
Want AI employees running this across your whole business?
This is one workflow. In the live cohort we build AI employees across marketing, sales, and operations, so you can run systems like this across your entire business.