ROUVY Route Planner PoC
How to try it
Run it
- Install Expo Go on your phone. Ask Michal Rehout to add your Expo account to the
rouvyExpo organisation, then sign in to Expo Go with that account. Expo only serves this build to signed-in members; if Expo Go shows a 403 / "needs authentication", you are not signed in or not a member yet. - Scan the QR code below, or open the project page: https://expo.dev/accounts/rouvy/projects/route-planner-poc (Updates → channel
preview→ Preview). Expo Go loads the latest build. Nothing else to install. - Developers: clone
rouvydev/route-planner-poc, runnpm install && npx expo startinmobile/, scan the QR. The app talks to this backend (route-planner-api.rouvy.dev), so no local API keys are needed.
Log in
Tap "Sign in with ROUVY" and use your normal ROUVY account (production, api.rouvy.com). The session lasts 7 days. All routing and AI calls go through a ROUVY-owned proxy; no third-party API keys live on the phone.
What you can ask for
Type a ride brief in plain language, for example: "3 hours, quiet roads, tarmac only, start and finish at Skibike Centrum RadotÃn". Gemini parses it into:
- Duration (30 min to 6 h), target distance (10 to 150 km), or target climbing (50 to 5000 m)
- Hill preference: flat, low, any
- Surface: asphalt, paved, any
- Traffic: low or any
- Setting: rural or any
- Start place by name (resolved via Maps grounding) or by tapping the map
Limits for now: loop routes only (start = finish) and the Prague region only (roughly 49.5–50.5 N, 13.4–15.2 E). The app generates several candidate loops (default 5, calibrated filter + score), scores them against the brief, shows distance, moving time, ascent and surface split, and can export GPX. Gemini prompt interpretation and these planner defaults now live in the backend Worker, so they change with a Worker deploy, not an app update.
Routing backends and their knobs (Settings → Planner lab)
| Backend | Knobs |
|---|---|
| BRouter (free, no key) | profile (racebike-verylowtraffic, fastbike-verylowtraffic, fastbike-lowtraffic, fastbike, trekking, trekking-steep), radius factor, bearing offset, random bearing, alternative index, brief-driven on/off |
| openrouteservice | profile (cycling-road, cycling-regular, cycling-mountain, cycling-electric), preference (fastest, shortest, recommended), round-trip points (2–10), seed base, avoid features, steepness difficulty |
| GraphHopper | seed base, brief-driven on/off. Profile is fixed to bike; our plan does not include racingbike. |
| Stadia Maps Valhalla | bicycle type (default Road), cycling speed (15–35 km/h), use roads (0–1), use hills (0–1), avoid bad surfaces |
Global knobs: engine, candidate count, selection strategy (score, filter then score, calibrated filter, duration only), and the scoring weights per criterion.
Feedback
Please note which backend produced the routes you liked and which you didn't. That comparison is the whole point of the trial. Send notes to Michal Rehout.