Skip to content
Aidan Alsaadoun

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