πŸ“ˆ GH Trending Explorer 🎲 Surprise me

← all repos

suvamneog / jobradar

git clone https://github.com/suvamneog/jobradar.git

Watches company job boards, scores openings against your resume, and emails you when something worth applying to shows up.

β€”
stars, 24h
β€”
stars, 7 days
+193
stars, 30 days Β· #1,320
193
β˜… total
26
forks Β· 4 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguagePython
LicenseMIT
Created2026-09-24 (26d ago)
Last push20d ago
Watchers1
OwnerUser

GitHub topics

Links

README excerpt
# Job Radar
Watches company job boards, scores every opening against your resume, and
emails you when something worth applying to shows up.
It tracks 56 companies across seven ATS platforms β€” Greenhouse, Lever, Ashby,
Workable, Workday, Oracle Recruiting Cloud β€” which is what it takes to cover
both startups and large enterprises on one list.
## What it does
- **Finds new openings.** Every job gets a stable id, so "new" means new.
- **Notices when jobs close.** A posting that disappears is marked dead and hidden.
- **Ranks against your resume.** 0–10 with a reason, from an LLM that reads the
 job description.
- **Daily alerts** for a shortlist of companies β€” email plus a desktop notification.
- **Weekly digest** every Monday, ranked.
- **A local web UI** to search and filter everything.
## Why it isn't just keyword matching
Two rules run in code, not in the prompt, because a model asked nicely will
comply inconsistently:
**Seniority.** A Senior/Staff/Principal title caps at 3/10 however well the
skills match. Without this, senior roles held 31 of the top 100 slots and the
first junior role sat at position #67 β€” the jobs a new graduate could actually
get were buried under the ones they could not.
**Relevance.** A role weak on both skills and domain caps at 3/10. Otherwise a
branch-office internship scores 8/10 for a developer purely because it is an
internship.
Both are arithmetic on data already stored, so `recap` re-applies them for free.
## Setup
Needs Python 3.11+ and a Mac (the schedules use launchd).
 [code] 
Then three things:
**1. Your resume** β€” put a PDF in the folder, point `resume_path` at it in
`config.yaml`.
**2. Your keys** β€” `cp run.example.sh run.sh`, then fill in:
- An LLM key. Any OpenAI-compatible endpoint works; the default is
 xkiro with Mistral Large 3, which has a free tier.
- A Gmail App Password for sending
 mail. Needs 2FA on the account first.
**3. Check it works**
 [code] 
## Configuration
 [code] 
Find a company's board and slug in its careers URL:
| URL | board | slug |
|---|---|---|
| `boards.greenhouse.io/figma` | greenhouse | `figma` |
| `jobs.ashbyhq.com/ramp` | ashby | `ramp` |
| `jobs.lever.co/spotify` | lever | `spotify` |
| `adobe.wd5.myworkdayjobs.com/external_experienced` | workday | `adobe/wd5/external_experienced` |
## Commands
 [code] 
`install.sh` registers two launchd jobs: daily alerts at 09:30, weekly digest
Mondays at 09:00.
## Token budget
Free tiers have a daily cap, so the budget is checked before every request and
recorded per batch. A run that hits the ceiling stops and resumes next time β€”
it can't lock you out of your key.
Jobs are scored 25 per request with compact positional replies. A full 3,400-job
scan costs about 340K tokens. After that only new postings are scored, which is
a few thousand a week.
## Tests
 [code] 
Ten suites. Most exist because something broke in use β€” a threading crash in
the live scan, an alert that would have fired 142 notifications at once, a
malformed reply that kil