jobradar README

The project's README from github.com/suvamneog/jobradar. As one markdown file: README.md.

Job Radar

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

grid

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

email

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).

git clone https://github.com/suvamneog/jobradar.git
cd jobradar
./install.sh

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:

3. Check it works

./run.sh test          # sends a test email
./run.sh scan          # fetch, diff, score
./run-web.sh           # http://localhost:8765

Configuration

companies:
  - { name: 'Adobe', board: workday, slug: 'adobe/wd5/external_experienced' }

alerts:
  companies: [Adobe, Oracle, Atlassian]   # checked daily
  min_score: 6

llm:
  provider: xkiro
  model: mistralai/mistral-large-2512
  daily_token_limit: 1000000

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

./run.sh scan          # fetch, diff, score
./run.sh alert         # check the shortlist, alert if anything opened
./run.sh digest        # send the weekly email
./run.sh recap         # re-apply the scoring rules, no tokens
./run.sh list          # the week's finds in the terminal
./run-web.sh           # web UI

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

for t in tests/test_*.py; do ./.venv/bin/python "$t"; done

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 killed a 3,000-job run.

See OVERVIEW.md for architecture and design notes.

Notes

Built by @suvamneog. The grid UI took small inspiration from this post.

Scores are a sort order, not a verdict — a 4/10 is still worth a glance.

MIT

jobradar (suvamneog/jobradar)

Searching Database…

What is this?Job Radar watches company job boards, scores every opening against your resume with an LLM, and emails you a shortlist worth applying to; it currently tracks 56 companies across seven ATS platforms (Greenhouse, Lever, Ashby, Workable, Workday, Oracle Recruiting Cloud).
Is this an app I open, or something that just runs in the background?It is a Python automation tool with no GUI app: install.sh registers two launchd jobs on your Mac that fire daily alerts and a weekly digest, and a local web UI lets you browse and filter the results it collects.
How do I get it running?Put a resume PDF in the project folder and point resumepath at it in config.yaml, copy run.example.sh to run.sh and fill in your LLM key and Gmail App Password, then run install.sh to register the scheduled jobs.
Do I need an OpenAI API key specifically?No, any OpenAI-compatible endpoint works; the default setup uses xkiro with Mistral Large 3, which has a free tier. You also need a Gmail App Password, which requires 2FA enabled on the account, for sending the alert emails.
Does it work on Windows or Linux too?No, it needs a Mac, since the daily and weekly schedules rely on launchd.
Why does seniority get capped instead of just trusting the LLM score?A Senior/Staff/Principal title is hard-capped at 3/10 in code rather than the prompt, because without it senior roles filled 31 of the top 100 slots and the first junior role sat at number 67, burying jobs a new graduate could actually get.
How many tokens does scoring jobs actually cost?Jobs are scored 25 per request with compact replies; a full scan of 3,400 jobs costs about 340K tokens, and after that only new postings need scoring, which is a few thousand tokens a week.
What happens if I hit my LLM free-tier limit mid-scan?The token budget is checked before every request; a run that hits the ceiling simply stops and resumes next time, so it cannot lock you out of your key.
How do I add a new company to track?Find the company careers URL to get its board type and slug (for example boards.greenhouse.io/figma means board greenhouse, slug figma) and add it to the config; Greenhouse, Lever, Ashby, Workable, Workday and Oracle Recruiting Cloud are all supported.
Creator
suvamneog
Size
0.5 MB
Stars
191
Updated
CommitSep 30
Age
23d
Commits · 90 Days