pois.world — AI-driven build of an open map platform

Site:

https://pois.world

What pois.world is

A map platform built around one idea: every place has a story. A POI (Point of Interest) is the heart of everything — a real location on the map that connects people, photos, videos, discussions, and tags.

You start with the place; everything else attaches to it.

What you can do:

  • Create POIs anywhere on the map — a park, restaurant, viewpoint, construction site, anything. Pick a category, name it.

  • Add photos and videos directly to a place. Build a visual history that anyone can browse.

  • Tag & organize with hashtags (#favorite, #camping, #street-art). Private for yourself, or shared. Filter the whole map by any tag.

  • Comment & discuss — every POI has a live, real-time discussion thread.

  • Share links — each POI has a direct URL; send it to anyone.

  • Temporary POIs — for pop-up markets, food trucks, seasonal events.

  • Notebook canvas — drop “virtual” POIs as place-anchored thoughts, to-dos, sketches.

  • Spatial journal / Logbook — dated entries per POI. The map becomes a timeline; pan it to read everywhere you’ve been.

  • Parcels (behind a feature flag) — ~1M virtual land parcels, claimable for $1: name on the map, custom colour and banner, moderation rights for your area.

No account needed to browse, create POIs, comment, or tag. Tagline: “Location first, everything else follows.”

Architecture (scope)

Six microservices, seven shared libraries, ~71k LOC.

Backend on FastAPI + SQLAlchemy async + GeoAlchemy2 + PostGIS (~1M parcels of spatial data). Real-time over a unified /ws/live WebSocket multiplexing map events and per-POI chat over Redis pub/sub. Chat lives on a 3-node ScyllaDB cluster; media on MinIO with imgproxy for transforms; vector tiles served from martin.

Frontend on SvelteKit + Svelte + TypeScript, Tailwind, shadcn-svelte; MapLibre GL JS for 2D, CesiumJS for 3D, Turf.js for geometry, dash.js for video.

OSM data is integrated via Overpass; geocoding via Nominatim. Both run in-cluster. Docker Compose for dev, Kubernetes for prod.

AI-driven development

Built agent-driven from day one. The platform is both built by agents and queryable by agents:

  • Workflow: Concept Plan Spec Code Feature — a hard rule. Every non-trivial change starts as a written plan or spec; agents work against the document, not against a chat thread.

  • Spec / Plan / Feature registry (S0NN, P0NN, #FNNN) is referenced from code and PRs — every line traces back to a documented decision, for humans and agents alike.

  • MCP server (pois-mcp) exposes the platform to AI agents natively — assistants can browse POIs, query state, and act through tools.

Result: a six-service platform with ~71k LOC maintained by a single developer. Agents handle most of the boilerplate; a strict written spec keeps the architecture coherent.