Skip to content

v0.5.0 β€” jobs.ch & jobup.ch: every Swiss industry

Choose a tag to compare

@Stupidoodle Stupidoodle released this 25 Aug 11:15
· 39 commits to main since this release

v0.5.0 β€” jobs.ch & jobup.ch: every Swiss industry, one search away

Two new boards, one new platform, still zero runtime dependencies.

New: the JobCloud platform πŸ‡¨πŸ‡­

jobs.ch and jobup.ch β€”
Switzerland's two biggest job boards, every industry, ~50,000 postings β€”
now sit next to the six devitjobs tech boards. Eight boards, seven countries,
one tool.

They work differently, and the tool is honest about it:

  • Search-driven. The inventory can't be mirrored (the API caps at 20
    rows/page and 2,000 results per query), so your query runs server-side,
    newest first: sdj list "pflegefachfrau" --country jobsch. Without a query
    you get the newest postings only.
  • --category it keeps the all-industry boards in tech β€” mapped to each
    board's own taxonomy (jobs.ch and jobup.ch run different id trees).
  • No salary data exists on this platform; rows render β€” instead of
    pretending.
  • No native apply. Every posting routes to the company's own ATS, so
    direct-apply and apply_to_job answer no_native_apply with the real
    apply URL β€” nothing gets silently black-holed.

Board selectors

A country now holds more than one board, so selectors grew up β€” everything
old keeps working:

sdj list --country ch            # ALL Swiss boards: swissdevjobs + jobs.ch + jobup.ch
sdj list --country jobsch        # exactly one board
sdj config --countries ch,de     # persist any mix of codes and board ids

MCP search_jobs mirrors this (country accepts codes and board ids, plus
the new category param), and rows now carry a source field naming their
board.

For board authors

The whole contract for adding a board now lives in
docs/adding-a-board.md:
BoardPort + an anti-corruption layer, registry entry, done. Board requests:
#5.

Also

  • strip_html now unescapes HTML entities (jobs.ch templates carry literal &)
  • Cached details rehydrate through their own board's ACL (was hardwired to devitjobs)
  • 210 offline tests, 92% branch coverage, CI on Python 3.9 + 3.14

Full Changelog: v0.4.1...v0.5.0