things I have built
Work
These are systems I depend on, not isolated demonstrations. Below them, the things built to learn something, and a few kept purely for the record. The professional work is on the resume.
Systems I runthe current work
Tools I depend on daily rather than demonstrations. Documents arrive, get classified and extracted, get checked against something that is not a language model, and end up queryable. Repositories are private for now; the writing here is about the approach.
2026 — ongoing
bills
Property bills land in a folder; a command turns them into a queryable record with the arithmetic checked, the files filed and the reminders set.
Private repository
- Python
- SQLite
- Claude vision
- macOS automation
2026 — ongoing
hum
An always-on visibility layer across the whole fleet of automation tools, so a system that works unattended can still be seen working.
Private repository
- TypeScript
- React
- Ink
- WebSockets
- LaunchAgent
2026 — ongoing
Cattle
A publishing engine that turns one long-form essay into versions for different audiences — children, teenagers, academics — and ships each as its own site.
Private repository
- TypeScript
- LLM transformation
- Astro
- SQLite
- Vercel
2026 — ongoing
Herd
A retrieval system for writing sessions that run for hours, so the conversation stops forgetting what the essay says.
Private repository
- TypeScript
- RAG
- semantic retrieval
- SQLite
2026 — ongoing
shopping-receipts
Receipts arrive by scanner, email and export; they come out the other side as structured, categorised, queryable records.
Private repository
- TypeScript
- NestJS
- React
- SQLite
- Claude vision
2026 — ongoing
petrol-receipts
The reference implementation for the whole fleet — fuel receipts in, structured per-vehicle records out.
Private repository
- TypeScript
- SQLite
- Claude tool-use
- OCR
2026 — ongoing
tax
The same ingest-and-reconcile treatment applied to the documents that only matter once a year, and only if you can find them.
Private repository
- Python
- SQLite
- structured extraction
2026 — ongoing
email triage
Agents that read an inbox the way I would, so the things needing a decision surface and the rest files itself.
Private repository
- Python
- IMAP
- LLM agents
2026 — ongoing
goc
A small navigator for a machine with too many projects on it — jump to any of them, and pick the conversation back up where it stopped.
Private repository
- Python
- shell integration
2025
SRDD
Spec-Roundtrip Driven Development — a methodology for AI-assisted engineering where the specification is the artefact.
- Methodology
- Technical writing
Have a goplayable here
2017 — 2024
Sudoku
A Sudoku board that works out which values are still legal for every empty square, playable right here.
Playable
- React
- TypeScript
- Vite
Along the waykept for the record
2024 — ongoing
Small Language Model
A DistilGPT-2 fine-tuned on a decade of personal journals, to see what a small model learns from one voice.
- PyTorch
- Hugging Face
- scikit-learn
- Jupyter
2024
Choose-APY
A choose-your-own-adventure storyteller for children, with the branches generated as you read.
- LLM APIs
- React
- Vercel
2013
Sudoku Solver
A desktop Sudoku solver in Java and SWT, solving by recursive backtracking.
- Java
- Eclipse SWT
2013
FXMandelbrot
A JavaFX renderer for the Mandelbrot set, written to learn the then-new JavaFX scene graph.
- Java
- JavaFX
2013 — 2017
Samples along the way
Smaller projects kept for the record — a first React-Redux app, an AngularJS stock tracker, JavaEE and JavaFX experiments.
- React
- Redux
- AngularJS
- JavaEE
- JavaFX