Job Search
with Leverage.
Five Claude Code skills and a Python engine. One concrete top pick a day, not a wall of options. ATS scrapers, LinkedIn alert ingest, warm-line orchestration, and an end-to-end apply pipeline. Your data on your machine.
Scan
Greenhouse, Lever, Ashby APIs. LinkedIn job-alert emails. Firecrawl broad-web.
Classify
Title regex against your lanes. Blocklist. Comp floor. Description signals.
Warm-line
1st-degree LinkedIn signal. Recruiter Gmail history. ATS dedup risk.
Pick
Lane fit + warm-line + history. One top pick. Three backups. No wall.
Submit
WebFetch the JD. Tailor. Render. Browser-MCP through the ATS form.
Try the scorer right now.
Type or pick a role. The same scoring logic that runs locally. Title-first classification, lane regex, green and red description flags. Watch the score recompute in real time.
Everything you'd do, automated.
Each skill is one markdown file in ~/.claude/commands/. Claude Code picks them up automatically and routes your input.
Scrapes target companies via Greenhouse, Lever, Ashby APIs. Scores against your lane regex. Outputs one top pick plus three backups. No wall of postings.
Ingests LinkedIn job-alert emails from Gmail. Parses subject-line cards into your DB. Auto-captures warm-line connections as candidate contacts.
Paid variant using Firecrawl search across the live web. Same scoring brain as the free pipeline. Around 10 to 15 credits per run.
Tier 1 through 4 connection ranking. Ready-to-paste outreach drafts in your voice. Halts cold-applies when ATS dedup risk exists at the company.
JD URL to confirmation in around 35 tool calls. WebFetch JD, tailor resume and cover, render to PDF, browser-MCP submit through Greenhouse, Lever, Ashby.
One engine. One config.
One SQLite file.
Skills orchestrate. Engine scores. SQLite persists. Your ~/.job-radar/profile.yml is the single source of truth. Edit one file and every skill respects the change.
One screen. One pick. No wall.
Real output from /job-radar, the LinkedIn ingest, and a warm-line check. No methodology preamble, no postings dump, just the pick and the next action.
Generic skeleton. Your moat is the tuning.
Three starter profiles ship in examples/. Copy the closest one, edit identity and targets, then keep adding lane signals as you learn what surfaces as unfit that shouldn't be.
The same search, with leverage.
| Default flow | Job Radar flow | |
|---|---|---|
| Discovery | Open LinkedIn, scroll, refresh | Five sources auto-scanned daily |
| Filtering | Eye-balling titles | Title regex + blocklist + comp floor |
| Ranking | Most recent first | Lane fit + warm-line + history-aware |
| Warm-line | Forgotten until after applying | Mandatory pre-apply check + draft DMs |
| Submission | Manual paste, around 80 tool calls | Around 35 calls, browser-automated |
| Persistence | Tabs and screenshots | SQLite, your data, your machine |
| Tuning | Re-explain preferences every time | One YAML file, every skill respects it |
| LinkedIn Premium | $30/mo, results buried in UI | Free, ingests the same alerts via Gmail |
Four commands to running.
Skills land in ~/.claude/commands/. Engine in ~/.job-radar/engine/. Profile at ~/.job-radar/profile.yml. Idempotent.
Local-first. By design.
Job search data is sensitive. Compensation, contacts, application history, draft outreach. Job Radar treats it like the user's, not the platform's.
Your data, your disk
One SQLite file at ~/.job-radar/radar.db. No vendor account. No telemetry. Backup is one cp command.
No analytics, no tracking
Static GitHub Pages site, no scripts. The tool ships with zero outbound calls beyond the public ATS endpoints you opt into.
MIT licensed
Fork it. Modify it. Ship it inside a company. No license fee. No telemetry. No vendor lock.
Idempotent install
Re-running install.sh upgrades in place without touching your profile. Uninstall removes everything but backs up your config.
Questions before you install.
Do I need Claude Code or will Claude.ai work?
~/.claude/commands/. On Claude.ai web or desktop, you run the engine yourself (python3 ~/.job-radar/engine/discover.py) and paste the briefing into a Claude.ai project. The browser-automation parts of /apply only work in Claude Code because they need MCP tools.How is this different from LinkedIn Premium?
Does this work for non-RevOps roles?
profile.yml is that the lane is a config value, not a hardcoded assumption. Edit the lanes block with the title regex patterns matching your role family. PM, Marketing, Engineering, Customer Success all work the same way.What about visa sponsorship (TN, H-1B, O-1)?
profile.visa.enabled: true, build the LCA database once from the DOL CSV, and the briefing labels companies as STRONG, LIKELY, or UNVERIFIED sponsors.Will this scrape sites that ban scraping?
What does it cost to run?
How do I uninstall cleanly?
bash install.sh --uninstall removes ~/.job-radar/ and the five skills from ~/.claude/commands/. Your profile.yml is backed up to ~/job-radar-profile.backup.yml in case you reinstall later.Can I run multiple profiles?
~/.job-radar/profile.yml, or by setting JOB_RADAR_PROFILE=/path/to/profile.yml as an environment variable. Multi-profile support is on the roadmap.What's shipped. What's next.
PRs welcome. The codebase is small and intentionally readable. Around 1,500 lines of Python plus five markdown skill files.
Foundation
- 5 Claude Code skills
- Greenhouse, Lever, Ashby adapters
- Config-driven scorer
- LinkedIn alert ingest
- SQLite local DB
- Idempotent installer
Polish
- Workable adapter
- SmartRecruiters adapter
- Multi-profile switching
- Better starter profiles (PM, Marketing, Eng)
- HTML dashboard view
Intelligence
- Claude-driven JD-keyword extractor
- Auto-tune lane regex from outcomes
- Optional Supabase sync
- Workday adapter (per-tenant config)
- Mobile briefing PWA
Run the loop tonight.
One install command. Pick a starter profile. By tomorrow morning, your terminal has one concrete pick instead of fifty open tabs.