HowToGet: almost anywhere in New South Wales, without a car
Eight hundred thousand square kilometres, one journey planner, and a stubborn rule: use as little car as we can get away with.
- Industry
- Public transit, Mobility, Tourism
- Region
- New South Wales, Australia
- Services
- Routing research, Product engineering, Open data pipelines, Cloud deployment
- Timeline
- 2026, live
Intro
Most journey planners answer “can I get there?” with yes or no. In a state the size of New South Wales that is the wrong question: almost everywhere is reachable by some mix of transit, walking and a short car leg. The real question is how much car it costs you.
HowToGet is our answer, built as a self-initiated product on top of our public transit routing research. It searches the whole state — every train, coach, bus, ferry and on-demand service — and escalates reluctantly: walking first, on-demand shuttles where fixed routes end, a taxi only for the last miles, and where no timetable goes at all, the plan a local would actually give you.
It runs live at howtoget.postdata.ai, with a presentation landing page and an interactive map of pre-routed journeys from Sydney to places the mainstream planners give up on.
Goals and challenges
Building a planner that covers 800,000 square kilometres on open data turned up three problems the documentation does not mention.
- 01
The “complete” timetable is Greater Sydney only
The Transport for NSW endpoint advertised as the complete GTFS bundle serves the Greater Sydney feed. Real statewide coverage means pulling all 19 mode and region feeds separately; the regional trains, coaches and regional bus feeds are what make the far west reachable at all.
- 02
A two-day search window cannot see a twice-weekly train
OpenTripPlanner hard-caps its search window at two days, and the router configuration cannot raise it. Far-west services such as the Broken Hill Outback Xplorer run about twice a week, so no single window finds them and Broken Hill reports as unreachable despite direct rail.
- 03
One stray space breaks the whole build
Transport for NSW occasionally emits whitespace between a closing quote and the field delimiter in its CSVs. The GTFS reader rejects the row and aborts the entire graph build. On the day we checked, exactly one row in the regional trains shapes file was affected.
Solution
The planner searches in order of increasing car use and stops at the first rung that works, so a taxi is never proposed for a journey that walking or an on-demand service could have covered.
The routing rests on our own research: transfer-aware variants of Dijkstra that handle stop buffers and transfers of unlimited distance, and the ULTRA family of multimodal algorithms, together with the Early Pruning change we upstreamed into OpenTripPlanner. The papers are listed under References.
It was built and checked against a statewide OpenTripPlanner 2.10 graph. The public demo serves pre-routed journeys — transit legs from the Transport for NSW Trip Planner, last miles over OpenStreetMap with OSRM — so it runs as a single lightweight service without a 2.6 GB graph and a large JVM behind it.
The ladder: as little car as possible
Rung one is transit plus walking only, with walking access and egress allowed up to three hours. Rung two adds flexible, on-demand community transport for the last mile, still car-free for the traveller. Rung three lets transit go as far as it goes and then adds a car pickup to the door.
Rung four is the fallback for places no timetable reaches: the planner asks an LLM with web search for the plan a local would actually use.
A statewide graph on open data
All 19 Transport for NSW GTFS feeds plus the Australian OpenStreetMap extract clipped to a New South Wales bounding box, about 1.5 GB of source data. The graph builds in about five minutes into 2.6 GB covering 90,467 stops with 4.8 million generated transfers.
The bounding box, rather than the strict state polygon, is deliberate: it keeps the Canberra enclave and cross-border services to Albury–Wodonga, Tweed Heads and Mildura that a strict boundary would cut away. A sanitiser repairs the stray-whitespace rows across all feeds before every build.
Seeing services that run twice a week
To get around the two-day search window, the app probes successive departure days — the requested day, then two, four and six days later — with a 47-hour window each, so sparse regional services are found instead of reported as unreachable.
Live map and pre-routed journeys
Every one of 25 curated destinations is pre-routed from Sydney, and a visitor can also click anywhere on the map to drop a pin and route to raw coordinates. The map is served from the app itself rather than a CDN, so it works on locked-down networks with no external script dependency.
The timetable is refreshed nightly and the planner serves a multi-day horizon, so the journeys on the map reflect the current schedules.

