Natural-language analytics: how to query your data without SQL
Natural-language analytics lets you ask questions of your data in plain English and get charts back. Here is why naive text-to-SQL is unreliable and why a governed semantic layer is trustworthy.
Natural-language analytics means asking a question of your data in plain language, like “what was net revenue by region last quarter,” and getting a correct chart or number back without writing any SQL. The reliable way to do this is not to translate your sentence directly into raw SQL. It is to reason over a governed semantic layer: a place where metrics are defined once, centrally, so every answer reuses the same trusted definitions, respects the same permissions, and stays consistent from one question to the next. Gist is built on this approach, which is why business users without a data team can ask questions and trust the result.
What is natural-language analytics?
Natural-language analytics is a way to query your data by typing or speaking a plain-language question and receiving an answer as a chart, table, or single number, with no SQL required. A business user asks “show me top 10 customers by margin this financial year” and the system figures out which tables, metrics, filters, and time ranges that question implies, runs the query, and renders the result.
The hard part is not parsing the English. Modern language models do that well. The hard part is making sure the answer is correct, consistent, and permitted every single time. That is where the two common architectures diverge sharply.
Why is naive text-to-SQL unreliable?
Naive text-to-SQL hands your question and your raw database schema to a language model and asks it to write SQL on the spot. It is impressive in a demo and risky in production, for concrete reasons:
- No consistent metric definition. Ask “revenue” twice and the model may compute it two different ways: gross one time, net of refunds the next. There is no single source of truth for what “revenue” means.
- Schema guessing. The model picks tables and joins from column names alone. It can join on the wrong key, miss a
WHEREfilter that excludes test accounts, or double-count across a one-to-many join. - Silent wrong answers. A query that runs successfully but returns the wrong number is worse than one that errors, because nobody notices until a decision is already made on it.
- Security gaps. If permissions are not enforced in the query path, a cleverly phrased question can surface rows or columns a user should never see.
Text-to-SQL accuracy degrades exactly where it matters most: complex joins, fiscal calendars, and business-specific definitions. For a regulated or finance-facing report, “usually right” is not good enough.
How does semantic-layer analytics produce trustworthy answers?
Semantic-layer analytics inserts a governed model between the question and the database. Instead of writing fresh SQL each time, the system maps your question onto metrics and dimensions that were defined once, centrally by someone who knows the business. “Net revenue,” “active customer,” and “fiscal quarter” each have one agreed definition, and every answer reuses it.
This changes the reliability story:
- The same question returns the same number, every time, because the metric is not re-derived on the fly.
- Joins, filters, and grain are encoded in the model, not guessed from column names.
- Row-level and column-level security live in the layer, so they apply no matter how the question is phrased.
- Definitions are auditable: you can point to where “net revenue” is specified.
This is conceptually similar to how retrieval-augmented generation grounds a language model in approved sources rather than letting it free-associate. If that idea is new to you, our explainer on what RAG is and how it works covers the same grounding principle applied to documents.
Naive text-to-SQL vs semantic-layer analytics
| Dimension | Naive text-to-SQL | Semantic-layer analytics (Gist) |
|---|---|---|
| Metric definitions | Re-invented per query | Defined once, centrally, reused |
| Consistency | Same question can vary | Same question, same answer |
| Joins and filters | Guessed from schema | Encoded in the model |
| Row/column security | Often bolted on or missing | Enforced in the query path |
| Locale and fiscal year | Calendar-year defaults | Locale-aware (lakh/crore, April to March) |
| Audit | Hard to trace | Definitions are inspectable |
| Best fit | Demos, exploration | Production self-service BI |
How does Gist handle permissions and locale?
Gist enforces row-level and column-level security as part of the governed semantic layer, so a regional manager only sees their region’s rows and restricted columns stay hidden regardless of how a question is worded. Permission checks sit in the query path, not in the chart, which means a user cannot phrase their way around them.
Gist is also locale-aware, which matters for Indian businesses. Gist formats rupees in lakh and crore and understands the April to March financial year, so “this financial year” and “last quarter” resolve to the correct Indian periods instead of a calendar-year default. Gist asks and answers in plain language across English, Hindi, Tamil, and more.
On the engineering side, Gist connects to Postgres, ClickHouse, and DuckDB, is embeddable into your own product, and uses tiered model routing to stay affordable, which suits SMBs and startups rather than only large enterprises.
Who does no-SQL analytics actually unlock?
Self-service BI that genuinely works without SQL unlocks the people who currently wait in a queue: the operations lead, the finance analyst, the founder, the regional sales manager. They can ask plain-language questions of their data and get a governed, permission-correct answer in seconds, instead of filing a ticket and waiting days for a dashboard.
The result is a smaller bottleneck for the data team and faster decisions for everyone else, without sacrificing correctness. If you want help wiring a semantic layer to your own stack or embedding governed analytics into a product, the Teclops services team builds these systems inside your own infrastructure.
To define your metrics once and let your whole team query in plain language, see Gist or contact teclops.ai@gmail.com.
Frequently asked questions
How do you query a database in plain English without writing SQL?
You use a natural-language analytics tool that translates your question into a query against your data and returns a chart or number. Reliable systems do not translate your words straight into raw SQL; instead they map your question onto pre-defined metrics and dimensions in a governed semantic layer, so 'net revenue last quarter' always resolves to the same agreed definition. Gist works this way: business users ask in plain language and get answers with no SQL.
Is text-to-SQL accurate enough to trust for business reporting?
Naive text-to-SQL, where a language model writes raw SQL directly against your schema, is not reliable enough for business reporting. It can pick the wrong table, miss a join filter, or invent its own definition of a metric, and it gives no guarantee that the same question returns the same number twice. Semantic-layer analytics is more trustworthy because metrics are defined once, centrally, and every answer reuses those definitions instead of being re-derived on each query.
Can business users do analytics without a data team?
Yes. Natural-language analytics tools let business users ask questions in plain language and get trustworthy charts without knowing SQL or waiting on a data team. The key is a governed semantic layer that encodes the metric definitions and security rules in advance, so a non-technical user gets a correct, permission-aware answer. Gist is built for exactly this: SMBs and startups that need self-service BI without a dedicated analytics engineering function.
How does natural-language analytics handle data permissions and security?
Trustworthy natural-language analytics enforces row-level and column-level security inside the query path, not in the chart layer. This means a regional manager asking a question only sees rows for their region, and restricted columns stay hidden regardless of how the question is phrased. Gist enforces row- and column-level security over its governed semantic layer, so the same question returns correctly scoped results for each user.
Does natural-language analytics understand Indian conventions like lakh, crore, and the April to March year?
Locale-aware natural-language analytics does. Gist is locale-aware: it formats rupees in lakh and crore and uses the India April to March financial year, so 'this financial year' and 'last quarter' resolve to the correct Indian periods instead of a calendar-year default. Gist connects to Postgres, ClickHouse, and DuckDB and is embeddable into your own product.