# Live dashboards from Google Sheets, built by agents you control

> dvt builds live dashboards from Google Sheets: an agent authors a versioned JSON spec over your spreadsheet, and dvt reads the sheet itself, never a copy.

Canonical: https://dvt.dev/solutions/google-sheets-dashboards/

A dashboard from Google Sheets, in dvt, is a live dashboard whose source is the spreadsheet itself: an agent reads the sheet's columns and authors a versioned JSON spec, and dvt reads the sheet at view time. Not an export, not a pasted chart, not a one-time import. When someone on your team updates a row, the dashboard reflects it.

## How dvt builds dashboards from Google Sheets

Connect dvt to the spreadsheet as a data source, then connect an MCP-capable agent (Claude Code, for instance) to the dvt MCP server. Describe the dashboard you want: "build a pipeline dashboard from the deals sheet, monthly bookings, top accounts, average deal size by region." The agent works out which columns answer each question, picks a chart for each panel, constructs the spec, validates it against dvt's schema, previews the rendered result, and applies it. See the [quickstart](https://dvt.dev/quickstart) for the exact prompts, from listing your workspace to shipping a live dashboard.

Each Google Sheets source is a named connection, and credentials never travel in a spec. A connection is registered by name, type, and auth method; its settings include the `spreadsheetId` (the long ID in the spreadsheet's URL), and the service-account key is stored envelope-encrypted and never shown again. The connection's name, such as `prod_google_sheets`, is the `sourceId` a dashboard's panels reference, so a spec says exactly which spreadsheet every chart reads from.

```json
{ "id": "bookings-by-month", "title": "Bookings by month", "type": "chart:bar",
  "data": { "rows": [{ "month": "Jan", "bookings": 120 }, { "month": "Feb", "bookings": 150 },
                     { "month": "Mar", "bookings": 178 }, { "month": "Apr", "bookings": 168 }] },
  "spec": { "series": [{ "type": "bar", "barMaxWidth": 48 }] } }
```

That's one panel of the resulting spec: a plain, versioned JSON document, not a screenshot of a spreadsheet.

## The live sheet is the source

dvt reads the sheet directly through the connection's service account. Nothing is copied into a second database, and there's no sync job to schedule or monitor: the spreadsheet stays the single place the numbers live. Access is the spreadsheet's own sharing model. dvt sees the sheets that service account has been given access to, and nothing else. dvt also connects to [Snowflake](https://dvt.dev/solutions/snowflake-ai-dashboards), [Postgres](https://dvt.dev/solutions/postgres-ai-dashboards), and [BigQuery](https://dvt.dev/solutions/bigquery-ai-dashboards), so a dashboard built from a spreadsheet can sit in the same workspace as one built from your warehouse.

## Better inputs, better dashboards

An agent reading a spreadsheet doesn't know that the "Stage" column's "Closed" means closed-won, or that the "Amount" column on one tab is in thousands. It reads what the headers tell it. dvt's skills layer lets you write those conventions down once, as an org-scoped document (metric definitions, column meanings, house rules), and the agent reads it before it builds, so every future dashboard follows the same rules instead of guessing from header names alone.

## Review before it ships

Because the spec is a document, not GUI state, a dashboard an agent builds from a spreadsheet goes through the same review loop as any other dvt dashboard. Every write is validated and can be previewed before it's applied. Every version is attributed to the human, agent, or system that made it. A reviewer can comment on a specific panel, and an agent can read that thread over MCP, fix the panel, and resolve it. That is [dashboards as code](https://dvt.dev/solutions/dashboards-as-code), applied to the spreadsheet your team already keeps.

See the format rendered in the [live demo](https://demo.dvt.dev).
Ready to point an agent at your own spreadsheets? [Get early access](https://dvt.dev/solutions/google-sheets-dashboards/#early-access).
