Cutting a SaaS dashboard's data footprint from gigabytes to megabytes
Confidential SaaS client
A usage-analytics dashboard was shipping gigabytes of payload per session, making the product feel unusable at scale.
GB → ~178 MB payload
Problem
The product's core dashboard loaded raw, unaggregated datasets on every request. As customer accounts grew, load times stretched into tens of seconds and infrastructure costs climbed with them.
Challenges
- No aggregation layer — every view re-fetched and re-computed data that changed rarely
- The query and transport strategy, not the raw data volume, was the real bottleneck
- Load times stretched into tens of seconds as customer accounts grew
Solution
Redesigned the data pipeline around pre-aggregation, incremental queries, and a caching layer, and restructured the API contract so the client only ever received what a given view actually needed.
Architecture
- A pre-aggregation layer computed ahead of request time instead of on every page load
- Incremental queries that only fetch what changed since the last view
- A caching layer between the API and the dashboard's data requests
- An API contract redesigned around what each view actually needs, not a generic full-dataset response
Implementation
- Rebuilt the data pipeline incrementally behind the existing dashboard, without a big-bang rewrite
- Validated each stage against real production data volumes before cutting over
Results
Dashboard payload dropped from gigabyte-scale to roughly 178 MB per session, with load times improving from tens of seconds to near-instant.
Business impact
Dashboards that used to feel unusable at scale now load near-instantly, removing a recurring source of customer complaints — and cutting the infrastructure cost that came with shipping gigabytes per session.
Have a similar problem?
If any of this looks familiar, let's talk about what's actually going on with your product.
