An agent that searched for my next job, and found it
A local job-search CRM with agents at every step, from reading the market each morning to drafting recruiter replies. It proposes; I decide.
Features
| Profile and goals | I write down what a good job is: criteria with weights, deal-breakers, pay. Everything else scores against it. |
| Morning scan | A scheduled agent run reads job boards, LinkedIn and recruiter mail, and skips what the CRM already tracks. |
| Decision report | One page of decisions to tick. Nothing is applied, archived or sent until I tick it. |
| CRM dashboard | A local board of every job, its stage and the follow-ups due. |
| Fit score | Paste a job description, get a scored entry against my goals, with the open questions to ask. |
| Recruiter replies | Replies and pay negotiation drafted from my own notes, shown to me before anything goes out. |
| Skill drills and CV | Interview prep that comes back to the questions I answered badly, and a CV built and checked against the target role. |
Architecture
Unattended, every morning
- Scheduler Windows Task Scheduler, 07:03
- Headless Claude Code runs the morning-scan skill
- Sources board APIs, keyword feeds, a Playwright browser for LinkedIn and mail
- Report check a hook refuses to finish without today's report
On my machine
- Claude Code plugin skills: add job, status, recall, CV review, LinkedIn sync
- job-crm CLI validates every entry against the profile
- Store one JSON file per job, in git
- Web board React + Vite, scoring and pipeline
Metrics
| Measure | Result |
|---|---|
| In use since | April 2026 |
| Postings checked per morning | About 1,630 (median of full runs; the same posting is re-checked each day it is listed) |
| Postings seen for the first time, per morning | About 76 (median) |
| Total postings checked since 24 August | 70,832 across 29 runs, repeats included |
| Unique postings since 24 August | 2,568 |
| Jobs tracked in the CRM | 160 |
| Applications | 63 |
| Application to written offer | 25 days (offer 25 August, accepted the next day) |
Postings checked Seen for the first time
24 Aug peak 2,139 27 Sep
Tracked
160
Passed on I said no after the fit score
83
Applied including the later rejections
63
Future steps
- Public release of the engine, then one feature per release after it.
- Morning scan, scheduled on Mac and Windows.
- Application forms on the common hiring systems, filled from an answer bank, always stopping before submit.
- Recruiter replies and pay negotiation.
- Better UX for profile config.
- Updates in place: the tool and its plugin update together.