The analysis engine
Every statistic is computed from the raw respondents, not estimated by a model. Every AI-written claim is re-derived from source data before it ships, or it doesn't ship. This page is the methods section: the tests we run, how the AI is used, and the guardrails that keep it honest.
The engine
Piaza runs the analysis a senior quant would run by hand, deterministically, at render time. No approximations, no model in the loop for the numbers. Here are the methods and the formulas behind them.
Every crosstab arrow tests a segment against Total. Categorical questions use a χ² test of independence. Bases under threshold are suppressed and flagged, never silently tested.
Proportions get the Wilson interval, which stays inside [0,1] and behaves at small n and extreme p. The naive p̂ ± 1.96·SE approximation is never used.
NPS is promoters minus detractors, so its variance is not a single proportion's. Piaza uses the correct variance for the difference, then a 95% band on the −100 to 100 scale.
Supplied-column weights are applied consistently, and the effective base is reported so nobody over-reads a weighted n. The AI narrative carries the design effect through, so it never quotes the raw n as if it were the real precision.
Open-ends become a proportion: mentioners over answerers, with a Wilson CI. Demographic skew on a theme is a two-proportion z against the base. Theme-to-metric bridges compare mentioners and non-mentioners with a two-sample z on means.
Banner plans are segment trees: nested AND / OR / NOT with percentile operators (≥p, ≤p, between-p) and low-base suppression. Scale, likert, CSAT, CES, NPS, numeric, constant-sum, matrix (T2B / B2B / net), rank-order (#1 / top-N / mean rank), and multi-select (respondent % vs response %) each get their correct treatment.
The role of AI
The division of labour is deliberate and absolute. Deterministic code owns every figure and every quote-to-respondent link. The language model is handed a constrained, enumerated evidence surface and asked only to organise and explain it.
≥ 0.5, else flagged unverified.Each agent checks the previous agent's work, and where a deterministic rule is enough, no model is called at all. Scoring that can be exact is exact.
Guardrails we believe in
They work as a stack, not a single check. L1 and L6 stop a bad number upstream, L2 flags soft violations, L4 scores each section, and L5 lets the reader re-run the check. The hard gate is L3: any figure that can't be re-derived from the raw data is rejected, not softened.
N, per-field N, subgroup N, margin of error. A number not in the tables is disallowed in output.N.unsupported_evidence.Ground truth wins over LLM convenience. Always. And insights are frozen at approval, so the report reads identically in ten years.
Nothing is a black box
Layer 5 is not a marketing promise. It ships in the file. Every significance arrow, interval, and rate opens its own working: inputs, formula in notation, intermediate values, result, and a one-line verdict a researcher can quote.
In production today
Not a roadmap. These run at generation time on real projects, and travel inside the delivered report.
Open a generated report, click a number, and watch it rebuild from the raw respondents.
Or email hello@piaza.ai