Data sources
- Transport for NSW Open Data — 19 GTFS feeds
- Geofabrik Australia extract, clipped to New South Wales, © OpenStreetMap contributors
- OpenTripPlanner 2.10 for the statewide graph
Stack
- Node.js service with the landing page and the live map
- MapLibre for the map, served locally
- OSRM over OpenStreetMap for last-mile legs
- An LLM with web search for the rung-four fallback
- Docker on a VM behind Caddy with TLS; nightly timetable refresh
Team
A self-initiated project, built alongside our public transit routing research.
- Algorithmic Engineer — routing, data pipeline and deployment
- Designer — landing page and map interface
Results
Every destination is measured twice, departing Sydney at 08:00 the next day: once as the Transport for NSW Trip Planner answers it, once up the ladder. Across the fourteen destinations on the live map, the Trip Planner routes none of them. HowToGet routes all fourteen.
These are not ordinary towns. Every one is a place with no transit stop of its own, which is exactly where a mainstream planner stops being useful. Three of the fourteen are worse than “no route”: asked about that day, the Trip Planner quietly answers with a journey on a different day, which looks like an answer but is not one.
The comparison is one timetable against itself, not a claim about a competitor: transit legs on both sides come from the Transport for NSW Trip Planner, and the last mile is routed over OpenStreetMap. Bicycle timings are estimates at a stated pace and are marked as such in the interface.
- Jenolan Caves: no journey on any day from the Trip Planner; 4 h 50 m with a taxi for the last 127 km, 48% of the distance car-free
- Mount Canobolas: Monday only from the Trip Planner; 9 h 15 m with the last 18 km by bike, 100% car-free
- Bald Rock National Park: no journey on any day; 12 h 09 m with a 32 km taxi, 96% car-free
- Tibooburra: no journey on any day; 21 h 00 m with a 331 km transfer, 79% car-free
- Hard-to-reach destinations routed, against none by the Trip Planner
- 14 / 14
Project details
- Industry
- Public transit, Mobility, Tourism
- Region
- New South Wales, Australia
- Platform
- Web application, live at howtoget.postdata.ai
- Services
- Routing research, Product engineering, Open data pipelines, Cloud deployment
- Technologies
- OpenTripPlanner 2.10
- GTFS (19 Transport for NSW feeds)
- OpenStreetMap
- MapLibre
- OSRM
- Node.js
- Transfer-aware Dijkstra
- ULTRA
- Team
- 2 — 1 Algorithmic Engineer, 1 Designer
- Timeline
- 2026, live
References
- 01A. Rohovyi, P. J. Stuckey, T. Walsh. Multimodal Pathfinding with Personalized Travel Speed and Transfers of Unlimited Distance. IEEE International Conference on Tools with Artificial Intelligence (ICTAI), 2025.
- 02D. Katkalo, A. Rohovyi, T. Walsh. Adapting Dijkstra for Buffers and Unlimited Transfers. IEEE International Conference on Intelligent Transportation Systems (ITSC), 2026.
- 03A. Rohovyi, A. Abuaisha, T. Walsh. Early Pruning for Public Transport Routing. World Conference on Transport Research (WCTR), 2026.
- 04D. Katkalo, A. Rohovyi, T. Walsh. Fast and Memory Efficient Multimodal Journey Planning with Delays. Symposium on Combinatorial Search (SoCS), 2026.
- 05M. Baum, V. Buchhold, J. Sauer, D. Wagner, T. Zündorf. UnLimited TRAnsfers for Multi-Modal Route Planning: An Efficient Solution. 27th Annual European Symposium on Algorithms (ESA), 2019.


