Ask in a sentence. Get a dashboard you can defend in the meeting.
Everyone in the business gets an analyst. Ask in plain language and get back a governed answer, a dashboard, and a report that runs every Monday. The query runs inside the warehouse you already govern, under credentials you issue.
Runs inSnowflakeunder credentials you issue
- At or above target
- Under target
- West-1.42M
- South-0.95M
- Central-0.30M
Four reasons the answer lands after the decision.
None of these is a modelling problem. They are the reasons a question takes three weeks to become a number, in an organisation that has already bought the tools.
Every question is a ticket
Someone in operations wants a number. It joins a queue behind eleven other numbers, ordered by whoever asked most recently. The analytics team is not slow; it is a shared service with one door.
The data is in nine systems
The ERP, the CRM, the warehouse, and a spreadsheet three people maintain. The join that answers the question crosses four of them, so it gets done by hand, once, and never quite the same way twice.
Two dashboards, two numbers
Both are labelled revenue. Neither says which definition it used. The meeting spends its first ten minutes deciding which chart to believe, and the next ten deciding to check with the analyst.
The decision does not wait
The pricing call is made on Thursday. The analysis arrives the following Wednesday and confirms what the room had already settled on. Nobody reads past the first page.
It shows its working, then waits to be approved.
This is the part that decides whether an executive trusts a number a model produced. Every step is visible before the next one runs, and nothing is published until a person says so.
Someone asks in plain language.
No SQL, no modelling ticket, no request form. A question typed the way it would be asked out loud, by whoever needs the answer.
Analytics/Regional performanceIllustrative dataQuestionPlanAnswerReviewScheduledOpWhich regions missed target last quarter, and by how much?
Asked in a chat, by the person who wanted the answer.
No SQL. No modelling ticket. No request form.
The agent writes a query plan, not SQL.
It emits a structured spec: measures, dimensions, filters. A compiler produces the SQL, every operator is type-checked against its field, and a plan can only reference an existing measure. What that cannot catch is a valid plan answering a slightly different question. So you read the plan before the chart.
Analytics/Regional performanceIllustrative dataQuestionPlanAnswerReviewScheduledQuery planMeasuressum(revenue)sum(target)DimensionsregionquarterFiltersquarter is Q3status is closedCompiled to one query, run in your warehouse. Every operator is type-checked against its field.
contains is not a valid operator on a numeric field
The answer arrives with its working attached.
The number, and the definition behind it: which measure, at which grain, with which rows excluded and why. Checking the answer means reading the plan, not reverse-engineering a query.
Analytics/Regional performanceIllustrative dataQuestionPlanAnswerReviewScheduledRegion Revenue Gap West 2.85M -1.42M South 4.10M -0.95M Central 3.60M -0.30M How this was computed- Measure: sum(revenue) against sum(target)
- Grain: one row per region, per quarter
- Excluded: 214 cancelled orders
The dashboard is a draft until someone approves it.
Plans move from draft to reviewing to finalized, and the preview gate is required before finalization. Each version stays tied to the conversation that asked for it, so the question and the artefact never come apart.
Analytics/Regional performanceIllustrative dataQuestionPlanAnswerReviewScheduledDraftReviewingFinalizedKPI rowRevenue against targetGap to targetDetailVersion 3, tied to this conversation
Preview required before finalization
ApproveRequest changesThen it runs on a schedule, where the team already works.
The approved dashboard becomes a recurring report, delivered into the tools people are already in. A watcher raises the figures that moved instead of waiting to be read.
Analytics/Regional performanceIllustrative dataQuestionPlanAnswerReviewScheduledEvery Monday, 07:00Delivered asTeam channelPDFDOCXWatcher Raise any region more than 5% under target
Recent runs- Mon 07:00Delivered1 raised
- Mon 07:00Deliverednothing raised
Five frames from the same walkthrough. Values are illustrative; the states are the product.
Nothing is copied to answer a question.
Query the warehouse where your data already lives, and keep governed tables of your own for the data that has no home. A plan compiles the same way against both, and the same engine permissions both.
The query runs there, under credentials you issue. Nothing is copied out to answer it.
For the data with no home, and for the numbers an agent is allowed to change.
One plan, two destinations, one permission model. Import is an on-ramp, not the way in.
| ContractText | RegionSelect | RenewsDate | ValueRollup | MarginFormula | OwnerEmailPII |
|---|---|---|---|---|---|
| CTR-4821 | North | 12 Mar | 1.24M | 38% | Hidden from this agent by field policy |
| CTR-4830 | South | 02 Apr | 0.86M | 31% | Hidden from this agent by field policy |
| CTR-4844 | West | 19 Apr | 2.10M | 44% | Hidden from this agent by field policy |
| CTR-4851 | North | 30 Apr | 0.42M | 27% | Hidden from this agent by field policy |
Rollup summed from the line items table
Formula parsed, not executed
Hidden from this agent by field policy
It reads your warehouse in place
Connect Snowflake, BigQuery, Databricks or Postgres and the plan compiles to a query that runs there, under credentials you issue. Nothing is copied to answer it, so retention, entitlements and the regulator still have one copy of the data to describe.
- Credentials you issue, scoped to the tables you name
- Where the source already filters rows, that filter still applies
A Postgres table, not a spreadsheet
For the data that never reached the warehouse: the tracker a team runs its week on, the reconciliation somebody keeps in a sheet. Twenty-six field types, rollups over related tables, formulas parsed rather than executed, five views over the same rows. An agent can write here; every write is attributable.
- Rollups sum a related table, so a total is derived rather than typed
- Every row change is recorded field by field, with the actor and the conversation behind it
Import is for the spreadsheet on a laptop
On import, every numeric field gets sum, average, minimum and maximum, and every date becomes a five-level hierarchy, year down to day. Drilldown works on the first afternoon, not after a modelling project. It is the on-ramp for data nobody ever modelled, not for the fact table you already govern.
- Measures are generated, then yours to rename, hide or redefine
- The date hierarchy is what makes a chart drillable without setup
One definition of revenue, and the plan has to use it
A measure is defined once, by the person who owns it, and every plan that touches revenue resolves to that definition. The agent cannot invent a measure. Definitions carry an owner and a version, so when a number moves you can see whose change moved it.
- Written instructions teach it your vocabulary; they do not define your metrics
- Sensitivity classes on every field, and a redacted field never reaches model context
One question, five angles, one review.
The orchestrator explores overview, trend, comparison, distribution and detail in one turn, and hands you one set to accept or reject. You keep what earns a place; the rest is discarded, not saved. Nothing gets published by being generated.
Build me a view of regional performance for the Thursday review.
- OverviewdraftKPI row, revenue against target
- TrendsdraftTrendline by month, moving average
- ComparisonsdraftRegion against region, waterfall
- DistributiondraftBoxplot, treemap by segment
- DetaildraftGrid view, drillable to the row
Five angles, one review, one dashboard kept. Nothing survives by default.
Ask a follow-up of a chart
Point at a widget and ask why. The follow-up runs against the same query plan that drew it, so the answer and the picture cannot quietly drift apart.
The chart is the question, not a screenshot of one.
Drilldown you did not have to build
Year to quarter to month to week to day, derived from your dates when the table was imported. Click a column and the level below it is already there.
No hierarchy modelling, no cube.
It picks the chart, and you can overrule it
A trend gets a line, a breakdown a bar, a flow a sankey. The chart follows what the plan returned, not a picker you have to learn.
Composed for the question that was asked.
On Monday at seven, the report writes itself.
A finalized dashboard becomes a recurring run. It goes where the team already works, and a watcher raises the things that moved rather than waiting to be opened.
- Monday 07:00
The run fires on its own
The same query plan the dashboard was approved on, pointed at this morning. Nobody has to remember it is Monday.
- Recomputed
The numbers are re-queried, not copied
A scheduled run re-executes the plan against live tables. A stale screenshot with a fresh date on it is how a report loses a room.
- Composed
It comes out as a document
Report, proposal, memo, one-pager or letter, on your letterhead, exported to PDF and DOCX. Charts where a chart helps and prose where it does not, because a board pack is not a dashboard.
- Delivered
Into the tools people are already in
It lands in the place the team already spends its day, instead of waiting for someone to remember another tool. Access still follows the permissions the dashboard had.
- Watched
And the exceptions raise themselves
Set a threshold on a measure. When a run crosses it, the run says so. The report you actually open is the one where something happened.
The same permission model for your people and your agents.
An agent is not a service account holding a wide key. It is evaluated by the engine that evaluates your people, with groups and roles from your directory. On top of your entitlements, not in place of them.
Field-level, in each direction
Read and write are separate allow-lists. An agent permitted to read a column is not thereby permitted to change it, and neither list is inferred from a role name.
Row filters, and an intersection mode
Scope a caller to the rows it is entitled to. Where several policies apply at once, intersection mode grants only what all of them agree on, which is the setting a regulator asks about.
One evaluator, whoever is asking
A person and an agent hit the same decision. There is no second, looser path for machine callers to audit separately, because there is no second path.
Explain this permission
Ask why a caller can or cannot reach a field and get a structured answer back. Access reviews stop being a conversation about what somebody believes the policy does.
SOC 2 Type II and ISO 27001 certified, with the report and the statement of applicability available under NDA. HIPAA and GDPR obligations are met by the deployment itself: the data never leaves your perimeter, so none of it is ours to process.
It measures itself, too.
The same instinct pointed inward. Tokens by model and by agent, queue depth and wait, storage by location, attributed to the thing that spent it.
- Fast general
- Long context
- Embedding
- Vision / OCR
Tokens by agent
The attribution that matters most: spend against the thing that spent it.
Average queue wait
Plotted on its own scale. Seconds and slot counts share an x-axis but never a y-axis.
Usage telemetry is operational data about the platform: tokens, queues and storage, attributed to the agent that spent them. It is aggregated inside your network beside the agents that produced it, and none of it is a record of what any individual asked.
What it is made of.
The SOC 2 report, the ISO 27001 statement of applicability and the deployment architecture are available under NDA, along with a reference call on request.
- Ask
- Plain language, in chat or on a dashboard
- Query
- A structured semantic spec, compiled to SQL
- Sources
- Snowflake, BigQuery, Databricks and Postgres, queried in place
- Guardrail
- Filter operators type-checked against their field
- Semantics
- Measures and a five-level date hierarchy, on import
- Metrics
- Owned, versioned, and the only thing a plan may reference
- Fields
- 26 types, plus formulas, rollups and lookups
- Views
- Grid, gallery, kanban, calendar and form
- Charts
- 25 types, including sankey, treemap, funnel and heatmap
- Widgets
- 20 templates, and KPI cards with delta and trend
- Review
- Draft, reviewing, finalized, behind a required preview
- Identity
- SAML and OIDC, with groups synced from your directory
- Permissions
- Field allow-lists, row filters, intersection mode
- History
- Append-only, field-level, tied to the conversation
- Documents
- Report, memo, one-pager and letter, to PDF and DOCX
- Scheduling
- Recurring runs, with watchers on a measure
- Deployment
- On-premise, private cloud or air-gapped
What data leaders ask first.
See Exemplary AI in action
Book a demo and we'll show you purpose-built agents grounded in your own knowledge — deployed on your infrastructure.