Portfolio · built and audited

Thirteen MVPs, and what each gets wrong

Thirteen project ideas, built as independent MVPs, then independently audited by agents that re-ran every documented command from a cold start. Every project ships a LOG.md that argues against itself. Ten are published here as working pages. Three cannot be hosted, and this page says plainly why.

13projects audited
2,321tests across the thirteen
10published as live pages
3not hostable, explained

Read this first

These are MVPs and portfolio pieces, not products. Nothing here has been clinically, legally or professionally reviewed. Every threshold in every project is illustrative rather than validated.

Not medical advice. Not an emergency service. coldsnap and referloop handle health-shaped data and are not fit to touch real patients. They cannot summon help and do not replace calling 999 or NHS 111. Patients shown are fictional; presentations are synthetic.

Several projects run on live data locally via Python, which static hosting cannot run. Where that is the case, the page you land on is a frozen snapshot carrying the timestamp of its data, and says so on the page itself. Nothing here refreshes.

What the labels mean

Every link below is tagged with what it actually is. No link is described as more alive than it is.

Live-capable — the genuine app. All logic runs in your browser; nothing was frozen.
Interactive app — the real engine's output, fully explorable. Server-only features are disabled and labelled.
Static snapshot — a frozen capture with its timestamp. The live version runs locally and polls.
Not hostable — native app, local service, or deliberately excluded.

blightcast

111 tests
Interactive app

Late-blight infection windows from the exact UK Hutton Criteria, showing every hourly number behind the verdict.

The project's own rules engine was run over all four bundled fixtures × both contiguous-hours settings, and the eight responses baked in — so the colour-coded day strip, the “explain this day” panel and both toggles work exactly as they do locally. Live Open-Meteo fetch is removed and the page says why. A decision aid, not agronomic advice.

Open blightcast Open-Meteo (non-commercial tier)

referloop

194 tests
Live-capable

Offline WHO IMCI triage for sick under-fives; a 45-byte QR carries the whole referral, and the clinic's scan-back closes the loop.

The real offline-first PWA, service worker and all — QR encode and decode run entirely in your browser. It took the most adversarial audit of the thirteen: all 5 danger signs across every age 2–59 months (290 combinations) forced REFER, and fast-breathing cut-offs were exact at the boundaries. Known and unfixed: red MUAC with the appetite test never performed still lands in UNCOMPLICATED SAM — changing that band is a clinical decision, not an audit edit.

Open referloop WHO IMCI chart booklet · synthetic data

dilution

45 tests
Live-capable

Drag a company pre-seed → Series B and watch the cap table dilute; pool shuffle, SAFEs, liquidation waterfall.

The genuine React app — pure client-side, no backend, no network calls in the bundle. It reports the one measurement that misses its own target: p95 drag latency of 27.7 ms against a 16 ms budget. Its README's down-round prose also outruns its own arithmetic, which the audit caught.

trialgalaxy

73 tests
Live-capable

40,084 clinical trials as a zoomable WebGL galaxy, clustered by condition and mechanism.

Interventional trials with an assigned phase, first posted from 2023 onward, pulled from the ClinicalTrials.gov API and reduced TF-IDF → SVD → UMAP. The galaxy payload is ~13 MB of binary buffers streamed from the page, and cluster labels fade in by zoom. Needs WebGL and a real connection — it is a heavy first load.

Open trialgalaxy ClinicalTrials.gov API v2

coldsnap

222 tests
Interactive app

Cold-weather crisis pre-alert for sickle cell disease, against each patient's own threshold — one London forecast, three different answers.

Replay of 1–12 January 2025 · all 288 hourly states pre-rendered · scrubber fully working

An hour-by-hour replay of a real UK cold spell against three explicitly fictional patients. The two things static hosting cannot run are switched off and say so: live fetch of four APIs, and the feedback buttons that move a patient's band. It discloses that the strongest London study it cites found no temperature association — that its own headline mechanism is not what the best evidence supports — and implements that study's ratio as a reported-but-unused signal rather than burying the disagreement.

Open coldsnap Open-Meteo · London Air (Imperial ERG) · Met Office

aftermath

