Maciej Sachse
/work/cityquest

/062025

CityQuest · Sopot 3D

Sightseeing as narrative, not checklist. Live social-media signals become intelligent Quest Points; an AI personalisation engine sequences them into a journey tailored to your profile and the city's real-time rhythm — an analytical constellation in the Industry 4.0 spirit.

role
Hackathon team — concept, data layers, UI
location
Gdańsk, Poland · pilot city: Sopot
org
StartupHack — Gdański Park Naukowo-Technologiczny
tools
React · Vite · MapLibre GL JS · OpenFreeMap / OpenMapTiles · Apify (Google Popular Times, Facebook, TripAdvisor) · Foursquare · Vercel
Live StartupHack prototype — 3D Sopot map · six data sources · crowd heatmap on a 24-hour slider · city quests by vibe and length

Overview

Is sightseeing just about checking boxes on a map? At StartupHack in Gdański Park Naukowo-Technologiczny we decided to challenge traditional tourism. The destination isn't the only goal — the true experience lies in the theme, the sequence of events, and the entire journey in between the points.

CityQuest works as an analytical constellation. Social-media scraping analyses real-time signals — crowd density, trending activity, attraction quality — to define intelligent Quest Points. An AI personalisation engine then links these points into a coherent path tailored to your profile and current needs, turning a static POI list into a dynamic scenario that adapts to the city's rhythm as it changes hour by hour.

The canonical example is a perfect date. The system doesn't just point you to a restaurant. It designs a cohesive roadmap where every step flows into the next — building atmosphere, dodging the crowd at peak hours, catching a viral spot at exactly the right moment. The future of urban exploration isn't more information; it's a narrative tailored to the individual.

Selecting a quest on the 3D Sopot map — green route polylines connect the numbered stops across the whole city, from the morainic hills in the west down to the Baltic shoreline on the east

Picking a quest — the route draws itself

Tap a quest card and the full polyline snaps onto the 3D map — every stop numbered, the whole sequence readable from a single bird's-eye view. It's the one interaction that turned a POI list into a scripted walk: you don't read the itinerary, you see it.

Crowd heatmap toggled on over the 3D Sopot map — a 00—23 time-of-day slider (Now: 18:00) sits at top-left and the Heatmap sources legend lists six toggleable layers: Crowds, Facebook events, Top places, Local gems, Photo hotspots, CityQuest community. Coloured blobs re-weight in real time as the slider moves

Crowd heatmap — six sources, one rhythm

The legend is the composer. Each source can be toggled independently and each is colour-coded so overlapping layers stay readable on a dense city map. Drag the 24-hour slider above it and the blobs re-weight live — Monte Cassino fills up in the evening, the beach peaks mid-afternoon, the pier catches sunset.

The solution — an analytical constellation for the city

A web app that takes stated user needs and turns them into a real-time itinerary. Tell it you're a Swedish tourist on a weekend, you want local cuisine, WWII history and the best nightlife — it composes a plan that says where to go, when to be there, and how busy each stop will be.

  • Live data constellation

    Google Popular Times, Facebook events, TripAdvisor reviews, Foursquare check-ins, Instagram + Wikimedia geo-tags and community check-ins — six sources unified behind one legend, each toggleable independently as a coloured dot on a 3D map.

  • AI personalisation engine

    Profile + stated needs + live signals → a sequenced Quest. Atmosphere, tempo, crowd level and theme are all part of the path the algorithm composes, not just the endpoints.

Live prototype

The interactive 3D map lives at cityquest-repo.vercel.app — Sopot as the pilot city, six data layers, a crowd heatmap on a 24-hour slider, and city quests tagged by vibe and length. Every module ships with seeded mock data so the app runs end-to-end on any laptop with zero API keys; swapping mock → live is a single env-var flip.

Live demo

Try the interactive prototype in your browser.

Open live demo →

Team

  • Maciej SachseMSc Architecture, TU Delft
  • Jan SachseAI specialist at Asseco
  • Filip BieszkeCo-creator — StartupHack