Skip to content
UNI4C

The figures in a table or chart come from the query, not the assistant

It writes the query that finds them. The platform runs that query against your system and renders every row itself. If the answer needs a difference or a total, the assistant asks the query for it and the platform works it out on the rows. The assistant gets the row count and a small sample of the first rows, so it knows the shape of the result, and it is told not to read figures from them. The block on your screen is drawn from the full result, straight from your database, and nothing that could change a figure sits between the two.

Every figure on screen is a rendered query result

A block the platform built from the rows the query returned, with the call that produced it attached: the tool, the table, the filters, the record count, and a handle that runs the same query again.

What the platform rendered

  1. You asked: Which customers are over their credit limit right now?
  2. The assistant answered: Answered by the analysis model. Read as Customers over credit limit.

    Used 4 tools: Open a guide, Search saved knowledge, Read table fields, Read Business Central records.

    3 of the 42 customers with a credit limit are over it right now, by 123,550 DKK in total.

    Customers over their credit limit
    CustomerBalance (LCY)Credit Limit (LCY)Over by
    Nordisk Trædesign A/S412,900350,00062,900
    Vestjysk Maskinfabrik288,450250,00038,450
    Kolding Byg ApS197,200175,00022,200

    Read as Customers over credit limit · by customer.

    Source: Customer · Business Central · CRONUS Danmark A/S · Production. Columns No. · Name · #59 · #20. #20 not 0, #59 > #20. Result 3 rows · 42 read.

    Suggested next questions:

    • Show open entries for Nordisk Trædesign A/S
    • Which invoices are more than 30 days overdue?
    • Who owes us the most?
  3. Under the message box: Figures in a block are read from a live query when they are shown. The words around them are AI-generated and can be wrong.

What the assistant was told back

{
  "block": {
    "type": "table",
    "columns": ["Customer", "Balance (LCY)",
                "Credit Limit (LCY)", "Over by"]
  },
  "row_count": 3,
  "fields": ["No.", "Name",
             "Balance (LCY)", "Credit Limit (LCY)"],
  "computed": {
    "Over by": "Balance (LCY) - Credit Limit (LCY)"
  },
  "totals": { "Over by": 123550 },
  "truncated": false,
  "status": "rendered"
}

Column headers, field names, a row count, and one figure: the total of Over by, which the assistant asked the query for and the platform added up from the rows. Because a tool returned that total this turn, the sentence beside the block may state it. The block is drawn from the full result, not from anything the assistant typed, so it cannot round, soften or misremember a figure in it. The query also hands the assistant a small sample of the first rows to show the result's shape, with the instruction not to read figures from it; the Data page covers what is sent to the model.

The UNI4C portal's chat, redrawn, answering the example on a demo company, with the source and its technical details open. The fields told back are the ones the product returns.
The call

The tool and the table, by name and number

Customer (18), named with its table number, read through the read tool in the environment and company the session is connected to. A consultant can open the same table with the same filter, see the same 42 customers, and find the same three whose Balance (LCY) is above their Credit Limit (LCY).

The filters

Every condition the query applied

The filters are the definition of the metric, so they are shown rather than summarised. A figure quoted from a wider query and then pinned to a narrower one is caught by the platform and flagged, because the chart would stop matching the sentence.

The count

How many were read and how many matched

Both numbers, plus whether the read stopped early. A live read pages automatically to 2,000 records; past that the result says it was truncated and no total is drawn from it.

The handle

A path that runs the query again

Derived from the query itself and carrying no company, so the same handle answers for whichever company is asking. It is what pins the figure into a report, what a saved business term stores as its recipe, and what a daily check re-runs, each recipe at least once a week, to confirm the answer still holds.

On a Controller seat, the sentences around the block are checked too

