Ask your banking business anything, in plain English — sourced, data-grounded answers, charts and role-framed insight, with no analyst, no dashboard and no SQL, running entirely on the bank’s own infrastructure.
Built for the question nobody saw coming.
Dashboards were built for analysts
- Pre-definednew questions need an engineering ticket
- Backward-lookinga number or chart you interpret alone
- Staticthe view doesn’t change until an engineer rebuilds it
A queue, not an answer
- The analyst queueevery new question waits its turn
- SQL firstnothing moves until someone writes the query
- One view for everyoneno framing for the role asking
One question, one sourced answer
- Plain Englishany question, live, no ticket
- Descriptive + predictiveML-backed, not just backward-looking
- Self-learningimproves with every use, on your infrastructure
Ask it. Answer it. Present it.
- Any question, in plain English, live
- Persona-aware — same interface, different framing per role
- No SQL, no dashboard, no ticket to the data team
- Planning and coding are separated — a wrong plan retries only the plan
- A deterministic Plan Checker verifies every column before any SQL runs
- Up to 5 retries, routed by a Validator agent
- A narrative insight framed for your role, not a table to interpret
- Every figure traces back to its source
- Charts and KPI tiles generated alongside the answer
Five things a dashboard doesn’t do.
Persona-aware, self-correcting and proactive — the parts that make it usable by a CxO, not just an analyst.
You type a sentence. It does the rest.
plain english · no query language
- 1Ask, in your own wordsNo template and no SQL — the sentence is the interface.
- 2It already knows who’s askingPersona-aware from the first screen — the greeting, the tone, the framing.
- 3Live schema, not a blank boxWatching 28 tables, 470 columns and 6 signals before you’ve typed a word.
- 4Seeded with what to askSuggested questions for when you don’t know where to start.
The 12-step flow, in six stages.
The system first works out whether this is a data question or small talk, asking for clarification only if the intent is unclear.
Only the tables and columns relevant to this question are retrieved from ChromaDB — not the whole schema, every time.
A query plan is drafted, then checked against the live schema before any SQL is written — at zero LLM cost.
SQL is generated and validated; a wrong query is only rewritten, not restarted — retries are routed by a Validator agent.
The query runs read-only against PostgreSQL, capped at 100 rows for safety. Empty results auto-relax filters and retry.
The result becomes a chart and a narrative insight, framed for the role that asked — not a raw table to interpret.
The answer, sourced start to finish.
narrative insight · role-framed · fully sourced
- 1The finding, up frontOne clear narrative, not a table you have to interpret.
- 2Every number, sourced — and chartableStat tiles pull straight from the same query, and reshape into a ranking, composition or hierarchy chart in one click.
- 3An insight you didn’t ask forA second finding the question didn’t request, surfaced anyway.
- 4The reasoning is inspectableThought process shows every step the agents took to get here.
12 agents, working like one.
LangGraph StateGraph · the reasoning stays inspectable, step by step
Self-correcting by design
Planning and coding run as separate agents. A wrong plan retries only the plan; wrong SQL rewrites only the SQL — up to 5 retries, routed by a Validator agent.
LangGraph StateGraphDeterministic Plan Checker
A non-agentic step verifies every table.column reference against the live schema before any SQL is written — catching invented columns with no model call and no added latency.
Runs before every querySwitchable, not fixed
Local mode runs Qwen3-Coder-30B on self-hosted vLLM (Azure A100, 128K context). Hosted mode runs Claude Sonnet 4.6 + Haiku 4.5 with automatic fallback — same pipeline, no code change.
LLM_MODE environment variableTwo services, one experience.
the frontend holds no AI or data logic · the backend only reads data
- 1A governed coreA Next.js frontend calls a separate FastAPI + LangGraph backend, kept apart on purpose.
- 2Read-only, by constructionThe backend only reads data. No INSERT, UPDATE or DELETE is ever generated.
- 3Checked before it’s generatedA deterministic Plan Checker verifies every column against the live schema first — no model call needed.
Checked at every hop, before it ever runs.
role-based · schema-checked · fully traced
- 1Signed in, not walked inNextAuth with company Microsoft (Azure AD/Entra) sign-in, or email and password. Not a public app.
- 2SQL stays with the AnalystExecutives never see raw SQL — only the Analyst persona unlocks the query, data table and source.
- 3Read-only, by constructionThe backend only reads data. No INSERT, UPDATE or DELETE is ever generated.
- 4A log you can hand a regulatorLangfuse traces every LLM call, end to end.
One switch, two engines.
Self-hosted
Qwen3-Coder-30B on self-hosted vLLM, on an Azure A100 VM (128K context). No question, data or reasoning step leaves the bank.
Managed models
Claude Sonnet 4.6 + Haiku 4.5 for reasoning, with task routing and automatic embedding fallback. Same pipeline, no code change.
PostgreSQL, today
The current connector, with Snowflake, BigQuery and others on the roadmap — no hardcoded table names.
Not a public app
NextAuth with company Microsoft (Azure AD/Entra) sign-in, or email and password.
Any question, sourced, in plain English.
A 0-agent pipeline plans, checks itself against the live schema, and self-corrects with up to 0 retries — independently ranked in the top 0 on the BIRD text-to-SQL benchmark.
And in Local mode, it runs entirely on the bank’s own infrastructure — 0 data egress.
Try it yourself in the live demo.
demo.crayondata.ai/cxo-concierge
Thank you.
Scan for the live portal