recruiter-outreach
Skill8 starsChanged 5 months agoUnlicenseView on GitHub
Find technical recruiters at target companies on LinkedIn and send tailored connection requests. Looks up company URN IDs, searches by role+location, prioritizes by proximity and mutual connections, and sends notes under 300 characters. Use when user wants to reach recruiters at specific companies. Part of the Mercury job search toolkit.
1 other project uses a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- juanASP/mercuryedited, first seen Nov 1, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- juanASP/mercury★ 044% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- experience-bankSkill
- job-scoutSkill
- profile-optimizerSkill
- resume-tailorSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 7 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 66
Must be specific (company + role type + your signal)
- Distinctive: line 67
No fluff ("I'd be honored to connect with you")
- Distinctive: line 68
Don't ask "are there openings?" — assume there are (you saw the listings)
- Distinctive: line 82
If user doesn't identify as Senior, omit "Senior" from role type
- Distinctive: line 83
Use general terms: "Backend Engineer roles", "engineering opportunities"
- Distinctive: line 94
If status returns "already pending", note it and move on
- Very specific: line 98
After each connection request is sent, record it in the Mercury database via the CLI (this powers the dashboard):
- Distinctive: line 107
When a recruiter accepts or replies, update their status:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
LinkedIn Recruiter Outreach
Find and connect with technical recruiters at target companies who are hiring in the user's region.
Prerequisites
- LinkedIn MCP —
get_company_profile,search_people,connect_with_person
Workflow
1. Get Company URN IDs
LinkedIn's people search requires numeric URN IDs for the current_company filter:
get_company_profile("airbnb") → references.about → find company_urn → value: "309694"Plain-text company names are silently ignored by the filter — always use URNs.
2. Search for Recruiters
search_people(
current_company="{URN_ID}",
keywords="recruiter engineer {country/region}"
)Variations to try if results are sparse:
"technical recruiter {country}""talent acquisition engineer {country}""sourcer engineer {region}""tech recruiter Latin America"(for LatAm roles)
3. Prioritize Results
Rank by these criteria (in order):
- Same country/city as user (they recruit locally)
- 2nd-degree connection (can connect directly with note)
- Mutual connections (warm path, higher accept rate)
- Title explicitly mentions engineering/technical (not generic HR)
- Profile snippet mentions the target region (e.g., "hiring in Brazil")
Deprioritize:
- Recruiting Coordinators (limited decision-making power)
- Leadership/Executive recruiters (wrong level for IC roles)
- 3rd+ degree with no mutuals (low accept rate)
4. Draft Connection Notes
Constraints:
- Max ~300 characters (LinkedIn truncates on mobile)
- Must be specific (company + role type + your signal)
- No fluff ("I'd be honored to connect with you")
- Don't ask "are there openings?" — assume there are (you saw the listings)
Template:
Hi {Name} — I'm {User}, {Role} at {Company} ({City}), working on {specialty} with {stack}. I saw {Target} is {growth signal} and I'm interested in the {role type} roles. Would love to connect and chat if you're hiring for that area.Adapt per company:
- DoorDash: "growing the SP engineering hub"
- Airbnb: "building out the engineering hub in Brazil"
- Uber: "hiring engineers in Brazil"
- Brex: "hiring engineers in Brazil"
Level calibration:
- If user doesn't identify as Senior, omit "Senior" from role type
- Use general terms: "Backend Engineer roles", "engineering opportunities"
5. Send Connection Requests
connect_with_person(linkedin_username="{username}", note="{tailored_note}")Rate limiting:
- Max 10-15 connection requests per session
- Space them out if sending many (LinkedIn may restrict)
- If status returns "already pending", note it and move on
6. Persist to Mercury
After each connection request is sent, record it in the Mercury database via the CLI (this powers the dashboard):
mercury recruiter add \
--name "{Name}" --company "{Company}" --username "{linkedin_username}" \
--title "{Title}" --location "{City}" --degree "{2nd|3rd}" \
--status pending --note "{mutuals / context}"When a recruiter accepts or replies, update their status:
mercury recruiter update --id {id} --status accepted # or: replied | interviewing | closedLog the outreach wave as an activity entry:
mercury activity log --skill recruiter-outreach --summary "Sent {N} requests to {companies}"If the
mercuryCLI isn't installed, fall back to appending a row to the Recruiter Outreach Tracker table in the user's journal markdown.
7. Present Results Table
| Recruiter | Company | Title | Location | Degree | Status |
| Name | Company | Their title | City | 2nd/3rd | ✅ Sent / ⏳ Pending |
8. Follow-up Guidance
Provide the user with:
If accepted but no reply (wait 3 business days):
Thanks for connecting, {Name}! I'm {User} — {Role} at {Company} ({City}), {stack}. Interested in engineering roles at {Target}. Happy to chat if there's a fit.If no response after 1 week: Move on. Don't double-message recruiters.
Gotchas
- URN IDs are required —
current_company="airbnb"returns unfiltered results (silently ignored) - Some company pages are broken (e.g., Brex returns "Page not available") — fall back to keyword search without company filter:
search_people(keywords="Brex recruiter engineer Brazil") - Recruiter titles vary: Sourcer, Technical Recruiter, Talent Acquisition, Recruiting Coordinator — all valid but prioritize Sourcers and Technical Recruiters for IC roles
- "Message" button vs "Connect": 3rd+ degree shows "Message" (uses InMail credits) or "Follow". "Connect" with note is preferred for 2nd-degree.
- Diversity of time zones: US-based recruiters covering LatAm are common at big tech — don't skip them just because they're not local
- Mutual connections matter: mention them in the note if relevant ("We share mutual connections in the Amazon SP office")
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

