One spatial fact, designed to travel.
A collapsed card with a mini map, two to four KPIs and one sentence; expanded, the full workspace with filters and an explorable map. Same data, same beat, two layouts. Place it on a dashboard, in a chapter, on any website, or in your product via SDK.

Two states, one binding
Design the collapsed card and the expanded workspace as two layouts bound to the same data and beat. Collapsed shows the fact; Open insights reveals the drawer (desktop) or a full-screen sheet (mobile) with filters, lists, charts and the map.
- Corner ticks and neatline on the card by default
- Live pulse and as-of stamp on the card
- Expanded state can be a dashboard or a story section

Embed anywhere, measure everything
A one-line script loader or a plain iframe. The runtime posts resize and event messages to the host page, so the card sits flush in your CMS. Viewer analytics count views, expands and selections per publish.
- <script src="https://spatly.io/embed.js" data-spatly="…">
- postMessage: resize, ready, scene, expand, select
- Domain-restricted publishing for your own sites

Distribution, not just pages
Spatly gets read where the audience already is: in a product dashboard, a newsroom article, a client portal. Insight Containers are how a spatial fact leaves the GIS team without leaving the source of truth.
- Same permission model as the workspace
- Agents can create_insight_container over MCP
- Badge removable on paid plans

- Works inside dashboards and story chapters
- SDK for React and vanilla hosts
- Password and unlisted modes for internal use
Ship the insight, keep the source.
Bind a card to a live metric and drop it in a page. Then open it.
41.0082°N 28.9784°E · z 11.3 · ⟂ 0°