Running weekly · autonomous
Job-scan — a weekly market radar
Once a week, an automated scan reads the director-level job market and tells me honestly how well I'd fit — including when the answer is badly.
- 53 → 10
- first live run: raw listings → candidates
- 24
- tests, CI-gated
- 0
- scraping — official APIs only

I'm not job-hunting. That's exactly why this exists. When you're settled, you stop looking at the market, and your sense of what's out there — what roles exist, what they pay, what they ask for — quietly goes stale. This tool is calibration, not application: once a week, a picture of what the market looked like for someone with my profile, delivered to my phone, with no pressure to act on any of it.
How a scan runs
Three legs, run by a scheduled AI task every Sunday evening with no one watching:
- Gather. Profile-derived queries run against the Adzuna jobs API — two passes, one anchored on commutable distance and one for remote roles. Results are deduplicated on company and title, then a cheap knockout filter drops what can't fit: junior titles, roles below a salary floor, offices outside range that aren't remote or hybrid. Every drop is logged with its reason — nothing disappears silently.
- Score. An AI reads each surviving listing against my actual capability record and writes an honest fit verdict. This is the half that matters, and it is deliberately not keyword matching: the scoring logic is built to under-claim, name the gaps, and say "high screening risk" when that's the truth.
- Deliver. The top few land as a short Telegram digest.
The honesty layer is the product
A job-matching tool that flatters you is worse than no tool. The scoring prompt is the same one I use to evaluate real role fit, and it was validated adversarially before this radar existed: I planted a deliberately tempting, badly-fitting job description and the pipeline's job was to say no. It said no. On this tool's first unsupervised run, it flagged a batch of plausible-looking operations roles as high screening risk rather than inflating them into matches — which is the behaviour that makes the digest worth reading.
What live data taught it
The test fixtures passed everything; the first real run against live listings surfaced two bugs the fixtures couldn't have: a role with "(Remote)" in its title was wrongly dropped as outside-commute, and a listing whose salary field held an un-annualised hourly rate — £41 — was wrongly dropped as below the floor. Both became regression tests. Synthetic data proves the logic; only real data proves the tool.
Boundaries
Discovery is API-only — no scraping. The gathered listings and scored verdicts name real employers, so the outputs stay local and out of every search index. And the listing text itself is treated as untrusted input: a job description can't inject instructions into the verdict that scores it.