AI data analyst
No signal when
the number is wrong.
A chat analyst always prints something plausible — right or wrong, it reads the same. SQAI is the AI data analyst built the other way around: a deterministic engine computes every figure, and every figure carries the hash to replay it.
Plausible is not provable.
IIThe analyst ledger
What it answers. What it can prove.
Same question, same digits, two very different objects. The left column is an answer. The right column is a record — plan, invocation, and computation hashes that rerun to the same bytes.
the analyst ledgerevery row ships its hashes
№ 01region = "east" · sum(revenue)Total revenue, east region
Five of twelve rows matched. Rerun it in TypeScript or Python — the same hash comes back.
№ 02finance.npv(0.1, [-1000, 300, 420, 560, 680])Net present value at 10%
All fifteen digits, byte-identical across TypeScript and Python.
№ 03finance.npv(rate, revenue)The same module, bound to a live column
Computed in the engine, never in the chat — warm in 0.83 ms.
Identical digits. Only one column survives an audit.
IIISame model, twice
0 of 16, then 16 of 16.
Sixteen quantitative questions, one model, two runs. Left: the model does its own arithmetic. Right: SQAI's engine computes and the model reports. Same prompts, same data — the only change is who owns the number.
The model is good at reading the question. It was never built to be the calculator. Why engine answers replay exactly →
IVThe desk
445 modules on call.
An analyst is only as strong as the desk behind them. The typed plan names a capability — finance, risk, statistics, time series — and the engine computes it on the pinned runtime: float64, single-threaded, the same bytes every run.
445compute modules in the contract
- 0.83–0.93 ms warm compute
- sub-ms aggregations, in process
- ~110 s one-time provision
- finance.npv
- net present value of a cash-flow series
- finance.irr
- internal rate of return
- risk.beta
- sensitivity of a return series against its benchmark
- stat_tests.pearson_r
- correlation, with the test statistic
- regression.ols_multiple
- multi-factor drivers in one pass
- timeseries_stats.holt_linear
- trend forecast over a time series
VTwo kinds of analyst
Approachable is not verifiable.
Prosumer analysts optimize the front of the answer — chat in, chart out, paste it in the deck. SQAI optimizes what stands behind it: a read-only surface, a policy your code sets, provenance on every figure.
Read-only by construction. The model can only request; your allow-list decides. How the policy narrows →
VIQuestions
Asked and answered.
What is an AI data analyst?
Software that turns plain-language questions into computed answers over your data. Most are chat-first: a model reads your file and improvises the analysis. SQAI is tool-first: the model translates the question into a typed plan, a deterministic engine computes it, and the answer returns with the hashes to replay it exactly.
Can I use SQAI instead of a ChatGPT data analyst?
If you need numbers you can defend, yes. A chat analyst is built for approachability — upload a file, get a plausible figure. SQAI is built for verifiability: the model never does the arithmetic. On sixteen quantitative questions, the same model scored 0 of 16 alone and 16 of 16 with the engine computing.
How do I know the number is right?
Every answer carries plan, invocation, and computation hashes over the canonical input and result. Rerun the request and the bytes match — in TypeScript and in Python. If the data's schema changes underneath you, the run fails with schema_revision_mismatch instead of quietly returning a different number.
Is it fast enough for interactive analysis?
Aggregations answer sub-millisecond, in process. The 445 compute modules answer in 0.83–0.93 ms once warm; provisioning the engine is a one-time ~110 s.
Does the model read my whole dataset?
No. The engine reads the data; the model sees at most 25 rows, 250 cells, and 32,000 bytes per answer — and any truncation is declared, never silent. The whole surface is read-only by construction.