What I build
Projects
Personal infrastructure I actually use, on my own hardware. 17 projects; each writeup is its own post.
University of Luke
A private, offline academic hub — around 190 subjects with AI-generated degrees and cited field-guide essays. A small local model authors the knowledge separately from synthesising it, which keeps answers grounded and near hallucination-free.
PythonFlaskstatic export
Aotearoa Research
A structured, fully-cited research project mapping New Zealand's policy challenges — problems, claims, drivers, and rival camps — as a typed entity graph across all 16 regions. Over 1,300 sourced claims, each with a confidence and verification rating, plus cross-region pattern analysis.
PythonFlaskJSON SchemaYAML
Consilience
A discovery game where progression lives in your head — wander a university, collect cited facts, and uncover the hidden connection the departments never mention. A knowledge base reframed as a game.
PythonFlaskvanilla JS
Voice clone
A zero-shot clone of my own voice built from a single short reference clip, used to narrate videos and a read-along audiobook.
PythonPyTorchChatterbox TTSFFmpeg
Tickscape
Consilience reimagined on an OSRS-style engine — a Rust prototype with a 600 ms game tick, tile pathfinding, and a skilling loop.
Rustmacroquad
Control Plane
A desktop supervisor that starts, stops, and health-checks every local service I run — the registry-driven console this site's design language came from.
RustTauriWebView
Sovereign Suite
An ad-free, New Zealand–resident alternative to the big-platform stack, assembled from unmodified open-source apps and run on my own hardware.
DockerWSL2
streamfinder
Search any title and see every legal way to stream it in New Zealand, free options first — built by joining TMDB provider data with TVNZ+ and ThreeNow catalogues.
PythonFastAPISQLite FTS5TMDB
Political research tool
NZ politician profiles paired with a Vote Compass–style questionnaire, scored against what the parties actually publish.
PythonFlask
Job Scout
A local job aggregator with a triage dashboard. The local-7B scoring layer was deliberately retired — the companion post-mortem explains why.
PythonFlaskSQLite
File organiser
Windows file organisation under one rule — nothing touches the filesystem without a dry-run first, with JSONL logs of every move.
PythonorganizeEverythingdigiKam
Personal finance dashboard
A personal finance dashboard on the Akahu open-banking API. The writeup is the only public exposure — no real figures ever leave the machine.
NodeExpressReactSQLiteAkahu
Audio Console
A live EQ + compressor + limiter channel strip for Windows audio, so movie dialogue and explosions land at the same volume.
PythonNumPySciPysounddevice
Smart home
A fully-local home-automation design (Home Assistant + Zigbee, no cloud in the path). The principles are locked; the hardware isn't on the network yet.
Home AssistantZigbeeZigbee2MQTT
Bitwarden dedup
Finds duplicate Bitwarden logins and reports them — it never deletes anything itself.
PythonBitwarden CLI
Server Dashboard
A one-page panel that auto-discovered local projects and launched their servers on click — since superseded by the Control Plane.
PythonFlaskvanilla JS
MiniKV
A Bitcask-style key-value store in Rust with PyO3 Python bindings, retired once it had taught me what I needed from it.
RustPyO3