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
- GitHub: github.com/suvamneog/jobradar
- Releases Β· Issues Β· Hacker News mentions
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