Inspiration

We were inspired by the frustration of waiting for a bus that is delayed, cancelled, or never arrives. Commuters often have no simple way to know whether a bus stop is reliable before travelling. GhostBuster was created to turn transit uncertainty into a clear, practical decision. Instead of only showing a bus stop, it estimates the risk of a “ghost bus” and helps users find a better nearby alternative.

What it does

GhostBuster gives nearby bus stops a Stop Credit Score from 300 to 850.

The score considers:

  • Time of day
  • Day of the week
  • Heavy rain
  • The reliability profile of the stop
  • Walking time to alternative stops

Stops are classified as Prime, Near-Prime, or Subprime. When a stop becomes subprime, GhostBuster recommends better nearby stops and shows their walking distance, routes, score, and potential score improvement.

The application is deployed online, so it can be accessed from a computer or mobile phone through a web browser.

How we built it

We built GhostBuster using:

  • FastAPI for the backend API
  • Python and scikit-learn for the Random Forest prediction model
  • HTML, JavaScript, and Tailwind CSS for the frontend
  • Joblib for storing and loading the trained model
  • Browser geolocation for finding the user’s position
  • Render for deployment

The backend finds the nearest supported bus stop, calculates the ghost-bus probability, converts it into a Stop Credit Score, and ranks nearby alternatives.

The current MVP uses synthetic transit history and a seeded registry of stops in Cork, Dublin, and Galway. Stage Demo Mode provides a consistent demonstration using Patrick Street in Cork.

Challenges we ran into

One challenge was creating a useful demonstration without depending on live transit data or a specific physical location. We solved this by building Stage Demo Mode, which locks the location and loads a predictable evening-rush and heavy-rain scenario.

We also had to design a score that was easy to understand. Rather than displaying only a probability, we converted the prediction into a familiar 300–850 credit-style score with clear reliability tiers.

Another challenge was making recommendations practical. The closest stop is not always the best stop, so alternatives are scored based on both reliability and walking time.

Finally, we had to make sure the application worked consistently across desktop and mobile browsers after deployment.

Accomplishments that we're proud of

We are proud that GhostBuster turns a complex machine-learning prediction into a simple commuter decision.

The application:

  • Provides an understandable reliability score
  • Explains the risk of a ghost bus
  • Recommends actionable alternative stops
  • Simulates different time and weather conditions
  • Supports browser location services
  • Works on both computers and mobile phones
  • Includes a reliable demo mode for presentations
  • Is deployed and accessible online

We are especially proud that the project does not stop at predicting a problem—it suggests what the user can do next.

What we learned

We learned that machine-learning products need to communicate predictions clearly. A probability by itself is not always useful, so we added score tiers, advice, and alternative routes.

We also learned how important context is in transit prediction. Time, weather, location, and walking distance all affect the usefulness of a recommendation.

Building the project also helped us understand how to connect a trained model to a live FastAPI service, create a responsive frontend, handle browser geolocation, and deploy a complete application to Render.

What's next for Ghost busters

The next step is to replace the synthetic training data with real public transit data from NTA and Transport for Ireland.

Future improvements include:

  • Importing official GTFS stop and route data
  • Adding live GTFS-Realtime vehicle and delay information
  • Connecting to real weather forecasts
  • Improving the model with route, holiday, event, and historical delay data
  • Adding real walking directions instead of distance estimates
  • Sending alerts when a user’s regular stop becomes unreliable
  • Supporting saved commutes and favourite stops
  • Improving accessibility and Progressive Web App support
  • Adding dashboards for transit operators and local authorities

Built With

Share this project:

Updates

Submission history