Most job hunts are a numbers game played badly. You skim a portal, paste the same CV at fifty roles, lose track of which ones, double-apply at two of them, and hear nothing back. The spreadsheet you keep forgetting to update is not a system. It is a guilt file.
On a live workshop this week I built the alternative from scratch, in front of a room, in one sitting. Two files. An evaluator that scores every posting. A tracker that never forgets. By the end it was reading real job ads and telling me which ones were worth my week. Here is what happened.
The shift: stop writing cover letters, start hiring a recruiter
The first move is a mental one. Stop thinking of AI as the thing that writes your cover letter. Start thinking of it as a recruiter you hired.
The first week that recruiter is useless, because they do not know you. You feed them. Your CV, your story, the roles you want, the roles you would never take, the things that make a job a non-starter for you. Within a week they read a hundred postings for you, rank the five worth your week, flag the ghost jobs, and never forget a single one.
You do not need a better spreadsheet. You need a filter that judges, and a memory that never forgets.
Two files do almost all the work
The whole system rests on two files.
The first is cv.md. This is the single source of truth for who you are. Your roles, your proof points, your real metrics. The rule is strict: every score, every gap, every verdict reads this file. You never hardcode a fact from it anywhere else.
The second is CLAUDE.md. This is how you decide. It holds your scoring rubric, your dealbreakers, and the one guardrail that matters: the AI never auto-submits anything. It evaluates and recommends. You decide and act.
If you have been following the series, you will recognise this. It is the W6 judgment system and the W7 CLAUDE.md file, pointed at the job hunt. The same two-discipline pattern that made your code reviews permanent, now reading job postings.
The build
I opened Claude Code in an empty folder and pasted one prompt: build a job-hunt command center, version zero, a filter that tells me which postings are worth my time and a memory that never forgets. Read cv.md first. Build CLAUDE.md with the rubric and the dealbreakers and the never-auto-submit guardrail. Build an evaluator that returns five scores and one call: APPLY, SKIP, or TAILOR. Build a tracker. Write a test first.
It planned, then it built. CLAUDE.md. The evaluator. The tracker. A test that guards the contract, not a calibration test, just checking the shape of what comes back and that a dealbreaker forces SKIP. The test went red, then green. The system existed.
Running it on real postings
Then came the part no script can fake. I asked the room which portal to demo. They picked one, I am not a fan of it personally, but it was the one the room chose, so we used it. I searched Python developer roles in Bangalore, grabbed a handful of real postings, and dropped them into a file for the evaluator to read.
What came back was exactly what a filter is supposed to do. It noticed on its own that the batch was Bangalore-based and flagged the lot as a high-level skip on location. It still scored them. And one posting it read differently, scoring it a very good match, and it went ahead and produced a tailored CV variant off the master CV, ready to work from.
It already figured out these are from Bangalore, high-level skip. But this one it thought was a very good match, and it created a tailored variant off my original CV.
That is the moment. The filter and the tailor are the same system. It tells you what to skip, and for the one worth your time, it hands you a CV shaped to that specific role, built from your real source of truth, not a generic resume.
Why this is different from asking a chatbot about jobs
You can paste a job ad into any chat window and ask if it is a fit. People do this every day. The problem is that the chat window forgets you the moment you close it. Tomorrow you paste the next ad, and you are explaining yourself again, from zero, with no memory of what you already considered or rejected.
The two files fix that. Your identity lives in cv.md, permanently. Your judgment lives in CLAUDE.md, permanently. Every evaluation reads both, fresh. You stop re-explaining yourself to a tool with no memory, and start running a system that carries you forward.
What to do tonight
Open Claude Code in an empty folder. Create cv.md with your real experience, the real metrics, the roles you want and the ones you are leaving. Create CLAUDE.md with your scoring rubric, your dealbreakers, and the guardrail. Paste a real posting. Ask it to evaluate.
Watch it score. Watch it flag the dealbreakers. Watch it tell you APPLY, SKIP, or TAILOR. That is how tonight becomes real. Not by reading another posting. By filtering.