Home · Insights · Implementation
How we build a client reporting dashboard on Supabase
Owners rarely lack data. They lack one place where the right figures are always current. Here is the structure we use for reporting dashboards, the reason the database sits in the middle, and a part of it we changed our mind about.
What a client dashboard is for
Most owners do not lack data. They lack one place where the figures that matter are in front of them without anyone building a spreadsheet by hand. A reporting dashboard answers a few questions on a fixed schedule: how many enquiries came in, from where, how many became bookings, and what that is worth. It does not need to be beautiful. It needs to be right, and to stay right.
The structure
We use an automation tool to pull from the CRM, the booking tool and the ad platforms, clean the figures, and write them into a database. We use Supabase, which is a hosted Postgres database, because it is cheap to run, easy for a person to inspect, and does not require us to maintain a server for it. The dashboard reads from the database and never from the sources directly.
Why put a database in the middle
- One definition of each number. "Booking" means the same thing everywhere, because it is decided once, when the data is loaded.
- History. Many tools only show you the current state. A database keeps what the number was last month, which is what lets you see a trend.
- Resilience. A failing source stops being a failing dashboard.
A thing we changed our mind about
Our first version used Metabase as the dashboard layer, self-hosted on our own server. In August 2026 we removed it because it was using roughly 30 percent of the server's memory, and the server runs the automations that matter more. The database design did not change; only the layer that draws charts did. This is a general point: the stable, valuable part of this system is the clean data, and the chart tool on top is the part to expect to swap.
What it costs you in attention
- Someone needs to agree the handful of numbers that matter. Five is better than fifty.
- Someone needs to own the check that tells you when a source has stopped sending data.
- Revisit the figures after a month. The first set is never the last.
We do not publish client results from this work, and we have none to quote here. The design is what we can show. It underlies the reporting part of AI reporting dashboards for Mallorca businesses, and it relies on the same single-front-door discipline as our client intake. The tools around it are in the AI stack we run Viacala on.