$npx -y skills add thtskaran/claude-skills --skill people-sourcerUse this skill any time the user wants to FIND specific people online and put them in a spreadsheet — recruiting candidates, sales prospects, outreach lists, research participants, journalist sources, podcast guests, influencer lists, lead lists, beta testers, advisors, or hires.
| 1 | # People Sourcer |
| 2 | |
| 3 | A real recruiter, BD person, or research lead doesn't open a CRM first. They start with a question: *who specifically am I trying to reach, and why?* Then they hunt — across whichever platform that tribe actually lives on — and they keep notes. This skill makes Claude work that way, end-to-end, into a spreadsheet the user can act on. |
| 4 | |
| 5 | ## Core premise |
| 6 | |
| 7 | Spam happens when you compile names without context. A list with 200 anonymous LinkedIn URLs is worse than 30 rows where each one has a real signal — *this person posted last week about exactly your problem, here's how to enter their world.* |
| 8 | |
| 9 | So the rule is: **never source from zero. Always source from signal.** Find the place where the right people are already self-identifying, scrape that signal, then enrich and personalize. The personalization is what makes the difference between a useful list and noise. |
| 10 | |
| 11 | ## When to use this skill vs. just Google |
| 12 | |
| 13 | Use this skill when the deliverable is a **list of named individuals** with structured fields. Don't use it for: |
| 14 | - Aggregate research ("how big is the X market") — use web search. |
| 15 | - Finding a single specific named person — just web search + verify. |
| 16 | - Company lists without people attached — that's account research. |
| 17 | |
| 18 | If in doubt: if the user wants rows in a spreadsheet with names and an outreach angle, this is the skill. |
| 19 | |
| 20 | ## The workflow |
| 21 | |
| 22 | Six phases. Each writes to a scratchpad so context survives long runs. |
| 23 | |
| 24 | ``` |
| 25 | 1. Intake → pin down WHO and WHY |
| 26 | 2. Source strategy → pick platforms + queries |
| 27 | 3. Discovery → iterative BrightData scraping |
| 28 | 4. Enrichment → per-person profile + contact pull |
| 29 | 5. Personalization → worldbuilder commentary per row |
| 30 | 6. Output → multi-sheet xlsx |
| 31 | ``` |
| 32 | |
| 33 | Skip phases that are already done. If the user hands you a list of profile URLs and just wants enrichment + commentary, jump to Phase 4. |
| 34 | |
| 35 | --- |
| 36 | |
| 37 | ## Phase 0: Scratchpad first |
| 38 | |
| 39 | Before scraping anything, create a scratchpad so you don't lose the thread mid-run. |
| 40 | |
| 41 | ```bash |
| 42 | mkdir -p /home/claude/sourcing-work/<project-slug>/raw |
| 43 | touch /home/claude/sourcing-work/<project-slug>/brief.md |
| 44 | touch /home/claude/sourcing-work/<project-slug>/candidates.jsonl |
| 45 | ``` |
| 46 | |
| 47 | - `brief.md` — the persona, query plan, and audience model. See `references/scratchpad-template.md`. |
| 48 | - `candidates.jsonl` — one JSON line per candidate, appended as you find them. JSONL because you'll be writing as you scrape, and a corruption in one line doesn't kill the whole file. |
| 49 | - `raw/` — raw scrapes by source URL, named like `linkedin-search-1.json`, `reddit-r-netsec-1.md`, etc. |
| 50 | |
| 51 | Why JSONL for candidates: you'll likely process 30–500 people across multiple rounds. Mid-run failures shouldn't lose progress. Append-only is the right shape. |
| 52 | |
| 53 | --- |
| 54 | |
| 55 | ## Phase 1: Intake |
| 56 | |
| 57 | Pin down the brief in `brief.md` before doing anything else. The single most expensive mistake in sourcing is scraping the wrong audience well. |
| 58 | |
| 59 | Required: |
| 60 | - **Persona** — role/title, seniority, function. Be precise: "senior backend engineer with Rust experience" not "good engineer." |
| 61 | - **Signals** — what publicly-visible behavior identifies them? *They contributed to repo X. They posted about Y last quarter. They list Z certification. They lead a meetup on W.* Without signals, you're guessing. |
| 62 | - **N** — how many do they want? 20 ≠ 200 in workflow shape. |
| 63 | - **Purpose** — recruiting? sales? podcast guests? user research? This determines the "outreach angle" column entirely. |
| 64 | - **Geography / language** — global? specific country/city? English-only? |
| 65 | - **Custom fields** — anything beyond defaults the user wants captured. |
| 66 | - **Output preference** — xlsx (default), Google Sheet via Drive (if connected), or CSV. |
| 67 | |
| 68 | If the brief is vague ("find me ML people"), ask 1–2 sharp questions before scraping. Don't ask a wall — ask the ones that actually change the search: |
| 69 | - *"Are you looking to hire them, sell to them, or interview them? It changes who I prioritize."* |
| 70 | - *"Any specific sig |