Passive candidates are not "people who hate you." They are people who are not looking right now. Most great engineering hires are in that group. The mistake is treating them like active job seekers with a longer subject line.
What "passive" means in practice
- Not marked Open to Work.
- Not applying to your job post.
- Still willing to hear a specific, well-paid, well-scoped opportunity.
If your pipeline is only inbound, you are competing for the small fraction of engineers who are actively shopping — often the most competed-over fraction.
Where passive engineers actually are
Public code hosts. GitHub profiles with recent work and no job-hunt signal. Primary hunting ground for IC roles — GitHub sourcing.
Professional networks with quiet profiles. LinkedIn without the green banner. Better for managers and people whose work is private.
Communities. Maintainers, conference speakers, Discord/Slack experts. High trust, low volume.
Your own past pipeline. Everyone who said "not now" six months ago. Cheapest passive source you already paid to find.
A filter stack for passive ICs
- Skill proof — language/framework in real repos, not only a skills list.
- Recency — contributions in the last 12 months.
- Stability signal — long tenure can mean happy where they are (still contact; adjust pitch). Job-hopping every six months is a different conversation.
- Reachability — email on profile, personal site, or commit history.
- Fit constraints — country/timezone you can hire in.
Indexes that expose activity filters (including ours) exist because LinkedIn Boolean cannot express "committed this year" cleanly.
Outreach that works on people who are not looking
Passive candidates delete anything that looks automated. Rules:
- Name a specific repo or talk.
- State salary range in message one.
- Explain why them, in one sentence.
- Offer an easy no and a referral ask.
- One follow-up max.
Full templates: how to email developers.
Pitch angle for passive people: the problem they would own and the level of impact — not "we have free snacks and a mission."
Volume expectations
| Approach | Useful replies / 100 contacts (rule of thumb) |
|---|---|
| Generic sequence | 1–5 |
| Specific + salary + proof you looked | 15–40 |
| Warm intro from a peer | Much higher, tiny volume |
If you need 5 onsite loops, plan backwards: ~15–25 serious conversations → ~80–150 well-researched outreaches for a scarce role, less for a common stack.
Passive ≠ uninterested forever
Track "not now" with a date and a reason. Revisit at 4–6 months with a new reason to talk (new role scope, new band, new product), not the same email resent.
When job posts still help
Passive sourcing does not mean delete the careers page. Active candidates are cheaper when they appear. Run both: post for inbound, source for the roles inbound never fills (senior, scarce, niche stack).
Start a passive search from a skill page, cut with the GitHub screen, then write like a human.
