Inspiration
Everyday, I am a few minutes away from the station wondering whether to sprint for the next train or let it go.
What it does
Should I Run? lets you ask in plain English, like "I'm 4 minutes from Penn Station, can I make the next uptown A?", and answers walk, run, or wait for the next one, using live train positions.
How we built it
A Python poller streams the MTA's GTFS-realtime feeds into Elasticsearch every 30 seconds, and a Mistral agent calls a get_next_arrivals search tool over that index, with a Gradio chat UI on top.
Challenges we ran into
When I asked the first iteration of the agent, "I'm 4 minutes from Penn Station, can I make the next uptown A?", it saw a train 4 minutes out, and cheerfully said "Run!" even though the extra minute to get from the street to the platform meant the rider would miss it.
Accomplishments that we're proud of
I moved the timing math into code: the tool computes a margin (minutes until the train, minus the rider's travel time plus a one-minute platform buffer) and turns it into a verdict (miss below zero, run under two minutes, walk otherwise), so the model only explains the answer.
What we learned
Language models are great at understanding "I'm about 4 minutes from Penn" but unreliable at the subtraction that follows, so the best design lets the model handle the words and lets code handle the numbers.
What's next for Should I Run?
Live service alerts as a second tool, so it can warn you about disruptions, plus voice input with Mistral's Voxtral so you can ask while you're already walking.
Built With
- elasticcloud
- elasticsearch
- gradio
- mistral
- mta
- python
- uv
Log in or sign up for Devpost to join the conversation.