Data Analytics · Read + Write

Talk to database

Augment Rep · High Reason · High

The problem

Analysts queue up between business and the data team. Simple questions wait days; the chart that comes back is sometimes off by a join.

The AI approach

Schema-aware NL → SQL. LLM reads the table catalog (with column comments + foreign keys), turns the question into SQL, runs it, and explains the result in business language.

The outcome

~30s answer

Business users self-serve simple questions in seconds. Analysts focus on the questions that need real thinking.

Try itInput → Process → Output

Input — question + schema preview
Which 3 stores had the biggest drop in fresh-category revenue last week vs. the prior week?
Schema · 3 tables loaded
sales_daily (date, store_id, category, revenue) → store_dim, product_dim
store_dim (store_id, name, region, format)
product_dim (sku, category, sub_category)
Process — AI pipeline
1Parse intent + entitiesReadGenerative
2Pick tables + joins from schemaReadGenerative
3Generate + run SQLWriteSymbolic
4Format result + narrateWriteGenerative
Output — table + narrative
Click Run demo to turn the question into SQL, run it, and explain.
Generated SQL read-only
WITH wk_now AS (SELECT store_id, SUM(revenue) r FROM sales_daily WHERE category='fresh' AND date BETWEEN '2026-04-26' AND '2026-05-02' GROUP BY 1) ...
Results 3 rows · 280 ms
storeregionthis wklast wkΔ
store_07 · BKK Bang NaBKK54,21092,400−41%
store_22 · CMI CenterNorth61,30083,100−26%
store_41 · Phuket PatongSouth48,95062,400−22%
Plain English: 3 stores saw fresh revenue drop 22–41% week-over-week. Store_07 had the steepest drop — coincides with the new opening-hours change.

Three AI types in this use case

SymbolicSchema graph (tables, joins, FKs); SQL executor; row-count + result-type checks; PII column blocklist.
PredictiveDisambiguation of ambiguous entities (which 'store'?); auto-correct misspelled column names.
GenerativeLLM reads schema + question, picks tables, writes SQL, then narrates the result in business language.

The stack

  • NL→SQL · LLM with schema in context
  • Engine · Snowflake / BigQuery / Postgres
  • Read-only role + audit log
  • Front-end · Slack / web chat

When this works

  • Schema is well-documented (column comments, FK relationships, data dictionary)
  • Read-only role with PII columns blocked
  • Questions are scoped (one entity, one time window)
  • Audit trail of every NL → SQL pair

When it fails

  • Vague question ("how is the business?") — generated SQL is junk
  • Multi-step joins that need analyst judgement
  • Stale schema — model hallucinates a column that was dropped
  • Auto-published charts off bad SQL look authoritative