Charts Built for Chat Posted on November 11, 2026 by Dave Fowler
It turns out I couldn't stay away from data. For the past nine months I've been working at Fivetran/dbt to make the next generation of BI for AI.
In September my team and I launched dbt Charts with a post called Charts built for Chat. It made the front page of Hacker News and kicked off a great discussion. I wanted the argument here on my own blog too, so here it is, lightly rewritten, with a few charts drawn in dbt Charts itself.
Code or a BI tool: pick your poison
AI for data is here, and the self-serve analytics we were promised for decades is finally happening. Anyone with a data connection can chat a report into existence in an afternoon, and the first results look great.
The friction shows up fast, though. Left to itself, an agent turns one simple report into a pile of files: HTML, CSS and JavaScript, a chart library or two, and a React or Streamlit app the moment it needs to be live. Tracing a number back to its source means following it through several languages, which is slow for people to audit and costs the agent time and tokens on every change.
BI tools went the other way and bolted copilots onto their UI-first apps. That keeps the AI on governed rails, but narrow ones: the agent can do only what the UI exposes.
So today you choose between the messy freedom of code and the narrow control of a BI tool. We wanted a third option.
BI's second unbundling
dbt Labs founder Tristan Handy recently wrote about BI's Second Unbundling. BI tools used to be the whole data stack: ingestion, transformation, compute, caching, semantics, visualization and identity, all in one product. From roughly 2015 to 2022 the modern data stack pulled the infrastructure layers out. Compute went to the warehouses, ingestion to Fivetran, transformation to dbt.
What's left in the BI tool is mostly charts, and charts stayed in the UI for good reason. I spent over a decade building Chartio on the bet that for most people, clicking is quicker than writing code. That was true when people made the charts. More and more, the thing making the chart is an agent, and the preference flips. Agents are fluent in code, SQL and Git, and clumsy in someone else's UI. So charts need to move to where agents work: into code.
Charts leave the BI tool
That's what dbt Charts is. It's an open source YAML language that declares a full interactive dashboard in one readable file. SQL still says what data you want to see, and the YAML around it says how you want to see it. Markdown carries the prose and Jinja, as in dbt, carries variables and macros. You can chat freely with an agent, and what it makes has the freedom of code while staying easy to read.
We spent a long time distilling the language down to a few core elements that go deep. There are over 1,100 config options today across sixteen chart types and the composed charts built from them. You rarely touch most of them, because styles cascade: a chart inherits from its board, the board from its theme, and a board can extends: another, so a house style is written once and reused everywhere.
The CLI renders any board to SVG, HTML, PNG, PDF or even the terminal, on your laptop or in CI:
dct render charts/revenue.yml --format svg # or html, png, pdf, terminal
dct serve
Built on dbt, built for agents
You don't need dbt to use dbt Charts, but a lot unlocks when you have it. Your charts/ folder lives next to your models/ in the same repo, so a model change and its charts ship on one branch, through one CI run. Queries reach models through ref(), so a renamed model or a missing column fails the pull request that broke it, not the dashboard someone opens next week.
Agents are pretty blind and do their best work with a tight feedback loop. dbt Charts gives them one: strict validation of the YAML and the SQL, plus a long list of visualization checks that catch things like bars too thin to read or a table that won't fit its slot before anyone sees the board.
Charts that look like someone cared
We wanted the charts to look like the future we were designing for, not like another dashboard grid. We recruited RJ Andrews, a data graphic designer, author and historian, to design them. His command of the craft's history is what makes the result feel new: it reaches back past the dashboard era to when people drew charts with care. We worked out the spacing, sizing and layout of every chart, on its own and next to its neighbors, rather than faking alignment with cards and boxes.
Alongside the language, we launched dbtCharts.com in public beta. It handles the parts of BI that probably shouldn't be unbundled: hosting, permissions, a visual editor, version history and conversational analytics with read-only access to your warehouse. Every change, from chat, the editor or code, lands in the same YAML in your Git repo, so nothing is locked in.
How it landed
The Hacker News thread was busy for most of a day. Here's when its comments came in:
What I'm happiest about is that people kept installing it after the thread scrolled off the front page. PyPI downloads have grown nearly every week since (these counts include CI runs, so treat them as a trend rather than a head count):
Try it
The language is open source under Apache 2.0, and you can write, render and serve boards locally without an account.
- Code: github.com/dbt-labs/dbt-charts
- Docs: docs.dbtcharts.com
- Hosted BI: dbtCharts.com
- The original launch post: Charts built for Chat
It's still pre-1.0 and changing fast, so tell us what's missing in the GitHub issues or in #dbt-charts on the dbt Community Slack.