SaaS WEB

Business Dashboard

One dashboard, four data sources, zero spreadsheet exports.

Business Dashboard — Featured screenshot

Client

Confidential

Year

2023

Duration

6 months

The challenge

An executive team was spending hours per week reconciling reports from four separate systems: a CRM, a finance platform, a support tool, and an operations database. The spreadsheets were always out of date, always required a human to produce, and always raised more questions than they answered.

They wanted a single source of truth — in real time, not overnight batch.

What we built

  • Data pipeline: Python/FastAPI service that polls each source on its own cadence, normalizes records into a shared schema, and writes to a PostgreSQL warehouse.
  • Real-time layer: WebSocket push for the metrics that change fastest (sales, support ticket volume).
  • Dashboard UI: React frontend with D3-backed visualizations — time-series, cohort analysis, geographic breakdown, and drill-downs that work on every chart.
  • Role-based access: engineers, sales, finance, and executives each see a tailored view. Nothing visible that shouldn't be.
  • Export: one-click CSV and PDF reports for the exec team's board decks.

Results

  • Weekly reporting time dropped from ~10 person-hours to ~15 minutes (just a spot-check).
  • New metric requests turn around in hours, not weeks.
  • Exec team adopted it as the first tab open in the morning.

What we learned

The data pipeline is always harder than the UI. We spent roughly 60% of the engineering budget on the ingestion and normalization layer, and that turned out to be the right split — because when the data is clean and fresh, the UI practically writes itself.

Also: real-time isn't always the right answer. Some metrics update once a day and should. Pretending they're live would just add cost. Match the update cadence to the source reality.

Technology

React D3.js Python FastAPI PostgreSQL AWS

Working on something similar?

Send the shape of the problem. We'll tell you what it would take to solve.

Start a project