Methodology / Code & mechanics

Code & mechanics

The formulas behind every number on the site. The per-stop formulas transcribe src/gtfs_processor/scoring.rs; the aggregation formulas transcribe src/lib/scoring.ts. Change code and page together.

See the assumptions register for every constant's value, direction of bias, and config-file location.

Part 03

How We Score a Stop

Each individual stop is scored out of 100 based on two equally important ingredients:

1. Frequency (50% of the score): "How long you wait"

We measure how often services arrive during morning and afternoon peaks, off-peak weekdays, and weekends. A 5-minute wait gets a top score, while a 30-minute wait drops the score significantly. We also reward stops that run 7 days a week and run late into the night.

2. Coverage (50% of the score): "Where you can go"

We look at the connections a stop offers. Does it take you directly to major city hubs? Can you easily interchange to other lines or travel between suburbs without going all the way into the city first? We also reward stops that have other transit options close by.

The Weak-Link Penalty

Public transport is only as good as its weakest link. If a stop has great coverage but the bus only comes once an hour, or if a bus comes every 5 minutes but goes nowhere useful, the score is heavily penalized. Both frequency and coverage must be decent to get a good score.

Part 04

How Address and Suburb Scores are Calculated

Address Scores

When you search a specific address, we look at every transit stop within an 800-metre walk. Your address score is determined by your best nearby service, plus a bonus if you have a diverse mix of options.

Suburb Scores: Real-World Coverage

We divide the suburb's actual boundaries into 250-metre grid squares, score each square individually, and weight the scores by where houses actually exist using population data. This means a suburb only gets a high score if high-quality transport is actually accessible to the majority of its residents.

Part 08

Route Scores

A route score measures what the route itself does — its own frequency, how many homes it passes, how well it connects to other good services, and how direct its path is — not what its stops inherit from a good station or shopping strip nearby.

Part 09

Car vs. Public Transport

For suburbs where computed, we show how long a real PT trip takes compared to driving, averaged across nearby jobs and homes. Only best-case (free-flow) driving times are shown — peak-hour traffic comparisons are coming once data access is in place.

Part 10

The Network Plan

Every suburb page features a budgeted, proposed feeder bus network. We connect residents to existing high-quality transit hubs, aiming for 80% within 400m and 100% within 800m of a good stop, using a greedy maximal-covering heuristic that picks the most cost-effective corridor each round.