Ingest
Upload CSV / Excel / PDF / connect a database. Parquet on disk, DuckDB columnar SQL ready immediately.
Upload a CSV, ask in plain English, get back a chart, a written answer, and the SQL you can verify.
A platform for the question 'what does this data say?' that doesn't require the asker to know SQL or even the column names. Upload a file, ask in plain English, get an interactive chart with a written answer and the underlying query you can verify. The agents handle the work, the user reads the answer.
Every non-technical teammate who needs data from a CSV either asks an engineer or fights Excel pivot tables. The engineering loop is slow; the Excel loop is error-prone and gets abandoned. The non-technical user ends up making decisions on intuition instead of data — not because they want to, but because the tooling demanded too much to use.
Designer, engineer, evaluator. Solo build.
Two shifts made this newly possible: LLMs got good enough at writing correct SQL against schemas they were just shown, and in-process analytical databases (DuckDB) got fast enough that you don't need a data warehouse to query a CSV. Combine those, and a real user can go from 'I have a file' to 'I have an answer' without ever seeing a query.
A non-technical user goes from 'I have a CSV' to 'I have an answer' without ever seeing SQL.
Upload CSV / Excel / PDF / connect a database. Parquet on disk, DuckDB columnar SQL ready immediately.
The complexity router classifies the question as simple, moderate, or complex — the routing decision is what makes the cost curve work.
Direct DuckDB SQL — sub-second answers for counts, top-N, basic filters. No agents, no tokens spent.
ReAct loop with five agents: Data Quality, Statistical, Visualization, Explanation, and Verification. Orchestrator coordinates.
Verification agent cross-checks the others' work. Hallucinations get caught before they surface.
Interactive Plotly chart + written explanation + confidence score + the SQL you can verify. Export to PNG / SVG / CSV / Excel / PDF.
1,193-line engine tracks current dataset, columns mentioned, and prior results so 'compare those regions' actually works.
A complexity router classifies the incoming question as simple, moderate, or complex. Simple goes straight to DuckDB SQL — sub-second answers for 'how many rows', 'top 10 by revenue', basic filters. Complex enters a ReAct loop with five specialist agents (Data Quality, Statistical, Visualization, Explanation, Verification) coordinated by an orchestrator. The Verification agent is the load-bearing one — it cross-checks the others' work before surfacing anything to the user. A multi-provider LLM layer (Claude / OpenAI / Ollama) with per-model token counting picks the cheapest provider that hits the quality bar, and a benchmark harness keeps that decision honest. Storage is DuckDB columnar SQL + Parquet on disk + SQLite metadata; analytics is pandas / scipy / statsmodels; visualization is 10+ Plotly chart types. A 1,193-line conversation engine tracks the current dataset, columns mentioned, and prior results so 'compare those regions' actually works.
Local-first analytics stack with a hybrid SQL / agentic execution layer and a multi-provider LLM fallback.
CSV / Excel / PDF / DB connection. Parsed to Parquet on disk.
Tracks dataset, columns referenced, prior results, follow-up context.
Simple / moderate / complex — decides whether to spend tokens at all.
Columnar SQL on Parquet. Sub-second for the simple 80%.
Data Quality, Statistical, Visualization, Explanation, Verification — five specialist agents.
Claude / OpenAI / Ollama. Per-model token counting; benchmark harness picks cost-vs-quality.
10+ chart types with interactive UI.
Plain-English answer plus confidence score and the underlying SQL.
PNG / SVG / CSV / Excel / PDF.
The fifth agent's only job is to catch the other four. Multi-agent systems without a verification layer hallucinate confidently.
The simple path doesn't spend a single token. The complex path is allowed to spend many, because the routing decision earns that budget.