106 tests
Static snapshot

Disaster → satellite imagery → per-building damage map with confidence bands, in one command.

Captured 2026-09-02 23:09 UTC

Real Kahramanmaraş 2023 imagery, 608 real OSM footprints, measured ROC AUC 0.926 against 55 hand labels. Its thresholds are fitted and reported on the same 55 buildings, so the operating point is in-sample and optimistic. It names a single case against itself — an intact building called “likely destroyed” at p=0.89 — and identifies the cheap control experiment that would undermine its own accuracy numbers, then states it was not run.

Open aftermath Maxar Open Data CC BY-NC 4.0 · OSM ODbL · USGS

signal-blackout

259 tests
Static snapshot

A long power cut drains phone-mast batteries and takes your ability to call 999 with it — how long you have, while the phone still works.

Captured 2026-09-02 23:08:39 UTC

Locally this runs live across all seven UK distribution networks over eight feeds, GB and NI complete. Here it is frozen: the page's own “Live” pill and “last refreshed” line were rewritten to snapshot wording, because left alone they would have contradicted the banner. A second map is a deliberately invented storm over real power-cut fixtures, and is labelled as invented. Basemap tiles are fetched from OpenStreetMap, so the background needs network. Not an emergency service — call 999.

Open signal-blackout OSM ODbL · UKPN & SSEN CC BY 4.0 · Northern Powergrid ODL

outage-radar

189 tests
Static snapshot

Spot a national internet blackout in traffic data, and be scrupulous about whether it was a government, a cable, a power cut, or the instrument.

Live view captured 2026-09-02 23:05 UTC · case dashboard 23:07 UTC

Locally it polls IODA continuously against a rolling baseline that holds out the last 24 hours, so an in-progress outage cannot be learned as normal. It ships a documented false negative — Iran, September 2022 returns CLEAR — with a test asserting the failure so it cannot be quietly “fixed”. Every page carries the caveat that deliberate shutdown is a hypothesis, not a finding of fact.

Open outage-radar IODA — Georgia Tech, All Rights Reserved

warncal

174 tests
Static snapshot

Replay an alert threshold against five years of history → a one-page ship / don't-ship scorecard with confidence intervals.

Regenerated 2026-09-02 23:08 UTC · four scorecards

Four real backtests, each with its verdict on the page: a London gale WARNING at gust ≥ 65 km/h ships (precision 0.392, 47 events); a WATCH at ≥ 60 km/h ships with caveats (recall 0.915, but frequency bias 3.45, out of range). The audit found its pasted run log came from a slightly earlier build — point estimates match, bootstrap CIs moved in the third decimal, no verdict changed. A measurement tool, not a decision authority.

Open warncal Open-Meteo · Copernicus/ECMWF

skytrace

360 tests
Static snapshot

Find a drone and its pilot with microphones and a few cheap radios — and be honest about the fibre-optic ones you cannot see at all.

Regenerated 2026-09-02 23:07 UTC · four scenarios

Passive RF and acoustic TDOA multilateration only — explicitly no jamming, spoofing or takeover, which would be unlawful for a civilian supplier. The scenarios are seeded simulations, not real aircraft or sensors. An independent agent told to attack it found the flagship result — a “sub-metre fix at 100% calibration” — was manufactured by a ground-truth leak. Given a plausible altitude instead, that scenario is 11 m at 88%. Thirteen defects total, each with a regression test, and its LOG leads with the finding rather than burying it.

Open skytrace Simulated data · thresholds are the project's own

Not linkable — and why

Three projects have no URL. Two are native apps that a static host cannot run; one was deliberately excluded.

redactshare

149 tests
Native macOS app

Share a delayed, redacted feed so a secret is blacked out before anyone sees it.

Why there is no link: it is a real macOS application, shipping as RedactShare.app and built against the macOS SDK, ScreenCaptureKit and Vision OCR. None of that has a browser equivalent — there is nothing to serve. It runs with ./run.sh on macOS 14+ with Swift 6.1.

