mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
feat(job-scraper): referral-contact LinkedIn search links for high/medium-fit jobs (#149)
* added contact skill * refactor(job-scraper): fold referral-contacts into Step 4.5, drop contacts cache
This commit is contained in:
@@ -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.
|
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=<url-encoded "<Company Name> recruiter">&origin=GLOBAL_SEARCH_HEADER
|
||||||
|
```
|
||||||
|
|
||||||
|
**B. Role/team peers (informational-outreach / warm-intro path)**
|
||||||
|
```
|
||||||
|
https://www.linkedin.com/search/results/people/?keywords=<url-encoded "<Company Name> <role keyword>">&origin=GLOBAL_SEARCH_HEADER
|
||||||
|
```
|
||||||
|
Use a short keyword drawn from the posting's title for `<role keyword>` - e.g. a posting
|
||||||
|
titled "AI Program Manager" becomes `"<Company Name> 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
|
### Step 5: Present Results
|
||||||
|
|
||||||
Present new jobs in a table sorted by fit (high first):
|
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
|
- Why it matches your profile
|
||||||
- Key requirements to check
|
- Key requirements to check
|
||||||
- Any red flags
|
- 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:
|
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.
|
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.
|
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.
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user