How to Find the Warm Prospects Already in Your LinkedIn Network
I ran 25,033 LinkedIn connections through an AI ICP check in 71 seconds for under $1 and found 435 warm prospects. The process, criteria and mistakes.
Short answer
Export your LinkedIn connections, write down your ideal customer profile, and let an AI model answer one question per connection: does this person fit? I did this for 25,033 connections in 71 seconds for under a dollar and found 435 warm prospects. Test on 100 records first, because strict criteria quietly hide good leads.
Key takeaways
- Your network is a pipeline nobody has sorted. 435 of my 25,033 connections were decision makers at the kind of company I sell to.
- Ask the model one narrow question per connection. Batching was faster and cheaper in my tests, but the answers were less consistent.
- Treat engagement and unknown company size as signals, not requirements. Strict criteria made my first run find 2 warm prospects instead of 435.
- Start with your newest 100 connections, read every answer, fix your criteria, then run everything.
- Send the model only job title, company and headline. Names, profile links and results can stay on your own computer.
The first time I ran my LinkedIn network through an ICP check, it came back with two warm prospects. Two, out of 25,033 connections.
The second run found 435. Same network, same tool. The only thing I changed was how I wrote my criteria.
Those 435 people are owners, CEOs, MDs, COOs and heads of operations at the kind of company I sell to. They had been in my network the whole time. I never looked, because looking properly would have cost me almost 70 hours.
Here's how the process works, what went wrong the first time, and what each step really costs.
Why is your LinkedIn network a pipeline you haven't looked at?
If you've been active on LinkedIn for a few years, you probably have thousands of connections. Some came from posts, some from events, some clicked "connect" for reasons nobody remembers. Somewhere in that pile are buyers. You just don't know which ones.
The manual way to find out is simple and miserable. Open a profile, read the title, check the company, decide. At 10 seconds a profile, my 25,033 connections would have taken almost 70 hours. So I never did it. I suspect you haven't either.
That means the list stays unsorted, and the pipeline inside it stays invisible. Meanwhile most of us put our outreach effort into cold lists full of people who've never heard of us.
A connection who fits your ICP isn't a deal. But it's a better starting point than a stranger. They accepted your request once. Some of them read your posts. That's reason enough to sort what you already have before you go looking elsewhere.
What does an AI ICP check on 25,033 connections look like?
The idea is to give a model one narrow question per person: does this person fit my ICP? Nothing else. No research, no summary, no essay.
I used Jev by TypeSafe, which I was testing at the time, called through OpenRouter. For each connection it saw only four things:
- Job title
- Company
- Headline, where available
- Whether the person engaged with my posts
It never saw a name. Names, profile links and emails stayed on my own computer.
My criteria were short:
- Role: owner, CEO, MD, COO or head of operations
- Location: company in or near the Netherlands
- Size: likely 50+ employees
- Plus: engaging with my posts
The whole batch finished in 71 seconds, for under a dollar in model costs. Every connection landed in one of four buckets:
| Bucket | Connections |
|---|---|
| Warm | 435 |
| Maybe warm | 1,982 |
| Cold | 5,856 |
| Not relevant | 16,756 |
Roughly two out of every three people I'm connected to will never buy what I sell. Useful to see in black and white, and it stings a little. Years of networking, mostly pointed in the wrong direction.
But 435 warm prospects plus nearly 2,000 maybes is real pipeline. It just needed sorting.
Why did my first run find only 2 warm prospects?
Because I told it to.
In the first version of my criteria, engaging with my posts was a requirement. It sounded smart. Someone who reacts to my content is warmer than someone who doesn't. But only 205 of my connections had engaged with my posts in the last 90 days. By making engagement a must-have, I threw out everyone else before the model even looked at their role.
The second mistake was quieter. LinkedIn's export doesn't include company size. The model has to infer it from the job title, company name and headline, the way a person skimming the list would. In my first setup, "I can't tell how big this company is" counted as a no. So anyone at a company the model couldn't size dropped out.
For the second run I changed two things:
- Engagement became a plus, not a requirement.
- Unknown company size counted as unknown, not as a no.
That took me from 2 to 435.
The lesson is boring and important. An AI filter does exactly what you write. If your criteria are stricter than your real buying signals, the output looks clean and is wrong. Two results out of 25,000 was an obvious red flag. A smaller miss would have been much harder to spot.
How do you write ICP criteria an AI can apply?
Writing criteria for a model is different from writing them for a sales deck. These are the rules I'd follow now.
Split must-haves from signals
Decide what really disqualifies someone. For me, that's role and rough company fit. Everything else, like engagement, is a signal that makes a borderline fit warmer. Keep the must-have list as short as you can.
Only ask for what the data can show
The export gives you a position and a company. Location and company size aren't in it, so the model is guessing them. That's fine, as long as your criteria admit it. "Likely 50+ employees" is honest. A tight employee range asks for precision the data doesn't have.
Make unknown its own answer
When a field is missing, the model needs to know what to do. Say it explicitly: unknown is not a no. If you don't, a missing field easily turns into a rejection. In my first setup, that's exactly what happened.
Give doubt somewhere to go
Four buckets beat two. With only yes or no, every doubt becomes a no and disappears. A "maybe warm" bucket keeps those people visible. Write one sentence per bucket that describes who belongs there, so a half-fit lands in the right place.
Why ask one question per connection instead of batching?
With 25,000 records, the obvious shortcut is to put many connections in one request. Fewer calls, less overhead.
I tested that. Batching was about four times faster and half the price. But only 78 to 84 percent of the batched answers matched the answers from one request per connection. Roughly one in five people got a different verdict.
When a full run costs around a dollar, saving fifty cents isn't worth that. A wrong "warm" means you reach out to someone who isn't a fit. A wrong "not relevant" is worse. A buyer quietly drops off your list and you never find out.
So: one question, one person, one call. You run hundreds of them in parallel, which is how 25,033 connections fit in 71 seconds.
How do you run this on your own network?
I put the tool I used on GitHub as the LinkedIn ICP Sorter. Everything runs locally on your machine, so names, connection data and results never leave it.
Here are the steps, with the honest cost of each one.
| Step | What you do | Honest cost |
|---|---|---|
| 1. Export | LinkedIn: Settings > Data privacy > Get a copy of your data > Connections | A short wait for the export email |
| 2. API key | Create an OpenRouter API key | About $1 for a full run of 25,000 connections |
| 3. Setup | Install Node 22 or newer and follow the README | You need to be comfortable in a terminal |
| 4. Criteria | Describe your ICP: must-haves, pluses and what each bucket means | The real work. Mine needed a second version |
| 5. Test | Run your newest 100 connections and read every answer | Under 20 minutes of reading at 10 seconds a profile |
| 6. Full run | Run everything | 71 seconds for my 25,033 connections |
| 7. Review | Check the warm list by hand before contacting anyone | 435 profiles at 10 seconds each is just over an hour |
Step 5 is the one people skip. Don't. Start with the newest 100, read what comes back, fix your criteria, then run everything. My first setup would most likely have returned zero warm prospects on a 100-record test. That's a clear signal, and it costs nothing to fix at that point.
If a terminal isn't your thing, give the README to a colleague who is at home in one. It explains each step.
What should you do with the warm list?
A sorted list isn't pipeline yet. It's a shortlist.
Review the results before you message a single person. The model is guessing location and size, and it only sees a few fields. Read the warm list yourself. For each person, ask whether you'd actually want a conversation with them. Remove the ones that slipped through.
Then look at the maybes. At 1,982 people, that bucket is too big to read in one sitting, but it's where your criteria are least sure. Skim a sample. If you keep finding people you'd want to talk to, your criteria are still too strict. Adjust them and run again. At under a dollar per run, rerunning is cheap. Your reading time is the expensive part.
What you say to these people is a separate question, and it matters more than the sorting. But at least your outreach effort now goes to the right people instead of a guess.
What are the limits of this approach?
A few things to be clear-eyed about:
- It's a side project. I built it to test Jev. We don't use it live at Arcgent, and I share it as is.
- Size and location are inferred. The export doesn't contain them, so the model reads them from title, company and headline. Some calls will be wrong.
- Headlines and engagement aren't in the standard export. LinkedIn's own file has no headline column, and knowing who engaged with your posts takes a separate step. Without that data, those signals are simply unknown.
- Your criteria are the product. The model is fast and cheap. Knowing who your buyer really is still has to come from you.
That last point is the whole story. The model sorted 25,033 people in 71 seconds. It took me two runs to tell it who I was actually looking for.
Frequently asked questions
How do I export my LinkedIn connections?
On LinkedIn, go to Settings, then Data privacy, then Get a copy of your data, and select Connections. LinkedIn emails you when the export is ready, usually within a few minutes. The file you need is Connections.csv, which includes each connection's position and company but not their location, company size or headline.
How much does it cost to sort LinkedIn connections with AI?
The model calls are cheap. Sorting 25,033 connections through OpenRouter took 71 seconds and cost under a dollar. The real cost is your time: writing criteria the model can apply, testing them on a small sample, and reviewing the warm list by hand before you contact anyone.
What is an ICP check?
An ICP check tests whether a person or company matches your ideal customer profile, the set of roles, company types and signals that describe who you sell to. Done with AI, it means asking a model one question per record, such as 'does this person fit my ICP?', and sorting the answers into buckets like warm, maybe warm, cold and not relevant.
Why does my AI lead filter return almost no matches?
Usually because the criteria are stricter than the data. If you make a rare signal mandatory, like engaging with your posts, or let missing information count as a no, the model rejects most people before it even weighs their role. Make rare signals a plus, tell the model that unknown means unknown, and test on 100 records before a full run.
Is it safe to run my LinkedIn connections through an AI model?
It can be, if you limit what you send. You can run the sorting on your own computer and pass the model only job title, company, headline and an engagement flag, never names, profile links or email addresses. Those stay in a local file and are only matched back to the results on your machine.
The build log · newsletter
Steal my automations.
One agent I built, the workflow behind it and the tools that made it work. Copy, paste, ship.
10,000+ builders already subscribed. Free.
A shorter version of this piece first went out to newsletter readers.
- /1 sep 2026
How to Choose Which Process to Automate First With AI
Flashy AI pilots stall. Score candidates on three questions (how often, how clear, how gladly handed off) and start with the process that will really run.
- /23 jun 2026
Claude Code subagents: when to use them and how to build one
When a Claude Code subagent beats a skill or slash command, how to write one as a Markdown file, and the rules that stop agents flooding your context.
- /31 may 2026
Why AI agents break in production: 5 patterns and their fixes
The model is rarely why an AI agent gets switched off. Poor design for failure is. Five patterns I keep seeing, each with its fix and what that fix costs.
