Myles MellorAI-first commercial & operations leader
← Work

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
TypeScript · Adzuna API · Claude scheduled task · Telegram
Terminal output of the job-scan gather funnel on synthetic fixture data: 11 raw listings deduplicated to 9, 5 kept as candidates, 4 dropped with the knockout reason stated for each
The gather funnel on synthetic fixture roles — every dropped listing states its reason

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:

  1. 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.
  2. 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.
  3. 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.