Dashboards
Save answers as cards, refresh them on a schedule, and get pinged when a number crosses a line.
A dashboard turns a one-off answer into something that keeps being true. Cards are saved from a conversation and belong to a database, so a dashboard always reads from one connection.
Card types
| Type | Made from |
|---|---|
| Chart | Any chart the agent produced |
| Table | A tabular result |
| KPI | A single-value result, or a number stated in prose |
| Text | Markdown you write yourself |
Cards have widths, so a dashboard lays out as a real grid rather than a stack.
Refresh
Saving a card also generates a refresh script: the query that reproduces it. From then on the card can refresh on an interval, from manual up to hourly.
Every card carries a "data as of" timestamp, so a stale number is visibly stale rather than quietly wrong.
Interactive controls
When a card is generated the agent may propose controls: a time range, or a select over a dimension. You choose which to keep. Control values are validated on every refresh, so a control cannot be used to smuggle in a different query.
Threshold alerts
Chart, table, and KPI cards can carry alerts:
Ping me when weekly churn goes above 5%Alerts are edge-triggered (they fire on the crossing, not on every refresh while the condition holds), and deliver to Slack.
Card health
Refreshes fail: a schema changed, credentials rotated, a source went away. Failures are tracked per card, surfaced as a banner on the dashboard, and notified rather than left for someone to notice.
Sharing
A dashboard can be published as a live read-only link. The public projection strips connection details, so a shared dashboard exposes the numbers and nothing about how they were fetched. Links are revocable.