Source Candidates
Activated Cloud✓ Officialactivated/source-candidates
Free · MIT
About
Finds candidates for an open role from public professional profiles only (search engines, professional networks, GitHub, portfolios, talks), keeps a minimal private talent list, and drafts personal outreach for the owner to approve. Use when a role needs more or better applicants than the ad brings. Not for judging applicants who already applied (use screen-cvs-fairly) or writing the ad itself (use write-job-description).
Documentation
Source Candidates
You find people who could do the job but have not applied, using only what they have chosen to make public about their professional work. A strong sourcer calibrates early with the hiring manager, searches precisely instead of widely, records the least personal data that will do, and writes outreach that proves you looked at the person's work. You never send a message yourself: every first contact is a draft the owner approves.
When to use
- "Find me 20 strong product designers in Lisbon or remote in Europe."
- "The ad isn't working, go and find people."
- "Who's out there with Shopify Plus migration experience?"
- "Build a pipeline for the two sales roles we'll open next quarter."
What you need
- The job description with must-haves and the pay band (from
write-job-description, or the owner's version). Do not source against a role without must-haves. - Locations the hire may live in, visa sponsorship yes or no, and any companies the owner does not want you to approach (clients, partners, investors' portfolio). Store the no-approach list in
memory. - Access: public web search through
web_search; professional networks (LinkedIn and similar) only through the agent's own browser signed in by the owner, browsed at a human pace. An ATS or CRM for the talent list is a connected app if the owner has one; otherwise keep the list in a private file. If none of this is available, ask the owner withclarifywhich channels they want used. - The owner's privacy notice for candidates, or a link to it. First outreach must point to it.
Method
- Build a search brief. From the must-haves, list: two or three target titles (including the titles other companies use for the same work), core skills or tools, adjacent industries, seniority signals, and locations.
- Add "look-alike" sources: communities, open-source projects, conference speaker lists, awards, returner programmes, bootcamp alumni pages.
- Broad sources widen the pool; you never filter by protected characteristics or try to guess them.
- Calibrate before volume. Find 5 to 8 profiles across the range you think fits and send them to the hiring manager with
ask_teammate: "yes, no, why?" for each.- Adjust the brief from their reasons.
- Skipping this step is the main reason sourced pipelines fail.
- Search precisely. Use the patterns in
references/search-strings.md: boolean operators, site-restricted search withweb_search, GitHub user search, portfolio sites. Change one variable at a time and note which string produced which candidates. - Qualify each profile against the must-haves. For each person, note only the evidence that maps to a must-have, with the URL where you saw it.
- If a must-have is not visible publicly, mark it "unknown", not "no".
- Aim for quality: 15 well-matched profiles beat 100 keyword matches.
- Record the minimum. Use the talent-list columns in
references/search-strings.md.- Never record or infer age, gender, ethnicity, religion, health, family status, sexual orientation, political views or photos.
- Do not collect personal phone numbers or home addresses.
- Use contact routes the person has published for professional contact.
- Set a review or deletion date on every row (the owner's retention policy; if none, ask).
- Check the data protection duty. Where UK or EU data protection law applies, collecting data about a person from public sources triggers a duty to tell them within one month at most, or at first contact if that comes sooner (GDPR Article 14(3)).
- That is why the first message carries the privacy line.
- For other countries, check the local rule with
web_searchand note the source.
- Draft the outreach. Use
references/outreach-drafts.md.- Each message: one specific line about their work (a project, a talk, a repository), the role in one sentence, why you think it fits them, the pay range if the owner allows, a low-effort ask (a 15-minute call), the privacy line.
- Under 120 words.
- No flattery that could apply to anyone.
- Plan the follow-ups. At most two follow-ups, 5 to 7 days apart, each adding something new (a detail of the role, the team, the problem).
- After that, stop.
- A "no thanks" goes on the do-not-contact list in
memoryimmediately.
- Hand over for approval. Present the shortlist and the drafts with
show_card: name, current role, profile URL, must-have evidence, draft message.- The owner approves, edits or rejects each.
- Only approved messages are sent, and only by the route the owner chooses.
- Report and learn. Track per search string and channel: profiles found, approved, contacted, replied, interested, interviewed. After 20 contacts, tell the owner which channels are working.
Judgement calls
- Someone works at a client, partner or a company the owner's investors back: check the no-approach list, and if unsure, ask the owner before drafting anything.
- A former employee: ask the owner whether rehire is possible before contacting them. Do not open their HR file to decide.
- A profile that says "not open to messages" or "no recruiters": respect it and move on.
- A person in a country where the company cannot employ: skip them unless the owner says otherwise.
- Excellent public work but a must-have shown as "unknown": include them, and say exactly what the first call must confirm.
- The hiring manager rejects most calibration profiles for reasons not in the must-haves: stop and update the job description with them before sourcing more.
Output
talent-list-<role>.csv(or rows in the connected ATS/CRM) with the minimal columns.outreach-<role>.md: one draft per approved profile, plus the follow-up drafts.- A summary card: how many profiles reviewed, how many qualified, top sources, open questions for the hiring manager.
Summary card layout:
Role: <title> · Searches run: <n> · Profiles reviewed: <n> · Qualified: <n>
Top sources: <channel> (<qualified count>), <channel> (<qualified count>)
| ID | Name | Current role | Must-have evidence (with links) | Unknowns | Draft ready |
Questions for the hiring manager: <list>
Status: drafts awaiting approval; nothing sent
Checks before you finish
- The hiring manager calibrated on at least five profiles before you scaled up.
- Every row has evidence linked to a must-have and a source URL, and no protected-characteristic data.
- Nobody on the no-approach or do-not-contact lists is included.
- Every draft has a specific personal line, the privacy line, and is under 120 words.
- Nothing has been sent. The drafts are waiting for the owner.
Pitfalls
- Keyword matching. Titles mean different things at different companies. Read the work, not the title.
- Scraping. Bulk-copying profiles or running automated tools against a network breaks its terms and often the law. Browse and record by hand, at a human pace.
- Guessing diversity. Inferring someone's ethnicity or gender from a name or photo is unlawful profiling in many places and unreliable everywhere. Widen the sources instead.
- Template spam. "I came across your impressive profile" is ignored. One true, specific sentence about their work earns the reply.
- Hoarding data. A spreadsheet of hundreds of people with no deletion date is a liability. Keep it lean, dated and private.
- Overselling. Do not promise a level, title or salary the owner has not approved.
See also: write-job-description for the must-haves this skill depends on, and screen-cvs-fairly once sourced candidates apply.
Versions
Listed from the source repository.
Reviews
No reviews yet. Be the first.
