AI Products
CityScope
An agentic city guide that turns a loose travel request into a grounded run or ride with real routes, useful stops, and a plan ready for Google Maps.
2026 / AI Products / Google ADK / Gemini 3.5 Flash / Next.js / FastAPI / Google Maps / Google Routes / City Data MCP / Cloud Run
Quick read
A clear breakdown of the product, the reasoning behind it, and the implementation choices that matter.
- Year
- 2026
- Category
- AI Products
- Status
- Live hackathon prototype
Overview
CityScope helps someone explore a new city without assembling a route by hand. The traveller chooses a city and run or cycle mode, then describes the time, starting point, and kind of experience they want. Google ADK and Gemini interpret that intent; curated city route concepts, Google Maps place grounding, optional City Data MCP context, and deterministic validation shape a bounded plan before Google Routes computes the route that appears on the map.
Why it exists
Someone arriving in a city may know how long they have and the kind of experience they want, but not which streets, parks, landmarks, or stops make a coherent route. General search produces fragments rather than a journey they can actually take.
How it works
CityScope uses an agent for interpretation and selection, then keeps route construction deterministic. Curated route templates provide local planning hints, Google Maps grounds real places, City Data MCP can add supporting mobility context, and Google Routes remains authoritative for walk or bicycle geometry, distance, and duration.
Built with
Google ADK / Gemini 3.5 Flash / Next.js / FastAPI / Google Maps / Google Routes / City Data MCP / Cloud Run
What I focused on
- Built one route-first flow for choosing a city, selecting run or cycle, and describing an approximate journey in natural language.
- Used Google ADK with Gemini 3.5 Flash for bounded intent extraction and route-concept selection.
- Grounded landmarks and food or drink stops in Google Maps, with deduplication, place caps, and direct Maps links.
- Kept route execution deterministic with validated waypoints, a two-call Routes limit, friendly fallbacks, and no raw provider data in the public result.
From a loose idea to a route

The primary journey is deliberately small: choose the city, choose run or cycle, describe the start and desired experience, then plan. Technical evidence remains available in the architecture, but the public surface leads with the map and the route someone can use.
Agent and routing stack
Traveller request
↓
Gemini 3.5 Flash + Google ADK
↓
Curated city route concept
↓
Google Maps Grounding + optional City Data MCP
↓
Deterministic waypoint validation
↓
Google Routes (WALK or BICYCLE)
↓
Map, named stops, summary, and share actions- One primary Gemini planning request, with at most one malformed-output retry.
- No more than four place searches, five route waypoints, or two Routes attempts for a normal plan.
- Running uses Google walking geometry; cycling uses bicycle geometry and retains the relevant routing caveat.
- Requested distance and duration are treated as useful guidance rather than false exact optimisation.
A route that travels with you
