Ask a question · get a board

Charts for Chat

Everything you like about asking an AI to analyse something, plus the things it can't give you. A live warehouse connection. Permissions. A real place to put the answer. And underneath it all, an open language your team owns rather than a transcript you lose.

Where are our leads coming from, and where do they drop off?
Using 3 tools… Used 3 tools
Reference charts Docs loaded
Dashboard lead funnel Dashboard search complete
Query leads by stage and channel Query returned 10 rows
Marketing brings in most of the volume, but the drop from leads to opportunities is steep across every source. Let me stack it by stage so you can see the shape.
Using 3 tools… Used 3 tools
Query funnel composition by channel Query returned 10 rows
Validation revenue-ops/leads/funnel Dashboard validated
Render revenue-ops/leads/funnel Dashboard rendered
Here it is. It wrote this:
charts:
  funnel_chart:
    title: Lead-to-Revenue Funnel by Channel
    query: funnel_by_source
    type: bar
    x: stage
    y: n
    color: channel
    style:
      orientation: horizontal
      stack: zero

Two minutes to a board

One install. One sentence to your agent.

dct is a Python CLI. Install it, then write the YAML yourself or say the sentence to Claude Code, Codex, or Cursor: the tool teaches the agent the rest, in your repo or a fresh folder.

Terminal uv tool install dbt-charts
Claude / AI Make charts of this with dbt charts. Start with: uv tool install dbt-charts && dct skills intro

Agents that arrive on their own read dbtcharts.com/llms.txt.

The bet

BI built for AI

We started with a simple open YAML syntax for dashboards, and a tool that renders it. Dashboards as code, like markdown, and including markdown, but for dashboards. Then we built a full BI tool on top of that core.

Every setting in the UI is generated from the language, so a feature gets added in exactly one place. That's why we ship fast, and it's why your dashboards stay open and an agent has the full run of the product rather than the handful of things someone remembered to expose.

One surface

AI can reach everything

No feature is locked behind a control an agent can't press. If it can be authored, it can be prompted: filters, drill-downs, themes, layout.

One place to ship

Features land in days

A new chart type is a core change, not a core change plus a settings panel plus an API plus a migration. The UI inherits it for free.

One artifact

You keep the output

The answer is a text file in your repo, not a session inside someone's product. Diff it, review it, roll it back, take it with you.

Dashboards as code

Works in your dbt repo

Same repo. Same branch. Same pull request. Your boards sit beside the models they read, and they move with them.

dbt took transformation out of the BI tool and put it in version control, and the whole field changed shape. Dashboards are the last artifact that never made the move. This is us moving them.

  • Discovered from your dbt_project.yml, no second config
  • Queries run through the profiles.yml you already have
  • A VS Code extension with completion and inline validation
  • Change a model on a branch and its boards change with it
aging.yml · dundersign_dbt

Explorer

dundersign_dbt

dbt_project.yml

profiles.yml

models/

staging/

marts/

charts/ new folder in dbt

customer-support/

aging.yml

executive/

revenue-ops/

theme: clarity
title: Support Backlog Aging

variables:
  priority:
    input: multiselect

charts:
  - type: heatmap
    x: age_band
    y: priority

The board and its source, always in sync

Edit the YAML and the board repaints. Change something in the board and the YAML rewrites. There is no third representation hiding in a database.

The dbt charts workbench: a rendered board on the left, its YAML source open in the editor on the right.
The dbt charts workspace: search, folders from the repo, filters and view modes, a row of recommended boards, a masonry grid of rendered dashboards, and the agent composer along the bottom.

Collaboration & permissions

The other 200 people get to see it

This is the part an agent in a chat window can't do. A board you made is a board your whole company can open, with the right people able to edit it, the right people able to read it, and nobody able to see the warehouse behind it who shouldn't.

  • Org roles and per-board access, down to the individual board
  • Warehouse credentials granted separately from board access
  • Invite a colleague; they land on the board, not a setup wizard
  • Everyone reads the same render, against the same fresh data

Validated

A broken chart fails the build

Rename a column and the board that read it stops compiling: in CI, on the branch, before anyone opens a blank tile. This is the thing a chat transcript can never do for you: notice it has gone stale.

  • Schema-checked against the warehouse, no query run at full cost
  • Review a dashboard change the way you review a model
  • Roll back a bad board with git revert
zsh · dundersign_dbt
$ dct validate charts/ --warehouse

ERR-WAREHOUSE-QUERY-INVALID  Query 'kpis' failed
warehouse validation (DESCRIBE): Binder Error:
Referenced column "won_amount_net" not found in FROM clause!
Candidate bindings: "won_amount", "pipeline_amount"

LINE 2:  (SELECT SUM(won_amount_net) FROM daily_metrics)
                      ^
At: charts/executive/growth/bookings-arr.yml
Docs: dct docs queries

Open

No lock-in, by construction

The board is a text file in a documented, open language. Render it here, render it in CI, render it on your laptop. Same file, same renderer, no export step and nothing to migrate off.

  • SVG, HTML, PNG, PDF, JSON, YAML, or ASCII in your terminal
  • dct serve re-renders locally as you save
  • Boards only ever read your warehouse
A bookings and recurring-revenue board: cumulative revenue, win rate, ARR mix, and a monthly detail table.

Two worlds, and the gap between them

An agent can write you a chart but leaves nothing behind. A BI tool leaves something behind but can't be talked to. We wanted both.

CapabilityAI agentBI tooldbt charts
Conversational authoring
Transparent / auditable
Sharing & collaboration
A real UI to read it in
One cohesive system
Validated in CI~
Open, no lock-in~

And one more thing

Eyes

A language is only worth it if the default output is good. Every board below is plain YAML on the default theme, with no per-chart styling and no hand-tuned axes. The query decides what the numbers mean; the chart only decides how they look.

They are all live. Open one.

Ask it something.

Point dbt charts at a dbt project and ask your first question. What comes back is a board, and a file you own. One install, or one sentence to Claude.

Terminal uv tool install dbt-charts
Claude / AI Make charts of this with dbt charts. Start with: uv tool install dbt-charts && dct skills intro