Way2
Hands-free smart GPS for people who drive for work.
You talk, it drives the conversation: say where you're starting from and where you're headed, and it routes you on open map data, warns you about weather on your route, reports live traffic, and tells you when a faster way exists — all without touching the screen. Built for my coworkers, who spend their days driving between job sites.
you> starting from Cherry Hill, NJ
way2> Got it — starting from Cherry Hill Township.
you> navigate to Philadelphia, PA
way2> Destination set: Philadelphia. 8.4 miles, about 16 minutes of driving.
you> what's my ETA
way2> About 16 minutes — arriving around 5:20 PM.
you> weather along the route
way2> Weather on your route:
- Light rain near your starting point — roads may be slick.
- Light rain along the way — roads may be slick.
- Light rain near your destination — roads may be slick.
you> traffic on my route
way2> Heavy traffic on 2 of 8 segments, about 1 min of delay
- Jam: Slow traffic
- Road Works: Roadworks
you> any faster route
way2> You're already on the fastest route I can see.
Live traffic: about 2 min of delay on your route. Jam: Slow traffic Road Works: Roadworks
Try it
python3 -m way2.app # text mode (easiest demo)
python3 -m way2.app --say # text in, spoken responses out
python3 -m way2.app --voice # voice in + voice out (needs mic + whisper)
For live traffic, set a free TomTom key first (developer.tomtom.com):
export TOMTOM_API_KEY=your_key_here
Things to say: starting from …, navigate to …, add a stop in …,
skip the next stop, what's my ETA, trip summary,
find restaurants / find scenic spots, weather along the route,
traffic on my route, any faster route, help, quit.
How it's built
| Piece | Tech | What it does |
|---|---|---|
| Geocoding + places | OpenStreetMap via Nominatim (free, no key) | turns "Cherry Hill" into coordinates; finds restaurants, scenic spots |
| Routing | OSRM (public demo server, free, no key) | driving routes, turn-by-turn steps, alternative routes |
| Weather | Open-Meteo (free, no key) | current conditions sampled along the route |
| Live traffic | TomTom Traffic API (free key) | flow speeds + incidents on your route; feeds "any faster route" |
| Speech in/out | Whisper (local) + TTS | transcribe commands, speak responses — offline |
| Command parsing | regex/keyword (this repo) | deterministic intent parsing, no LLM |
Two builders, one repo — see docs/CONTRACT.md for who owns what. The short version:
way2/trip.py— trip state + deterministicparse_commandway2/weather.py—alerts_along_routevia Open-Meteoway2/geo.py— Nominatim geocoding/places, OSRM routingway2/traffic.py— live flow speeds + incidents via TomTomway2/voice.py— local Whisper transcription, mic, TTSway2/app.py— the conversation loop
What's live, what's next
Live: routing with turn-by-turn steps, on-demand rerouting ("skip the next stop", "any faster route"), weather alerts along the route, live traffic via TomTom (needs a free key), spoken I/O.
Honest note: without a TomTom key the app says so out loud and sticks to the road network for "faster route" — it won't fake traffic data it doesn't have.
What's next: saved home/work spots, low-bridge warnings for the box trucks.
Tests
python3 -m unittest discover -s tests
113 tests, all green. Unit tests mock all HTTP; tests/test_live.py runs a
small number of real requests against Nominatim, OSRM, and Open-Meteo
(free, no-key APIs) as a smoke check. The TomTom integration is verified
against the real API with real route data.
Privacy
Your voice is transcribed on your own machine by Whisper. Map and weather lookups go to public open-data services (that's how any map works); traffic lookups go to TomTom. There's no account, no tracking SDK, no ad profile — nothing to sign into, nothing that knows who you are.
License
Apache-2.0. See LICENSE.
Log in or sign up for Devpost to join the conversation.