← all projects
Shipped · Car Thing + a Python server · playable on the weblive

Job Thing

a Spotify Car Thing, jailbroken into a job board for QA roles

  • Embedded Linux
  • Hardware Testing
  • Performance Profiling
  • E2E Automation
  • API Testing
  • CI/CD
  • Ranking & Classification
  • AI Guardrails

What it involved

Embedded Linux
A jailbroken Spotify Car Thing runs Chromium 69 in kiosk mode on its 800×480 panel.
Hardware Testing
The kiosk UI is tested the way it's used: at 800×480, driven by the dial and five buttons.
Performance Profiling
Profiled on the device over Chrome DevTools: one dial detent went from 272 ms to 6 ms.
E2E Automation
59 Playwright tests across the HTTP contract, the kiosk UI and the web demo, with a video of each.
API Testing
Greenhouse, Lever, Ashby and SmartRecruiters APIs are fetched hourly, and the server's HTTP contract has its own suite.
CI/CD
184 tests run on every push in GitHub Actions, producing a report with traces, videos and coverage.
Ranking & Classification
QA roles are told apart by include and exclude rules, then scored 0–100 by named, explainable rules.
AI Guardrails
Apply with Claude checks the tailored resume against the master resume in code, and stops before Submit.

About

A discontinued Spotify Car Thing, jailbroken and turned into a desk device that does one thing: triage SDET and QA job postings. A Python server with no third-party packages pulls every open posting from about 90 company job boards each hour, keeps only real software quality roles, ranks them against my resume, and serves them to the Car Thing's 2018-era Chromium. Turn the dial through the cards, press to read, press again to save. The same kiosk UI runs unchanged in a web emulator on a daily snapshot of real postings, so anyone can try it, and every push runs the whole stack through Python and Playwright suites that record a video of every browser test.

  • Python
  • SQLite
  • JavaScript
  • Playwright
  • GitHub Actions
  • Chromium DevTools
  • Embedded Linux
  • Vercel

How it's tested 8 checks

  • a jailbroken Car Thing runs the job board from its dial and five buttons

    Chromium 69 in kiosk mode on an 800x480 panel, talking to the server over USB ethernet. Every screen works with turn, press, hold and back, and the device itself never touches the internet.

  • a dial detent renders in 6 ms, down from 272 ms

    Profiled on the device over the Chrome DevTools Protocol: every detent was rebuilding every card. The rail now rebuilds only when the list changes, and a UI test asserts the cards survive a detent so the regression cannot come back quietly.

  • about 90 company job boards are fetched hourly, with no third-party packages

    Greenhouse, Lever, Ashby and SmartRecruiters public APIs plus two aggregators, in parallel, pruning postings only after a fetch succeeds. The server is Python's standard library and SQLite.

  • QA roles are told apart from manufacturing and food-safety quality

    Titles are matched with include and exclude patterns, because the obvious keywords mislead. Every pattern change starts with a test built from a real posting that fooled an earlier version.

  • every card can say why it ranks where it does

    A 0 to 100 score from named rules: title fit, resume skills, seniority, location and freshness. No model output to explain away.

  • 184 tests run on every push, with a video of every browser test

    125 Python unit tests and 59 Playwright tests across three projects: the HTTP contract, the kiosk UI driven like hardware at 800x480, and the web demo. Every run produces a report with results, traces, videos and both Python and JavaScript coverage.

  • the web demo runs the unchanged kiosk UI on a daily snapshot

    A shim answers the kiosk's API calls from a snapshot rebuilt every morning, and each visitor's presets and saved jobs stay in their own browser. Saved jobs export as a printable checklist.

  • Apply with Claude prepares an application and stops before Submit

    The tailored resume is checked in code against the master resume, so no employer, date, number or tool can be invented. The form is filled in Chrome and left for me to review; it never signs in or answers self-identification questions.