ukdevjobs-cli
Search, filter, track and apply to UK developer jobs with salary data, from the terminal.
Source on GitHubPythonStars: 1last push 12 hours ago
- Python
- SQLite
- JSON-RPC / MCP
- GitHub Actions
- Docusaurus
What it is
One search fans out to five job boards in parallel, normalises every listing into an annual GBP salary range, collapses duplicates across boards, and remembers what you have seen and applied to in a local SQLite database. The same search path is exposed as a CLI and as an MCP server.
Why it's interesting
A small tool with real integration problems: five APIs with five auth schemes and inconsistent schemas, free-text salary parsing, concurrency that must not let one failing board sink a search, and a wire protocol implemented from the spec.
What I built
- Layered architecture: board adapters are pure translators with no I/O, so each one is an ~80-line module tested against a recorded fixture. Caching, retries, parallelism and credential masking are implemented once, in the aggregator.
- Salary normalisation that parses free text, detects the period (day rate, hourly, monthly, annual) and annualises to GBP, flagging model estimates so they can be excluded.
- Error isolation: one thread per board. A timeout, 5xx or schema change becomes a warning on stderr, and the command only exits non-zero when every board fails.
- SQLite schema for a response cache with TTL, job snapshots with first-seen tracking, an application state machine (applied → interviewing → offer, rejected or withdrawn), saved searches and a hide list.
- A JSON-RPC 2.0 / Model Context Protocol server over stdio, written from the spec with the standard library: 13 tools and a two-step confirmation gate on anything that records an application.
- 73 offline tests that run in under a second, CI across five Python versions and three operating systems, plus a live protocol handshake job. Roughly 3,100 lines of application code and 900 of tests.
In use
From the README
$ ukdevjobs search python --location London --salary-min 70k --remote
ID TITLE COMPANY LOCATION SALARY (£/yr) POSTED
----------------------------------------------------------------------------------------------
reed:9001 Senior Python Developer Fintech Labs London £78k-£92k 2026-08-21 +
adzuna:5002 DevOps Engineer CloudWorks Manchester ~£60k (est.) 2026-08-22
remotive:3001 Staff Software Engineer Orbit Analytics UK, Ireland £90k-£110k 2026-08-21
3 job(s), + = first time seen, * = applied.
Engineering concepts
- API integration
- Data normalisation
- Concurrency & error isolation
- Schema design & state machines
- Protocol implementation
- CLI exit-code contracts
- Offline-first testing