Transport Inequality Engine
2026
Publicly branded as Fusion Transport Score
Built independently, deployed under Fusion Party branding as a public advocacy tool.
// What it is
A public tool that scores every Melbourne suburb and every individual stop from 0 to 100 on public transport frequency, coverage, and reliability, computed directly from the published PTV GTFS timetable. Users enter their address and get an explainable score. The site also ranks the 20 worst-served suburbs and publishes the full methodology so every number is reproducible.
// Why it's hard
Full-corpus GTFS processing
The entire Melbourne PTV GTFS dataset is ingested and scored per stop in a Rust pipeline, covering every train, tram, and bus service in the network. Per-stop scoring is the correct starting unit because it captures the timetable a rider actually experiences at that location, not a rounded average across a wider area. Suburb and route scores are derived from the stop-level data afterward, not the other way around.
Suburb-level aggregation failures
Naive averaging of stop scores misrepresents suburbs where population and stops don't overlap. A suburb with one excellent stop at its edge and no service everywhere else can average out to a misleadingly high score. The fix weights stop scores by where residents actually live instead of treating every stop as equally representative of the suburb.
Population staleness and dasymetric modelling
Census population data is stale by the time it's published and coarse at the suburb level. Dasymetric modelling redistributes that population to the land people actually occupy, using finer-grained residential data instead of treating a suburb as a uniform block. Scores end up weighted by where residents live, not by raw land area.
Route-level scoring
Scores also attach to individual routes, not only to stops and suburbs. That makes it possible to isolate which specific bus route is under-serving an area, rather than reporting a vague area-level score a resident can't act on.
Orbital accessibility
Melbourne's public transport network is built radially around the CBD. The tool measures suburb-to-suburb accessibility directly, which surfaces the orbital gaps that a CBD-radial view of the network hides.
Privacy by architecture
Address geocoding runs entirely in the browser via OpenStreetMap Nominatim. No address is transmitted to or stored on the server. Lookups are counted per suburb, never per person, and the site carries no cookies and no ad pixels.
Reproducibility as a requirement
Every published number traces back to the methodology page and a versioned GTFS snapshot, for example processed 2026-07-12 against methodology version 2026.07. The scores are politically load-bearing, so they have to survive hostile scrutiny rather than just casual review.
// Architecture
Rust handles GTFS ingestion and scoring. TypeScript drives the frontend. Output is a static site with pre-computed scores, and address geocoding happens client-side in the browser.
// Impact
- › Live public tool under a registered political party's domain, carrying the formal electoral authorisation line required by law.
- › Used as the analytical backbone for transport policy work and public advocacy.
- › Functions as a working example of explainable scoring: every score decomposes into frequency, coverage, and reliability components a layperson can follow.
// Provenance
Conceived, architected, and built independently. Deployed and branded as Fusion Transport Score under Fusion Party Australia, where I serve as National Secretary.