Features
What you actually get
A chart of your data, every time you ask, from whatever the data happens to live in — then the controls, the code and the export formats to do something with it. All of this is shipped, none of it is planned.
How a question becomes a chart
Five stages, none of which can dead-end
Each stage has a fallback: a failed transform charts the cleaned frame instead, a model outage falls back to heuristics, a join with no overlap is dropped rather than fatal. You get a chart and a note about what was approximated. Every stage can be stopped, edited or taken over by hand.
- Finding the datastage 1
Which tables and columns can answer this at all, and how confident it is that they can.
- Joiningstage 2
The key it picked, the value overlap it measured, and whether the row count survived - so a fan-out cannot hide.
- Shaping the datastage 3
The Python it ran, in full. Resampling respects the data's own granularity rather than snapping to months.
- Choosing the chartstage 4
The form, and the forms it rejected. Naming the rejected option is what makes the choice checkable.
- Applying defaultsstage 5
Palette, spacing, labels and a re-audit of the finished figure. Anything that slipped through is printed beside it.
Chart quality
The rules are in code, not in a style guide
Hues are assigned in fixed order and never cycled, scatter forms cap at three series, and no chart ever gets two y-scales. Both charts below came off the same audited path your answers do.
In the product
Everything in the box
Always a chart
Every stage has a fallback, so a run cannot end in an apology. A join with no overlapping values is dropped and the rest is charted; failed shaping code falls back to the cleaned frame; a model outage falls back to heuristic chart selection. Whatever it had to approximate is printed beside the figure rather than hidden.
Nineteen chart forms
Bar, horizontal bar, line, area, scatter, bubble, pie, histogram, heatmap, box, candlestick, sankey, treemap, sunburst, funnel, waterfall and maps - points from latitude and longitude, or countries filled by value - plus stat tiles and tables for the questions whose honest answer is a single number. The form is chosen from the data's shape, and the rejected alternative is named so you can disagree with the choice.
Any data you have
CSV, TSV, JSON, Excel, OpenDocument and Parquet by drag and drop, gzipped or zipped if that is how it arrived; PostgreSQL, MySQL, SQL Server, Oracle, Snowflake, BigQuery, Redshift, ClickHouse, Trino, DuckDB and SQLite by connection string; MongoDB, Elasticsearch and HTTP APIs for everything else. All read-only. A file that will not parse with commas is retried with the delimiter sniffed and then with the bad rows skipped, because a rejected upload is the worst first minute there is.
Code interpreter
pandas, polars, numpy, scipy, scikit-learn, statsmodels and plotly are pre-imported at worker boot, so the first query is not the slow one. Alongside them sit purpose-built tools: column-role inference, currency coercion, overlap-ranked join keys, granularity-aware resampling, outlier masks, trend fitting and forecasting.
SQL editor
Completions answer from the schema synchronously, so typing never waits on a model. Generation, per-source suggested questions, saved queries and full history sit alongside. Every generated statement is checked read-only before it reaches a driver.
Charts you control
Change x, y, z, colour, chart type, aggregation and stacking by hand at any time - no query spent. Or describe the change in words and let the edit stage apply it. The reasoning trace stays attached to the chart.
Long-running agents
Deep research runs hypothesis-test-revise loops inside the code interpreter for minutes at a time, and reports only the findings it actually produced output for.
Export that stays sharp
A native SVG exporter draws bar, line, area, scatter and pie directly - no headless browser, deterministic output, and markup a designer can open and edit. PNG, CSV and JSON too.
Notebooks and dashboards
Any answer exports to a Jupyter .ipynb or a marimo notebook - the data, the transformation and the chart, in the order they ran. Host either one here, or pin the chart to a dashboard with a share link that needs no account to read.
Get started
Make your first chart
3 free charts when you sign in. Sample datasets are already loaded, so you can see it work before connecting anything of your own.