2026-05-264 min·#data#dashboards

Building dashboards without a data warehouse

Zephyr WhimsyEditorial · 2026-05-26

Most dashboards don't need ClickHouse, Snowflake, or BigQuery. Here's the case for keeping it small, fast, and on your laptop.

A friend at a Series A company spent six weeks setting up a data warehouse so the founders could see weekly MRR. The team is fifteen people. The data fits in two CSVs. They could have done this in a Saturday afternoon.

This isn't unusual. The default mental model for "let's build a dashboard" has become: pick a warehouse, set up ETL, hire someone who knows dbt, choose a BI tool, configure auth. Then, four weeks later, you finally see the chart you wanted.

Most dashboards don't need any of that

The actual data underlying most internal dashboards is small. Single-digit thousands of rows. A handful of columns. Updated manually once a week. The story you want to tell is "MRR by month, segmented by tier, with last quarter as comparison." That's a SELECT with two GROUP BYs.

We built Plain Sheet around this reality. The SQL panel runs DuckDB right in the browser. You upload a CSV, you write a query, you get a chart. The whole thing lives in a single file you can share with a link.

What you give up — and don't

You give up: real-time data from production. Complex warehouse-side modeling. Cross-team analytics governance. If you need any of those, you need a warehouse.

You don't give up: SQL, joins, window functions, multi-series charts, formatting, embedded narrative. DuckDB-WASM is real SQL — most of the analytic queries you'd write against a warehouse work here unchanged.

When this stops working

We aren't pretending Plain replaces real data infrastructure. Once you cross any of these lines, you've outgrown the local approach:

  • Your dataset crosses ~100K rows (DuckDB can do more in memory, but Plain's per-sheet cap is 100K for performance).
  • You need live data — not "I uploaded the CSV yesterday."
  • You have analysts who collaborate on shared, governed models.
  • You need cross-table joins across systems of record (CRM + product DB + ad spend).

Until then? You probably don't need the warehouse you think you need.

The dashboard as a narrative

The other thing we noticed: the dashboards that change minds aren't grids of charts. They're sequenced — a header, a few KPI tiles, a chart, a paragraph of context, another chart, a takeaway. Reading them top to bottom is the whole point.

Plain Sheet treats this as the default. Panels are sections in a document, not tiles in a grid. The story has a beginning, a middle, a closing. You ship a link, and the reader scrolls through the argument.

We think that's closer to what most internal "dashboards" actually are: small bodies of data with a point.