The assistant still writes prose beside the figures: what it filtered, what it noticed, what it would check next. That text is the one place a number could slip in without coming from a query. On a Controller seat, every figure in it is checked before it reaches you: it has to appear in what the tools returned or were asked this turn, in your question, or in an answer you have already seen. Anything else is hidden behind a marker labelled not verified, which you can click to see what the model wrote.

  1. A rounded figure

    2 not verified

    What the model wrote

    Roughly 800,000 DKK across 4 users.

    What you see

    Roughly … DKK across … users.

    The rows said 812,400 across 3 users. A figure that was rounded, softened or misremembered is not the figure that came back.

  2. A figure the model wrote itself

    2 not verified

    What the model wrote

    The caption said 777 and the prompt 555.

    What you see

    The caption said … and the prompt ….

    Text the model authored is not evidence. A number it wrote into a caption cannot ground the same number in its prose.

  3. A caveat with invented counts

    2 not verified

    What the model wrote

    Only 500 of 3,901 rows are in this file. The export is incomplete.

    What you see

    Only … of … rows are in this file. The export is incomplete.

    Neither count came from a tool, the question or an earlier answer. The warning stays; the invented counts are hidden.

  4. A figure from the rows

    Passed

    What the model wrote

    Revenue was 812,400 DKK, a 12.3 % share of 3,901 rows.

    What you see

    Revenue was 812,400 DKK, a 12.3 % share of 3,901 rows.

    Every figure appears in the rows the query returned this turn, and the filter matches a figure in any of the formats it can be written in.

  5. Dates, times and IDs

    Passed

    What the model wrote

    Last 7 days (4 September – 10 September 2026), after 14:30, ticket #3, project PR0017.

    What you see

    Last 7 days (4 September – 10 September 2026), after 14:30, ticket #3, project PR0017.

    Dates, years, clock times, week numbers, quarters, list markers and identifiers are never treated as figures, in Danish, English, German or Spanish.

Cases from the filter's own test suite, each a separate turn, written out for this page.

And the query itself could not have overreached

Showing where a figure came from only helps if the query behind it could not have read something the person asking was never allowed to see.

It runs as you

Your own connection, your own token

Every Business Central connection belongs to one user and holds that person's own delegated credentials. The assistant reads through them, so Business Central enforces the permission. A company, a ledger or a mailbox you cannot open stays closed, and that limit is not an instruction in a prompt that a clever question could talk around.

Scope is below the tools

There is no tenant argument to get wrong

Where a tool could read across customers, the customer's identity is resolved beneath the tool layer and written into the query itself. The telemetry tools a customer gets take no tenant and no raw query, so they cannot be pointed at another tenant; free-form KQL is kept for UNI4C staff.

Encrypted at rest

AES-256-GCM in the application, on top of storage encryption

Conversations, their tool results, generated files, attachments, report snapshots and every stored credential are encrypted by the application before they are written to storage that is itself encrypted. The encryption is authenticated, so data that has been tampered with is rejected rather than quietly decrypted.

Everything is answerable

An audit log the application only appends to

Every state-changing path writes an entry naming who did it, what changed and when. The application only ever adds entries; no part of it edits or deletes one.

Support access is yours

UNI4C reads your chats only while you allow it

An administrator in your company decides whether UNI4C consultants may open your team's chats. While it is off, no one at UNI4C can read a chat, only see how many there are. Each change is written to the audit log and your other administrators are notified.

Where it stops instead of guessing

A confident wrong answer costs more than no answer, so several paths are built to end in a refusal.

A truncated read

It says it stopped

A live read pages automatically to 2,000 records and the result carries whether rows were left behind. A report refuses to aggregate a read that hit its ceiling.

An empty result

A blank block is refused, not drawn

An aggregate over no matching rows comes back as a single empty row. Rendering that as a dash would read as a zero, so the block is refused and the assistant says what it found.

An unsettled question

It asks, and gives you the options

When several customers match, or the period or the measure is ambiguous, the assistant asks a question with two to six one-click answers rather than picking one and being confidently wrong.

A full-table scan

It is refused unless you ask for it

A free-text pattern on a table above a quarter of a million rows with no indexed filter beside it is rejected, and the error names the fields that would seek instead. It runs only when you ask for a search across the whole table.

Prompts go only to model endpoints in the EU: Scaleway in France and Requesty's EU-only routes. Where each part runs, who processes what, and the answers a procurement checklist asks for are on the Data page.

Bring the question you think would break it

Ask it the question you expect it to get wrong, then check the source line it gives against Business Central. Start a trial to try it in the portal, or book a demo and test it with one of us on a tenant set up like yours.

Or write to us at hello@uni4c.ai