Hiring has quietly become a numbers game. UK employers report an average of 140 applications per graduate vacancy, the highest since records began in 1991, and 290 in the busiest sectors. In the UK test run described below, employers regularly mentioned 300 or more applicants per role. CVs are read first by software, and most rejections arrive as silence.
Candidates have answered with bots. You have probably seen the stories: "I applied to 1,000 jobs while I slept." Read the details and the numbers are grim. One engineer sent about 5,000 automated applications and got around 20 interviews. Another sent 2,800 over three months and got four interviews and one offer. Recruiters call it spam, and they are not entirely wrong.
Watching friends and colleagues go through this, I wanted to test a different idea: keep the volume, drop the spam. So I built JobAgent as an experiment. It is free and open source, so anyone can use it.
Inspired by Santiago Fernández and career-ops
JobAgent was inspired by Santiago Fernández (@santifer) and his open-source career-ops: an AI system that evaluated 740 job offers, sent 68 applications and landed him 12 interview processes and a signed offer. It is brilliant work and well worth a look. It runs in a terminal with Claude Code, Node.js and Playwright, however, and I wanted something anyone could set up without one.
I built mine in Claude Cowork, the Claude desktop app, by describing what I wanted in plain English and checking the results. That is also how you use it. You say "run the job pipeline" or "apply to roles 12 and 15", and Claude does the technical work.
What it actually does
The bots play the numbers game on the sending side. JobAgent plays it on the reading side.
- It searches the job boards you choose, at a gentle pace, and drops anything below your salary floor, outside your locations or too old.
- It reads every remaining advert in full. Nothing is judged on its title.
- It scores each role against your career record, requirement by requirement.
- For roles that fit, it writes a tailored CV, and a cover letter where one helps.
- A separate check confirms that every claim and number in the CV is in your own profile. It never invents experience.
- Nothing is sent without your approval.
The machine does the part that burns people out: reading thousands of adverts and rewriting the CV every time. You keep the part that matters: deciding where to apply.
Under the hood
JobAgent is a folder of skills: plain Markdown instructions (SKILL.md) that Claude follows, plus small Python helpers.
| Stage | Skill | What happens |
|---|---|---|
| Collect | job-ingest |
Claude in Chrome opens each search; a small extractor reads the job cards; hard filters drop salary, location and freshness misses |
| Read | job-ingest |
The full advert is stored for every kept role; nothing is scored from a title |
| Score | job-match-score |
Each advert is mapped requirement by requirement to the master profile, scored 0 to 100 |
| CV | cv-tailor |
A tailored UK CV, readable by applicant tracking systems, via the bundled uk-cv-writer skill |
| Letter | cover-letter |
Written only where it changes the outcome |
| Verify | cv-verify |
An independent check that every number and claim exists in the profile |
| Apply | job-apply |
Only approved roles; account walls go to a hand-off sheet |
-
State lives in SQLite. One local
jobs.dbtracks every role fromfoundtoapplied, with a guard that refuses to reject a role nobody has read. -
Configuration is Markdown. Markets, salary floors, places and search terms are YAML blocks inside
.mdfiles, so anyone can change behaviour without touching code. -
Grounding beats creativity.
check_grounding.pyflags any number or word in a CV that is not in the master profile. - Humans approve. Nothing is submitted without a yes, and the tool never creates accounts, types passwords or solves CAPTCHAs.
The experiment: a 13-week UK test run, one scan every two weeks
- 10,483 roles passed the filters
- 8,585 adverts read in full and scored
- 779 scored as a fit (284 strong, 495 borderline)
- 481 tailored CVs and 348 cover letters
- 258 applications, about 40 per fortnightly scan, each one approved by hand
- 8 interviews and 3 offers
That is roughly one interview for every 32 applications. The bots in those viral stories managed one in 250, or worse. The difference is not cleverness. It is reading before applying.
Four people tested JobAgent on their own searches: one in the UK and three in other EU countries. The figures above are from the UK test run only; the other three saw similar results, and their numbers are not in the charts. The share of applications that led to at least a screening call ranged from 0.5% to 12%, depending on the person and the market.
What I learned
- Read first, then judge. An early keyword filter quietly rejected roles that later scored well when read in full. Titles lie.
- Tailoring beats volume. A CV written for the advert gets past the screening software and the human.
- Honesty is a feature. The tool refuses to claim anything you have not done. That protects you in the interview.
- Your time is better spent on interviews than on forms.
Try it
- Repository: github.com/EnchStyle/JobAgent (MIT licence)
- Needs: a Claude subscription with Cowork, and the Claude in Chrome extension
- Setup: open the folder in Cowork and say "Read AGENTS.md and help me set up JobAgent". Most of the two hours goes on writing down a career history once.
- A 5-minute dry run with a fictional candidate shows every stage before you touch real data.
EnchStyle
/
JobAgent
A JobAgent that helps you to land a dream job with a simple Claude subscription and no need to write the code.
JobAgent
No coding needed. JobAgent runs inside Claude Cowork, in the Claude desktop app. You talk to Claude in plain English ("set me up", "run the job pipeline", "apply to roles 12 and 15") and it does the technical work, including the setup. You never write or run code yourself and never open a terminal; all you need is a Claude subscription and the Claude in Chrome extension.
A semi-autonomous job-application pipeline run by an AI assistant in Claude Cowork. On request it collects fresh vacancies from job boards, applies hard filters (salary, location, freshness) reads every advert in full, scores each role against your master profile, writes a tailored CV (and a cover letter where one helps), checks every document independently, and records everything in a local SQLite database. It never submits an application on its own: finished applications wait for you, and applying happens only when you ask…
It is a small experiment with four testers, not a guarantee. If it helps you, star the repository or pass it to someone who is job hunting; that is how others find it. Issues and pull requests are welcome, especially new job-board extractors.




Top comments (0)