Building dashboards without a data warehouse
Most dashboards don't need ClickHouse, Snowflake, or BigQuery. Here's the case for keeping it small, fast, and on your laptop.
¿Solo quieres el enlace? Suelta un archivo HTML, sin registro.
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.