Crowdsourced Public Transport Arrival Tracker for Buses Without Live Data
A mobile app that predicts bus and van arrivals on routes that publish no live data, using anonymous location traces from passengers already on board. An intermediate transport final year project where estimating arrivals from sparse, noisy traces and designing the privacy model are the core problems.
Intermediate
A small team, or one strong student willing to learn something new.1 semester · 2 to 3 students
7 to ship
4 optional extrasSuggested stack
What you should ship
- Passenger mode that contributes anonymised location pings only while a journey is in progress, started with one tap
- Route and stop data for two or three real routes, stored in a GTFS-like format
- Route matching that snaps a trace to a known route and direction and rejects traces from cars or walkers
- Arrival estimation for downstream stops, falling back to historical travel times when no live trace exists
- Rider view showing predictions with an explicit confidence and the age of the underlying data
- Privacy design document covering anonymisation, trimming of journey ends, retention and re-identification risk
- An accuracy study against stopwatch-observed arrivals, reported by prediction horizon
If you have time left
- Crowding reports from passengers alongside position
- Historical timetable inference for routes with no published schedule
- A GTFS-Realtime feed export so other apps can use the data
- Driver or conductor mode for operators who want to share position directly
The problem riders face on routes with no live data
Many transport networks, particularly informal or privately run buses, wagons and vans, publish no live data and often no timetable. Riders wait at a stop without knowing whether the next vehicle is two minutes or twenty minutes away. The only people who know where a vehicle is are the passengers on it. Newer city services sometimes have tracking apps, but the routes most people ride every day usually do not.
What already exists and the gap
- Moovit is a transit app covering many countries that combines official data with crowdsourced reports from its users.
- Transit app's GO feature crowdsources real-time vehicle positions from riders using the app on a trip.
- Tiramisu, from Carnegie Mellon University, let riders in Pittsburgh share bus arrival times and seating from their phones.
These products work best where official schedules and route data already exist, and they rely on a large user base. The gap is routes with no official data at all, where you have to build the route map, bootstrap with few contributors, and be honest in the interface about how confident a prediction is.
What you build
Three roles:
- Contributing passenger: taps "I'm on this bus" and the app sends coarse pings until the journey ends.
- Waiting rider: picks a stop and sees upcoming arrivals with confidence and data age.
- Maintainer: draws routes and stops for the chosen corridors and reviews bad traces.
Main flows: map two or three routes, onboard volunteers who ride them, collect traces, match them to routes, predict arrivals, show predictions and measure them against reality.
The technically interesting part
Estimation from sparse, noisy traces. GPS in a bus is noisy, pings arrive irregularly, and a passenger may forget to stop contributing after getting off. Snap each ping to the route with map matching, infer direction, detect when the trace stops behaving like the vehicle (speed, stops, leaving the route), and estimate arrival at downstream stops from segment travel times. Blend live progress with historical segment times collected over previous days, weighted by how fresh the live data is. This is the same idea behind how ride-hailing apps estimate arrival times, applied to a far sparser signal.
Privacy. Location traces are among the most sensitive data there is: a trace from a stop near someone's home to a stop near their workplace identifies them whatever you call the identifier. Trim the first and last few hundred metres of every journey, rotate identifiers per trip, store only matched route progress after processing, and set a short retention period for raw pings. Write a threat model: what an attacker with the database could learn.
How to evaluate it
- Arrival accuracy: stand at two stops with a stopwatch across several days; report mean absolute error at 5, 10 and 20 minute horizons, live versus historical-only.
- Route matching: precision of accepted traces versus a hand-labelled set, including decoy traces from cars and walkers.
- Privacy: attempt a re-identification exercise on your own anonymised data and report what you could and could not infer.
- Cold start: prediction coverage (share of time a live prediction exists) against number of active contributors.
Suggested plan
- Weeks 1 to 2: choose routes, ride them, map stops and draw routes.
- Weeks 3 to 5: contribution mode, ingestion API, storage in PostGIS.
- Weeks 6 to 8: map matching, direction detection, trace cleaning.
- Weeks 9 to 11: arrival estimation, historical blending, rider view, privacy measures.
- Weeks 12 to 15: field accuracy study, re-identification test, write-up.
Path to a product
The first users are students on the routes to your campus. A university can sponsor the app for its commuter routes, and private bus and van operators may pay for a driver mode and simple fleet visibility without buying tracking hardware. The route and timetable data you build has value to city transport departments and to mapping apps, provided you publish it openly with contributors' consent.
Scope warning
Do not attempt journey planning, multi-modal routing or ticketing. Do not claim citywide coverage: a well-measured result on three routes is a real result. Do not collect background location outside an active journey.
Learn what you need on Sefism
- Mobile roadmap : React Native, location APIs and background limits.
- Backend roadmap : ingestion APIs, Postgres and caching.
- System design roadmap : designing for many small writes and fast reads.
- roadmap.sh: PostgreSQL DBA : indexing and query planning for location data.
- How to learn system design as a junior developer : this project is a concrete way to start.
Get help with this idea
The strongest versions of this idea pick a few routes and measure honestly, so bring your route choice and privacy plan to the first conversation. Tauseef can help you tighten the scope, choose a stack your team can finish with, and design an evaluation your examiners will respect. If you are new here, create a free account first.
Ideas and guidance, not finished projects
These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.
Not sure this one fits you?
I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.