How on time are Sydney's buses, really?
Captures Sydney bus GTFS-Realtime data continuously to measure reliability honestly: what was observed against what was predicted and scheduled. It is at the foundation stage, so no data has been collected yet.
Foundation stage (v0.1). No data has been collected yet, so there are no findings to show.
Overview
Sydney buses report themselves on time more often than they are, and the data needed to check that disappears unless it is captured continuously.
OnTimeSydney captures GTFS-Realtime data from Transport for NSW and compares observed, predicted and scheduled times, so reliability can be measured honestly.
Architecture
A collector lands raw data as Parquet, loads it into PostgreSQL, and dbt models it from staging through intermediate to marts, feeding a report.
- Collector
- Raw Parquet
- PostgreSQL
- dbt: staging, intermediate, marts
- Report
How it is built and checked
- CI runs lint, tests and a repository check on every push (make check).
- pytest suites are split into unit and integration tests.
- ruff handles linting and formatting, with its version pinned.
- Pre-commit hooks block large files and private keys.
- Rule: figures in the README must be generated by the pipeline, never typed by hand.
Data source and licence
- Source
- Transport for NSW Open Data (GTFS-Realtime)
- Licence
- CC BY 4.0, as stated in the project README
Roadmap
- v0.1 Foundation (current)
- v0.2 Collector
- v0.3 Load
- v0.4 Model
- v1.0 Metrics
- v1.1 Orchestration
- v2.0 Serving
Known limitations
- No data has been collected yet.
- Known limitations are not documented yet; the README says they will be added as they are found.
Repository activity
- Last push
- 16 Oct 2026
- Licence
- MIT
- Latest CI run
- Passing (opens in a new tab)
Content checked against the project README and repository on 24 Oct 2026. Repository activity is read live from GitHub and refreshed hourly.