diff --git a/.claude/skills/job-scraper/SKILL.md b/.claude/skills/job-scraper/SKILL.md index 5a44d65..4ae0c14 100644 --- a/.claude/skills/job-scraper/SKILL.md +++ b/.claude/skills/job-scraper/SKILL.md @@ -122,10 +122,34 @@ For each new job, do a rapid fit check (NOT the full evaluation from `04-job-eva } ``` -`/rank` extends this schema additively: ranked entries also carry `rank_score` (0–100 overall score), `rank_verdict` (fit band, e.g. "strong fit"), and `rank_date` (ISO date of ranking). The `status` field is set to `"ranked"`. Do not drop these fields when re-writing entries. +`/rank` extends this schema additively: ranked entries also carry `rank_score` (0–100 overall score), `rank_verdict` (fit band, e.g. "strong fit"), and `rank_date` (ISO date of ranking). The `status` field is set to `"ranked"`. Do not drop any of these fields when re-writing entries. 2. Only present jobs NOT already in the seen list or tracker. +### Step 4.5: Generate Referral Contact Links (High & Medium Fit Only) + +For every job from this run with `fit` of **high** or **medium** (skip low-fit jobs), +build two LinkedIn people-search URLs so the user can find a recruiter or team member to +reach out to for a referral or a warm intro. This is deliberately a link-generation step, +not an automated lookup: no scraping, no third-party API, zero runtime dependencies or +credentials required. + +**A. Recruiters / Talent Acquisition (the referral path)** +``` +https://www.linkedin.com/search/results/people/?keywords= recruiter">&origin=GLOBAL_SEARCH_HEADER +``` + +**B. Role/team peers (informational-outreach / warm-intro path)** +``` +https://www.linkedin.com/search/results/people/?keywords= ">&origin=GLOBAL_SEARCH_HEADER +``` +Use a short keyword drawn from the posting's title for `` - e.g. a posting +titled "AI Program Manager" becomes `" AI Program Manager"`. + +Both links are for the user to open and browse themselves - never fetch or scrape the +LinkedIn people-search result pages programmatically. Never fabricate contacts or claim a +specific person was found; these are search links, not results. + ### Step 5: Present Results Present new jobs in a table sorted by fit (high first): @@ -144,6 +168,12 @@ For each high-match job, add 2-3 bullet points: - Why it matches your profile - Key requirements to check - Any red flags + +### Contacts +For each high/medium-fit job from Step 4.5, add a short contacts block with the two +LinkedIn search links: +- Recruiters/TA search link, for the referral path +- Role/team-peer search link, for the warm-intro / informational-outreach path ``` After presenting, ask: @@ -167,3 +197,4 @@ If the user decides to apply to any job, add a row to `job_search_tracker.csv`. 4. **Only open positions.** Skip postings with expired deadlines or those marked as closed. 5. **Be efficient with detail fetches.** Don't run `detail` or WebFetch on every search hit — pre-filter by title/snippet, then fetch only promising matches. 6. **Parallel searches.** Run portal CLI searches in parallel; use WebSearch only for gaps the CLIs don't cover. +7. **No automated people lookups.** Referral contacts (Step 4.5) are LinkedIn search links only - never fetch or scrape LinkedIn people-search result pages programmatically.