Tim FinchProducts, systems, AI
HomeProjectsWritingWork with meAbout

Open to product, platform, and AI work.

I build evidence-backed AI products and the systems needed to operate them responsibly, usually where product decisions and real workflows meet.

GitHub ↗LinkedIn ↗Devpost ↗London / Remote

In this case study

  1. 01 Overview
  2. 02 Why it exists
  3. 03 How it works
  4. 04 Built with
  5. 05 Focus
  6. 06 From a loose idea to a route
  7. 07 Agent and routing stack
  8. 08 A route that travels with you
←Back to work

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

CityScope route planner showing city and activity controls beside a generated route map
The release UI keeps the request, generated route, named stops, and practical actions in one place.

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
Gemini handles intent and selection; bounded backend code controls providers, waypoints, and the public response.
  • 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

CityScope mobile route planner with a compact route request and map
The same route-first hierarchy remains usable on a phone-sized viewport.
Plan a route with CityScope ↗Read the CityScope build story →Open the CityScope repository ↗View the All Things Agentic Hackathon ↗

Where to look

GitHub ↗Demo ↗