A map is a document.Documents have versions.
The studio composes materialized datasets into layers you style, filter and cross-filter. What you save is not a screenshot of a view — it is a versioned asset with an immutable published body, which is what makes a shared map reproducible a year later.


The working surface, control by control
Layers
one per materialized datasetAdd a layer for any dataset the platform has profiled and can place. Fill, stroke, stroke width, point radius, opacity, ordering and visibility are per layer. Only profiled datasets are offered, so a layer cannot be created against coordinates whose projection is unknown.
Styling from the product's tokens
no literal colour in the clientLayer paint resolves through the design system's tokens rather than through hard-coded values — the client is checked for literal colour and fails its build if one appears. Switching the brand palette therefore repaints the data as well as the chrome.
Filters
categorical · range · temporalFilters attach to a layer and compose. A filter a widget authored is tracked back to that widget, so deleting the widget removes its filters atomically instead of leaving the map filtered by a control that is no longer there.
Widgets
category · histogram · formula · timeseriesA widget reads a column and filters the map. Category widgets list values with their counts; histograms bin a numeric column; formula widgets aggregate with count, sum, avg, min or max; time-series widgets brush a period.
Cross-filtering
every widget filters every layerSelecting in one widget filters the map and recomputes the others. That is the difference between a legend and an instrument: you can ask a question of the data by clicking, and the rest of the view answers.
Time replay
bound to a profiled temporal columnWhere the profiler identified a temporal column, the studio offers a timeline to scrub or play. It appears only when such a column exists, so the control never implies a time dimension the data does not carry.
Basemaps
Plan IGN and othersThe basemap is part of the saved document, so a published map opens on the backdrop it was authored against rather than on whatever the default happens to be that month.
Analysis from the map
isochrone · route · geocodeStart an analysis from the view you are looking at. The result is registered as a dataset, profiled, and available as a layer — so the next question starts where the last answer landed.
Published, shared, embedded — and still inside the tenancy model
Publishing a version freezes the document and hashes its body. A share token then makes that version readable by someone with no account, and the embed puts it in another page. The token is a principal with a scope, not a hole cut in the policy: it can reach exactly what it was granted and nothing adjacent.
- Immutable published versions, hashed, so a shared link resolves to the exact document that was shared
- Share tokens for readers without accounts
- An embed mode for putting a live map in another page, with an optional conversational panel
Only datasets the platform has measured
A layer can only be built on a dataset that has been materialized and profiled with an inferred CRS. That is why the catalogue distinguishes Registered from Profiled so insistently: the distinction is what the studio enforces.


Compose your own layers
Bring two datasets you have never managed to look at together, and we will put them on one map.