Definitions scattered everywhere
One "revenue" can live in three prompts across three agents, and they drift apart fast.
Metrics, dimensions, business terms and join semantics become a reviewable, versioned model —
so business users can ask in plain language while agents, reports and APIs share one definition
Getting it to mean the same thing every time is the hard part
The usual approach stuffs schema, column comments and a few SQL examples into a prompt and lets the model emit physical SQL. It validates quickly, then drifts as the business grows.
One "revenue" can live in three prompts across three agents, and they drift apart fast.
The same orders table can be joined differently per question, quietly doubling amounts.
A single new column can silently change what a production query covers.
A new few-shot example usually fixes one phrasing. Reword it, or swap models, and it returns.
The dangerous failure is not "no answer". Refusals and clarifications are visible to the user; a plausible-looking wrong number is not.
Every query passes five stages. If any step cannot prove safety, it never reaches the database.
Maps natural language onto published business names via the dictionary and semantic index
Emits business names only — no physical tables, columns or join clauses
Verifies members, filter values, aggregation and that every confirmation was honoured
Binds frozen safe join paths and compiles parameterised physical SQL
Read-only AST allowlist, row cap and timeout, executed in a read-only transaction
The model proposes, the compiler decides — verifying is easier than choosing. Swapping the chat model never changes a metric definition.
From semantic modelling and release governance to querying, diagnostics and feedback loops
Business definitions are model data, not prompt attachments
The catalog holds Model, Relation, Metric, Dimension, Term and DimensionValue. Names, aliases, formulas, default aggregations, additivity, time axes and real dimension values are all governed resources.
AI speeds modelling up, but output is always a reviewable draft
AI proposes entity names, field roles, metric and dimension drafts and aliases. Every suggestion lands in a Candidate Revision; anything overwriting human work is unchecked by default.
The LLM never writes the final SQL
Scope is not picked by a router up front. The model writes business-name S2SQL and the compiler tries each real scope: exactly one success binds it, zero means the question crossed fact roots, several converge to the coarsest grain.
The system states how it read your question instead of deciding silently
Colleagues ask in plain language, stages stream as they complete, and the answer card shows the assumptions the system filled in. Follow-up questions and drill-downs continue from there.
An ask-your-data system you can test and debug like normal software
Every query produces a fixed-stage timeline showing whether the failure happened in mapping, parsing, correction, translation or execution, exportable as redacted Markdown.
Phrases the system could not catch are not simply lost
Refusals, clarifications, model guesses, unknown values and thumbs up or down all land in one inbox, aggregated by phrase and fed back into modelling.
From connecting a source and modelling semantics to asking and diagnosing






Data sources, modelling, compilation, governance, diagnostics and self-hosting
Where the two approaches diverge on the same natural-language question
| Concern | KnowFlow Analytics | Direct Text-to-SQL |
|---|---|---|
| Business definitions | Metrics, dimensions, terms and value dictionaries live in a versioned catalog | Written into prompts, doc snippets or few-shot examples |
| Joins and grain | Cardinality confirmed by humans; safe paths and fact roots frozen at publish | Inferred by the model from schema, per question |
| SQL generation | LLM emits business-name S2SQL; the compiler produces parameterised SQL | The LLM emits physical SQL directly |
| Ambiguity | Business candidates are shown for confirmation, and the choice must be used | Edit the prompt, add examples, or silently pick one |
| Reuse | One release serves agents, UI, APIs, evaluation and data apps | Usually bound to a single agent or entry point |
| Change control | Candidate revision, review, validation, publish, rollback | Editing a prompt can shift behaviour everywhere |
| Failure policy | Fails closed when members, paths, aggregation or version cannot be proven | Syntactically valid SQL may simply run |
Runs the same authenticated API a browser uses: import, model, publish, load held-out questions, ask, then compare row by row against reference SQL
| Dataset | Correct | Accuracy | Silent wrong answers |
|---|---|---|---|
| E-commerce | 12 / 12 | 100% | 0 |
| Cities & libraries | 11 / 12 | 91.7% | 0 |
| Music (holdout) | 9 / 12 | 75% | 0 |
| Total | 32 / 36 | 88.9% | 0 |
This is a controlled experiment on specific datasets, not a general Text-to-SQL benchmark result. We publish it to show the evaluation runs the full path a user actually experiences, rather than feeding curated semantics straight into components.
Both run the same semantic model on the same query engine
| Capability | Open source | Commercial |
|---|---|---|
| Modelling workbench (sources, modelling, validation, feedback) | ✓ | ✓ |
| AI-assisted modelling, alias and value dictionary suggestions | ✓ | ✓ |
| Publishing, rollback and pre-publish quality reports | ✓ | ✓ |
| S2SQL compilation, governance gates, read-only guard, query API | ✓ | ✓ |
| PostgreSQL / MySQL / uploaded tables, multiple sources | ✓ | ✓ |
| Vocabulary gap inbox, Golden Suite, diagnostics export | ✓ | ✓ |
| Ask assistant: conversational questions, follow-ups, drill-down | — | ✓ |
| Reports: pinned cards, per-project archive, refresh, Excel export | — | ✓ |
| Project authorisation and data scope: multi-user RBAC, row/column rules | — | ✓ |
| Integration with the knowledge base, agents and enterprise accounts | — | ✓ |
| Enterprise accounts, LDAP / OIDC, WeCom sign-in | — | ✓ |
From business self-service to agents and embedded data apps
Colleagues ask about operating data in plain language without writing SQL or waiting on a queue, and can drill down from the answer.
Agents fetch business definitions through the resource API and issue governed queries without assembling tables, columns or joins.
Stable answers become report cards archived per project, refreshed on demand and exported to Excel as a full page.
Product teams use Analytics as a standalone query backend, reusing one set of metric definitions and permission boundaries.
Bring your real schema, your metric definitions and your typical questions, and run one full modelling-to-answer cycle with us