SSiddiq.in
Ask your data

Chat with your warehouse.

"How's revenue this quarter by channel?" "Who are the top 20 accounts at risk?" Plain-English questions, SQL under the hood, charts on the screen — governed, safe, cited.

Compare Q3 to Q2 revenue by region.
Generated SQL · warehouse.rev
SELECT region, SUM(mrr) FROM v_revenue
WHERE quarter IN ('Q2','Q3','2026')
GROUP BY 1
South and West grew 22% QoQ; North flat.

How it stays safe.

01Semantic layer over warehouse
02Guarded prompt with schema
03Text-to-SQL + validation
04Execute + return preview
05Chart + narrative summary
06Log + cache for reuse

In the box.

  • Semantic layer (dbt/Cube)
  • Column-level masking
  • Cost caps per user
  • Save + share queries
  • Slack integration
  • Weekly digest emails
  • Chart library
  • Exports to Sheets / CSV

Analytics AI FAQs.

Vanilla text-to-SQL is. We add a semantic layer (dbt/Cube), enforced schemas, and query validation so the model only asks questions it's allowed to.

Question taxonomy the assistant must handle

Text-to-SQL demos handle the easy 20%. Real business questions fall into five shapes with very different accuracy profiles.

Question shapeExampleBaseline accuracyHow we lift it
Direct lookup"Revenue last month"95%+Cached metric layer, no LLM
Filtered aggregate"MRR by plan, EU only, QoQ"70-85%Semantic layer with dimensions typed
Comparative"Why did churn spike in July?"40-60%Guided drilldown, not free SQL
Causal / attribution"Which campaign drove signups?"30-50%Restrict to pre-built attribution models
Predictive"Will we hit Q4?"<40% without modelsRefuse or route to forecast pipeline

The semantic layer contract

Every metric the assistant can answer needs a single source of truth. This is the minimum spec per metric.

  • Canonical name + synonyms

    "Net Revenue Retention" also matches "NRR", "net retention", "expansion minus churn" — no aliases lookup, no answer.

  • Grain

    Row-level definition (customer-month, order-line). Assistant refuses queries that violate the grain.

  • Allowed filters

    Explicit list of dimensions with types. LLM cannot invent columns; unknown filter returns a clarifying question.

  • Owner + freshness SLA

    Every metric shows who owns it and when it last refreshed — assistant surfaces this on every answer.

  • Approved joins

    Pre-defined join paths only; blocks cartesian products and the classic "double-counted revenue" bug.

  • Redaction rules

    PII columns tagged; assistant strips or aggregates before returning to unauthorised roles.

Your data. On tap. In English.

Book a demo
Automate this workflow

Automate what's costing your team hours

Describe the workflow — we'll reply with what's possible, what it costs, and where to start.

  • Personal reply from Siddiq within 24 hours
  • Honest advice — no pushy sales, no fake urgency
  • Clear next steps, timeline, and estimate

We only use your details to reply to this enquiry. Privacy.