Platform · Data analysis

Plain language in, governed SQL out

Text-to-SQL is easy to demo and hard to trust. The gap is everything around the query: what the columns mean, whose rows the asker is allowed to see, and whether the number can be reproduced next quarter.

  • PostgreSQL · MySQL · warehouses
  • read-only execution
  • SaaS or self-hosted
Query planread-only

Top 3 lanes by margin loss this quarter

select lane, sum(margin_delta) as loss
from fct_margin_daily
where quarter = '2026Q3'
  and region in (/* your data role */)
group by lane order by loss limit 3

The highlighted clause is added by the platform, not the model. Row rules follow the person asking.

lanelossshare
CTU-RTM-2.1 pts62%
SHA-LAX-0.8 pts24%
SZX-HAM-0.5 pts14%

The clause you didn't write

Governance is appended, not prompted

Asking a model to respect permissions is not a control. In DataFact the scoping clause is added by the platform after the query is generated, from the data role of whoever is asking.

That is the difference between a demo you can show and a system you can roll out to four hundred people who each see a different slice.

Capabilities

What makes an answer defensible

Speed is table stakes. These are the parts that decide whether the number survives contact with the people who own it.

01

Semantics

The model reads your definitions, not your column names

A column called amt_net_3 means nothing to anyone. Table and column descriptions, metric definitions and the rules your analysts apply by hand are held in an analysis model that every question is resolved against.

  • Table, column and metric descriptions maintained in one place
  • Business rules captured as rules, reviewable line by line
  • Ambiguous questions get a clarifying question, not a guess
02

Queries

Read-only, bounded, and shown to you

Generated SQL is visible next to the result. Execution is read-only with a per-request timeout and cancellation, so an expensive question cannot sit on your warehouse indefinitely.

  • Query text shown with the answer for review
  • Read-only execution with request timeouts and cancel
  • Result sets capped, with the cap stated rather than silent
03

Permissions

Row rules follow the person asking

Access is not a prompt instruction. Table-level and row-level rules bound to data roles are applied server-side when the query runs, so the same question returns the correct, different scope to a regional manager and to a group controller.

  • Table-level and row-level rules attached to data roles
  • Applied at execution, not asked of the model
  • Business-identity templates map a role to a visibility profile
04

Versions

Last quarter's number is reproducible

Every build of the analysis model freezes a snapshot. If a metric definition changed in March, you can see what it was, compare the two, and roll back — instead of arguing about which report was right.

  • Version snapshot per build, with a diff against the previous
  • Reproduce a historical answer under its original definitions
  • Roll back a definition that drifted

Beyond a single number

Questions that span both channels

The most valuable questions are not answerable from the warehouse alone. DataFact can hold a figure from a report and a row from a table in the same reasoning step.

  • Finance

    Margin moved — reconcile the warehouse trend against what the quarterly review PDF attributed it to.

  • Supply chain

    Supplier performance by lane, checked against the penalty terms written into the signed contract.

  • Compliance

    Which transactions fall outside the threshold defined in the current policy document, not last year's.

Point it at one schema question

Give us one schema and the questions your analysts get asked every week. We will show you the queries it generates and where the row rules land.

SaaS subscription or private deployment · No data migration either way