~projects

stetho.me/projects  ·  steve@stetho.me

Everything I've built, in progress, or abandoned halfway through.
Some of it is live, some of it is one weekend of enthusiasm that ran out. Filter by stack below.

tier-zero-grimoire done

Turns support tickets and a knowledge base into training data for a Tier 0 LLM support chatbot. Built for real use at DeepMind first.

python
github.com/stetho/tier-zero-grimoire →
content-coding done

An engineering pipeline that runs academic qualitative content analysis at scale, on Hansard, Parliament data, and AI incident reports.

python
github.com/stetho/content-coding →
crime-stats-uk done

Criminological analysis of street-level crime data for any UK postcode, using data.police.uk, postcodes.io and deprivation scores. Ties the OU Criminology degree directly to the technical work.

pythonjupyter
github.com/stetho/crime-stats-uk →
beautiful-dead-ends active

A research journal in Jupyter notebooks, working through famous maths problems (Collatz, Hadwiger, Goldbach, Waring and others) not to solve them, but to understand exactly why each one resists proof. One of the favourites.

pythonjupyter
github.com/stetho/beautiful-dead-ends →
spiel-check done

Benchmarks the self-play noughts-and-crosses agent against DeepMind's own OpenSpiel MCTS bot. 199 draws out of 200 games, and about 1,600x faster per move. A ten-years-later answer to a DeepMind technical test.

pythonjupyter
github.com/stetho/spiel-check →
what-i-learned-about-ai active

Writing down what got absorbed by osmosis over 13 years at DeepMind, before it stays tacit knowledge. Notebooks so far: LSTMs, SGD, Transformers, Attention, GANs, RLHF, Actor-Critic, Markov Processes, MCMC, KNN, Bagging/Random Forests, Tokenisation.

pythonjupyter
github.com/stetho/what-i-learned-about-ai →
ISO 27001 Control Evidence Collector done

Gathers Linux system evidence against six Annex A controls and chains it into a tamper-evident ledger, so an auditor gets cryptographic proof nothing was touched after collection.

python
github.com/stetho/iso27001-cec →
ledgerdemain done

A hash-chaining and Merkle tree library, the tamper-evident core the ISO 27001 tool runs on. Deliberately excludes the consensus and mining machinery nobody needs.

python
github.com/stetho/ledgerdemain →
gedcom-toolkit parked

A packaged Python tool for analysing GEDCOM family tree files as directed graphs. Stats, validation, relationship-finding, source-checking. Parked deliberately: no roadmap, it grows only when family tree research hits a wall it can solve.

python
github.com/stetho/gedcom-toolkit →
tfl-delay-collector active

Collecting TfL delay data since June 2026, over a million records now. The dataset's big enough to start building predictive models on top of the three analysis notebooks already done.

pythondocker
github.com/stetho/tfl-delay-collector →
hubspot-airtable-sync done

Two-way sync between HubSpot Deals and Airtable that doesn't fall into the sync-loop trap. Content-hash state store, conflict resolution, full test suite.

python
github.com/stetho/hubspot-airtable-sync →
mlops-homelab done

A bare-metal, multi-architecture Kubernetes cluster for keeping MLOps skills sharp without a cloud bill. K3s, MinIO, MLflow, GPU training.

pythondocker
github.com/stetho/mlops-homelab →
self-play-noughts-and-crosses done

A noughts-and-crosses AI trained with TD-learning from scratch, no libraries. Published as a LinkedIn article. See spiel-check for how it holds up against DeepMind's own OpenSpiel.

python
github.com/stetho/self-play-noughts-and-crosses →
CIN/CLA pathways notebook done

DfE dataset analysis of children-in-need and looked-after-children pathways. A notable Shropshire outlier.

pythonjupyter
github.com/stetho/cin-cla-pathways →
SEN pathways notebook done

The same DfE pathway analysis, applied to special educational needs data.

pythonjupyter
aircraft-watch active

Watches a local ADS-B feed and alerts on rare aircraft types. Started because the Goodyear Blimp flew over the house. Warm-up baseline is over and the dataset's now big enough to start building rarity predictions on top of the alerting.

python
github.com/stetho/aircraft-watch →
home-assistant-unirepo active

Home for various Home Assistant scripts, including an audit tool for migrating between HA servers without a bloated restore from backup.

python
github.com/stetho/home-assistant-unirepo →
Home Assistant → InfluxDB → MCP pipeline parked

Feeds Home Assistant telemetry into InfluxDB and exposes it over MCP. Written, not yet deployed.

python
logtimeline active

Merges log streams from multiple sources, local files and Docker logs, into one chronological, human-readable timeline.

python
github.com/stetho/logtimeline →
logexplain active

Reads logtimeline's output and explains what the log events actually mean, in plain English. Waiting on logtimeline to ship first.

python
github.com/stetho/logexplain →
inky-status-board parked

A home status board on an e-ink display: occupancy, appliances, weather, drying times, updating every five minutes. Paused while Home Assistant migrates to a new server.

python
ha-unicorn done

MicroPython on a Pimoroni Galactic Unicorn LED matrix, scrolling Home Assistant notifications with colour-coded urgency.

micropython
github.com/stetho/ha-unicorn →
Decision Log web app parked

A decision-logging tool, mostly an excuse to prove out a GCP / Cloud Run deployment pipeline. Stalled at the pipeline stage.

python
github.com/stetho/decision-log →
capacities-client parked

A client for the Capacities note-taking API. Paused while the API was in beta, worth revisiting now it's hit a stable 2.0.

python
github.com/stetho/capacities-client →