Monday, 8:40. The leadership meeting is at nine. The dashboard was refreshed overnight and is exactly as clear as it was last week: a bar chart, a trend line, a ratio by category. Somewhere in it is the one thing that moved. Finding it, working out why, and deciding whether anyone needs to act is the twenty minutes nobody has before nine — so it happens in the meeting, out loud, from memory.

Most BI tools answer this with a scheduled PDF. The PDF arrives on time and says nothing the dashboard did not; it is the same chart, in an attachment. This post is about the three things InsightViz sends instead, and the rule that decides what is allowed into the email.

From one answer to a story

Press Why? on a chart and InsightViz works out what drove the change — the two periods, the breakdown by every business dimension, the member that carried it — from the rows, under the reader’s own access rules. That answers one question about one chart, once. At the foot of the explanation is a button that keeps the question: Make this an insight.

An insight is a short plan of parts. Each part is a governed query through the same compiler as every dashboard panel; a run turns the plan into a story — a headline, the figures that matter as tiles, each part’s chart and sentences, a synthesis, and what to do with an owner against each action. This is the one made from the sample dashboard’s sales panel:

Insight
A published insight: August 2025 High-band sales fell to $2,344, four figure tiles, the month-by-month chart for the dashboard’s filtered scope, and the five-part plan
Read the scope line first. The story is about the dashboard’s own filtered view — three regions, the High sales band, two segments — and says so above the headline. The plan on the right is what ran: four queries and a synthesis.

There are four ways to get one, and they end in the same place:

Made fromWhat it holdsWho starts it
A panelThe explanation you just read, kept: the trend, the breakdowns that drove it, a synthesisAnyone who pressed Why?
This weekOne per dashboard: every panel’s latest period against the one before, kept to the panel’s own breakdownThe dashboard’s editor, once
A proposalQuestions the AI suggests are worth asking of the dashboard; Build on this makes one yoursAnyone, from the Insights sheet
A briefA question in your own words over a model; the plan is shown before anything runsAn editor

Every figure is checked, and the check is on the page

A story is sentences, and sentences are where a language model is most tempted to round, combine or invent. So after every run, every number in every sentence is matched back to the rows the parts returned: quoted directly from a cell, re-derived by one step of arithmetic between two cells, or found somewhere in the table other than where the sentence puts it. The mark beside each claim says which. Click one and the sheet behind it opens:

Behind this claim
The sheet behind one claim: $2,344 traced to the trend part, the row it was read from labelled Aug 2025, and buttons to open it by region, category, segment, sales band or over time, with the over-time chart drawn
One claim, all the way down. Where each figure came from, the row the sentence is about, and the next cut of it — here, over time — one click away.

Two things follow from that check, and they are the rest of this post. A story with figures that did not trace cannot be published without someone saying so on the record. And only a published story ever leaves the building.

flowchart LR
    A["A question
panel · this week · proposal · brief"] --> B["The plan
parts, each a governed query"] B --> C["A run
charts · sentences · synthesis"] C --> D["Every figure matched
to the rows it came from"] D --> E{"Publish"} E -- all traced --> F["A version
readers · dashboard panel · email"] E -- untraced --> G["Refused — or published
with an untraced mark"]
The check sits between the run and the reader. A draft is for the person who made it; a version is what everyone else sees.

On the page the team already opens

A published insight can sit on the dashboard grid like any other panel. It re-runs at the page’s filters: choose East and the story is about East, with East’s figures traced against East’s rows. A slice that was already worked out is served from cache and says when it was computed, because an old number that looks current is worse than a blank.

Executive Overview
A dashboard with the published insight placed as a panel: the headline, four tiles, the trend and what to do, marked cached with the date it was computed
The story as a panel. Headline, tiles, the trend, what to do — and Open for the whole story with every claim.

Then make it arrive

Watch on the dashboard holds the two things that turn a page into something that comes to you. An alert checks one panel’s figure on a schedule and mails its recipients when it crosses a line — and every Why? proposes one, with a threshold taken from the series’ own variance rather than a round number someone guessed. A subscription mails the dashboard as a PDF or an image on a schedule, with the filters it was made with.

Watch this dashboard
The Watch panel: an alert for sales below $5,455 on Sales by Region, checked on Fridays, and a weekly PDF subscription to the leadership team
One alert, one subscription. The threshold came from the explanation’s own proposal; the schedule reads in words, not cron.

What makes the subscription different is the body of the email. Above the attachment it carries What changed — the panels that moved most since the previous period, with the driver under each — and, when the dashboard’s weekly insight is published, its headline, its summary and what to do. The person reading on a phone at 8:40 has the two lines that matter and the reason before they open anything.

In the emailWhere it comes fromChecked?
The dashboard, as a PDF or imageRendered as the subscriber, with the subscription’s filtersTheir access rules apply
What changedEvery panel’s latest period against the one before, rankedComputed, not written
The weekly story’s headline, summary and actionsThe latest run of the published version onlyPassed the publish check
A draft story—Never sent

Why a draft never goes out

Publishing is where a story with untraced figures is refused. If the email carried the latest run regardless, the check would be a page in the console that a scheduled job walks straight past. An email is a copy of the data that leaves the building and is forwarded without its context; it gets the stricter rule, not the looser one. A dashboard with a weekly insight still in draft sends its PDF and What changed, and no story.

None of that needed an analyst on Monday morning, and none of it said anything the rows do not support. The analyst’s afternoon went into the question the story raised and could not answer — why Corporate ordered less — which is the afternoon worth having.

4ways to start an insight
1standing weekly story per dashboard
0draft stories sent by email
1click from any claim to its rows

What it does not do

  • It does not know the world. A story explains what the rows show. Why a customer ordered less is a question for a person; the story says that, and names what would answer it.
  • It is only as good as its traced share. The share of figures that traced is printed under every story. A story at sixty percent is a draft worth reading and not one worth sending, which is the point of the publish check.
  • It compares periods the way the data is grouped. A brief that asks about “early versus late 2025” is answered from monthly rows unless the plan groups them. The planner is told to group them, but a story can still lean on single months — read the question and the grain printed on each part.
  • Schedules run in UTC. Pick the hour accordingly; the panel says which time zone it means.

If your Monday starts with someone screenshotting a chart into a chat and asking “anyone know why?”, that is the meeting this was built to get ahead of. Bring one of your dashboards and we will set the weekly story up on it.

← All posts   Request a demo