Board Game Tracker (opens in a new tab)
Self-hosted board game collection manager with BGG integration, smart game chooser, barcode scanning, play logging, and a public game night view for friends at the table.
Software I have built, mostly with the help of AI tools like Claude Code. For non-software work, see Projects.
Self-hosted board game collection manager with BGG integration, smart game chooser, barcode scanning, play logging, and a public game night view for friends at the table.
A theatre-logging web app for tracking performances, venues, spending, and ratings. Features magic link authentication, Google Maps venue search, and detailed analytics.
Native Android companion app for StageLog with offline-first architecture, biometric authentication, encrypted local storage, and background sync.
Indefinite Leave to Remain (ILR) is a UK immigration status. This tool analyses case evidence against Home Office guidance using 30+ AI models via OpenRouter, then generates formal PDF assessment reports.
AI-powered document classification pipeline for Subject Access Request bundles. Renders PDFs, runs local OCR, detects document boundaries, and sorts into categories using Claude.
This website. A personal portfolio with living CV, project showcase, blog, and a real-time Now page pulling data from Spotify, Plex, and StageLog.
A Python automation pipeline that scrapes 7 UK job boards, applies per-user hard filters (location, salary, security clearance), then uses a two-stage AI pipeline to score listings against anonymised CV evidence. Strong matches arrive via Telegram.
Self-hosted, offline-first web version of the RAADS-R screening questionnaire. 80 items with clinical scoring, four subscale breakdowns, and PDF/JSON/CSV export. All data stays in the browser.
Classifies 4,358 Instagram accounts from a Meta data export into categories using GPT-4.1 inference on usernames. Custom biographical context in the system prompt doubled location accuracy from 42% to 98%.
A mood-based Simpsons episode recommender. Take a 4-question vibe quiz or search by similarity using TF-IDF scoring, with smart filters for classic seasons and episode types.
A Chrome/Firefox extension for Fastmail with inbox triage, bulk actions, a rules engine for auto-sorting, smart rule suggestions that learn from your actions, and reply templates via JMAP.
Scans Plex media libraries to identify why files cannot Direct Play on specific clients. Uses the Plex API and ffprobe to analyse codecs, containers, and audio tracks across 14,000+ files.
A Flask dashboard for Fastmail inbox analytics. Connects via IMAP, categorises emails by action type, and provides interactive Plotly charts with dark mode and data export.
Syncs Plex watch history to Letterboxd via Tautulli. Exports full or incremental history as Letterboxd-compatible CSV with an interactive rating editor and rewatch detection.
Analyses Instagram message export data with per-sender statistics, sentiment analysis via NLTK, emoji frequency charts, word clouds, and message volume trends over time.
A note on how these were built: I use AI tools because they let me build things I couldn't build alone, and I think being upfront about that matters. I come up with the ideas, define what I want, and make the decisions; AI helps me turn that into working code. Each project card shows which tools were involved.