// 13 projects · filter by category

Things I have built

A mix of SDG-aligned work, personal interests, and the small utilities I have written to make my other work easier. Each card links to the public repo where one exists.

11

Linear Programming Scheduler

live

Live EV charging scheduler. Pulls real carbon forecast, runs a greedy LP solver, and shows the optimal charge plan vs baseline.

JavaScriptLinear ProgrammingCarbon IntensityFastAPIAstro
live GB grid Forecast
7

EV Charging Demand Optimisation

in-progress

Carbon-aware EV charging. Forecasts grid carbon intensity and session demand, then schedules charging with a per-session LP optimiser.

PythonLightGBMPuLPDatabricksPySparkMLflowFastAPI
local + Databricks Implementations
13

GB Carbon Intensity Forecast API

live

Half-hourly probabilistic forecast of GB grid carbon intensity. P10 / P50 / P90 quantiles, served as a public FastAPI on Cloud Run.

PythonLightGBMFastAPICloud RunMLflowSHAP
P10 / P50 / P90 Quantiles
3

NHS A&E Attendance Forecasting

planning

Trust-level forecasting of A&E attendances using public data, weather, and socioeconomic features. Planning stage.

PythonForecastingHealthcareExplainability
11

Public Transport Efficiency

planning

Comparing transport efficiency across UK and European cities using open GTFS data and self-hosted routing.

PythonGTFSRoutingClustering

SynClock

live

Rust daemon that converts Mixxx BPM to 24 PPQN MIDI clock for the Novation Circuit Rhythm. Runs headless as a systemd service.

RustMIDIALSAsystemdAudio
24 PPQN Clock resolution

Crag Weather

in-progress

Conditions-aware South Wales crag recommender. SWCW + UKC scraping, LightRAG index, FastAPI service.

PythonFastAPILightRAGPlaywrightMediaWiki API
~470 Crag walls indexed

ETF Lens

in-progress

A queryable view of UK-based ETF holdings and fees.

PythonWeb scrapingDocker

Playchitect

in-progress

Smart DJ playlist clustering by BPM and energy. Built for my own DJ sets.

PythonAudio analysisClustering

Cadence

in-progress

Daily WhatsApp interrupt grounded in my Obsidian vault. Random send time, Claude-generated message.

PythonClaude APIObsidianWhatsApp

DayHook

in-progress

Generates the day's daily note from my Obsidian vault before I start work.

PythonClaude CodeObsidian

VaultMinder

in-progress

Shared Python toolkit underpinning my DayHook and Cadence agents: common vault reader, AI client, and schemas.

PythonAnthropic SDKPackaging

Ralphzilla

in-progress

AI sprint runner that executes prd.json backlogs via AI agents with autonomous failure recovery.

PythonClaudeGeminiopencodeGitHub Actions

No projects match that filter yet.