It argued against its own headline metric and was then proved right. framesLeftUncovered counted whether a redaction box was present, not whether it covered the secret's pixels. A ground-truth pixel mask found two real leaks the old metric reported as zero — including every crisp frame in fast mode sitting at 74% coverage, because OCR misread an AWS key and the overlay faithfully covered only the fragment. Both fixed; now 100.0000% on every frame, and the demo exits non-zero if one secret pixel is ever left uncovered.

No hosted demo — native app

blackout-bulletin

82 tests
Swift package

Signed emergency bulletins hop phone-to-phone when the internet is cut; a forged bulletin reaches nobody.

Why there is no link: it is a SwiftPM package and a propagation simulator binary, not a web application. The demo is swift build && swift test && swift run bulletin-sim printing to a terminal. There is no page to host.

Its LOG opens its own limitations with the flattest sentence in the whole portfolio: “BulletinMesh has never run on hardware. It compiles, and that is the entire claim.” A coordination aid, not an emergency service — it cannot summon help and does not replace calling 999.

No hosted demo — CLI simulator

warm-intro-graph

357 tests
Deliberately excluded

Shortest warm-intro path between two people or funds, over 45,091 real UK nodes crawled from Companies House.

Why there is no link: deliberately excluded from publication. The graph holds 45,091 real people's personal data from Companies House, and the project's own README calls it a local tool that should not be deployed. Putting it on the open web would be a privacy decision nobody made. It was not built or opened during this deployment run.

It also states that its central quantity is an opinion: “0.78 for a board seat versus 0.30 for a shareholding is a defensible opinion, not a measurement.” Known defect, recorded and unfixed: Yen's k-shortest-paths enumerates parallel multigraph edges as distinct routes, so asking for 5 introductions can return fewer than 5 distinct ones.

Companies House data — Open Government Licence v3.0

Also live, deployed separately

Built after the audited thirteen, and published independently of this batch.

satradar

91 tests · not yet audited
Live-capable

All 16,340 tracked active satellites live over a 3D Earth, in the sky above you (gyro AR on a phone), and from the satellite's own seat.

The newest of the set. Its 91 tests are not included in the 2,321 audited total, and unlike the thirteen it has not yet been through an independent audit. It was deployed separately and was neither built nor modified as part of this publication run.

Data sources and licences

Every external dataset used by anything linked above, with the terms it carries.

IODA — Internet Outage Detection and Analysis
Used by outage-radar. Copyright © 2021–2025 Georgia Tech Research Corporation. All Rights Reserved. IODA asserts no Creative Commons grant of any kind. Reproduced here for non-commercial research and portfolio use only, with the copyright notice carried above the fold on every outage-radar page.
Open-Meteo
Used by blightcast, warncal and coldsnap, including the ERA5 archive. Data CC BY 4.0, derived from Copernicus/ECMWF. Open-Meteo's free tier is non-commercial; these are portfolio pages and carry no commercial use.
Companies House
Source of the warm-intro-graph dataset. Contains public sector information licensed under the Open Government Licence v3.0. Attributed here although the project itself is not published, because the data was crawled and retained locally.
OpenStreetMap
Building footprints and basemap tiles in aftermath and signal-blackout. © OpenStreetMap contributors, ODbL. Tiles are fetched live from openstreetmap.org where a basemap is shown; no tiles are cached or redistributed here.
Maxar Open Data Program
Pre- and post-event satellite imagery in aftermath (Kahramanmaraş, 2023). CC BY-NC 4.0 — non-commercial. The event itself is USGS us6000jllz.
ClinicalTrials.gov
All 40,084 studies in trialgalaxy, via API v2, operated by the U.S. National Library of Medicine.
WHO IMCI
Every clinical threshold in referloop comes from the WHO Integrated Management of Childhood Illness chart booklet, and each carries its page reference. Implemented as a demonstration only — not validated for clinical use, and not medical advice.
UK electricity network operators
signal-blackout feeds: UK Power Networks (CC BY 4.0), SSEN (CC BY 4.0), Northern Powergrid (bespoke Open Data Licence), National Grid Electricity Distribution (terms not stated), plus Met Office warnings.
London Air Quality Network
Measured DAQI in coldsnap, from the Environmental Research Group, Imperial College London.