On the AI Reports screen you write the question in plain language — “declines per day this month” — and get a table, a chart, and a short remark about what the table says.

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.
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.
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.
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.
These datasets are the platform’s own records. The event tables you send are not among them: that is where the personal data is, the rows are versioned, and aggregating them is a separate job with its own rules.

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.