Ask a BI team what they would change about their estate and the answers are versions of one complaint: they cannot see what changed. A metric moved, a filter was added, a sheet was deleted — and the only record is the workbook itself, which the tool owns and nobody reads.

What a dashboard is, if you strip the tool away

A layout. A list of widgets. For each widget: what to ask (dimensions, metrics, filters) and how to draw it (a chart type, an x, some y’s, a series). That is it. Written down, it is a page of JSON:

{ "layout": { "columns": 12, "rowHeight": 32 }, "widgets": [ { "id": "sales_by_region", "title": "Sales by region", "x": 0, "y": 0, "w": 6, "h": 8, "query": { "dimensions": ["region"], "metrics": ["net_revenue"], "order_by": [{ "field": "net_revenue", "desc": true }] }, "chart": { "type": "bar", "x": "region", "y": ["net_revenue"] } } ] }

Three things follow from treating this file as the product rather than as an export.

1. It can be reviewed

A pull request that changes net_revenue to gross_revenue in one widget is a one-line diff. A reviewer sees it. In a workbook the same change is a re-saved binary and a commit message that says “updated dashboard”. Every version InsightViz publishes is a row with a note; restoring one is a click, and the diff between two is a diff.

2. It can be written by something other than the editor

Once the format is a document, the AI can write it. “Build me a dashboard of sales by region and month, with a KPI for the total” is the model writing three widgets into the JSON — the same JSON a person edits in the console. There is no second, special path for generated content, which is also why generated content is safe: it is data the renderer draws, never code the browser runs.

Charts are specs for the same reason

We never ask a model to write React or D3. A chart is {type, x, y, series}; the console turns that into Vega-Lite with the product’s palette and rules. Generated code cannot be persisted, versioned or trusted. A spec can be all three.

3. It can be promoted like code

Dev, test, prod. A dashboard document travels between environments the way a migration or a config file does, pointing at the model by name. The semantic model is a document too, so the metric it references travels with it. This is the property engineering-led organisations keep asking Tableau for and cannot get.

What it costs

A document-first dashboard is less expressive than a workbook that has grown for a decade. Dual axes, custom shapes, pixel-perfect crosstabs — some of that we deliberately do not support (a dual axis is the most common chart mistake there is), and some we have not built yet. The trade is a smaller, reviewable surface that an AI can operate. For most dashboards in most estates, that is the better deal.

← All posts   Request a demo