The model never writes SQL
What the model sees is the catalogue: which datasets exist, what fields each has, and what can be measured. What the model produces is a query recipe — which dataset, which range, broken down by what, measuring what. Building and running the query is the engine’s job. Generated SQL would break three of this product’s rules at once. The organisation filter is a predicate every query carries by hand, and generated SQL forgets it silently rather than loudly. The rows you send are versioned, so a query without the liveness predicate counts superseded versions too. And a model that can write SQL against a customer’s schema can write any SQL against it. With a recipe, the worst a wrong plan can produce is an irrelevant table.Three things are therefore guaranteed in code rather than in the prompt: a dataset you lack
permission for is never described to the model and never executed; every dataset carries the
organisation predicate at its source; and the range is resolved in the organisation’s
calendar.
The datasets you can ask about
The list you see on the screen is the one your permissions reach.Decisions — fields and measures
Decisions — fields and measures
Break down and filter by: outcome, rule set, record type, customer or card (the pivot
value), review status, whether a case was opened, whether it errored, rule set version,
decided at. Score is filter-only — “score 80 and above”.Measures: decisions, distinct entities, average score, highest score.
Rule evaluations — fields and measures
Rule evaluations — fields and measures
Break down and filter by: rule, rule set, whether it fired, whether it errored,
customer or card, evaluated at.Measures: evaluations, times fired, errors, score contributed, decisions covered.Score contributed counts only rules that fired. Counting the rest would report the
score a rule could have contributed — a different number, and a misleading one.
Cases — fields and measures
Cases — fields and measures
Break down and filter by: status, outcome, queue, assigned analyst, late or on time,
customer or card, opened at, due at, went late at.Measures: cases, distinct entities, distinct analysts.Lateness is not recomputed from the deadline; it is read off the recorded breach. A case
whose deadline was extended afterwards does not lose that it was once late.
Ranges and the clock
A range is written relatively —today, yesterday, this week, last month,
last 7 days, last 12 months, all time — or as two dates. Relative, because a report
saved as “this week” should still mean this week next month.
Calendar ranges are resolved in the organisation’s time zone: “today” starts at midnight
in Istanbul, not at midnight wherever the container runs. The last 24 hours is a rolling
window and takes no zone at all.
It is the same distinction the rule engine draws — so that a rule and a report phrased the
same way count the same rows.
Breakdowns, measures and limits
- Time grain: day, week, month, quarter, year — or none.
- At most two categorical breakdowns and four measures.
- The default row ceiling is 100 and the maximum is 500. This produces a report, not an extract.
- The result renders four ways: table, bars, line, donut. You can switch after asking.
When the question is not clear
If a question could mean more than one thing, the screen does not invent a table: it asks back. If a breakdown cannot be computed in the database, it says so and asks you to simplify — which combination it was is written to the system log.Keeping a report
A report worth keeping is saved under a name, and can be shared with the rest of the organisation. What is saved is the recipe, not the table: the report re-runs each time it is opened, and a relative range means that day’s range.Ask AI
The same report engine runs from the chat screen, where the table appears under the answer.