Fathom.
Dashboard for an ops team — An operations dashboard that replaces a wall of spreadsheets with one screen an ops lead can trust at 6am.
Overview
Fathom’s ops team ran the business out of a dozen spreadsheets. We designed a single source of truth they could act on, not just admire.
The challenge
Ops dashboards are where good intentions go to die — too dense, too slow to change. This one had to stay useful as the business shifted under it.
- Dense information that stays scannable
- Alerts that mean something
- A layout that adapts to new metrics
- Trust — numbers that always reconcile
Our approach
We shadowed the team for a week, learned which numbers actually drove decisions, and designed around those.
- A priority-led information hierarchy
- Thresholds and alerts co-designed with ops
- A flexible grid for metrics yet to exist
- A component kit their engineers could ship
The outcome
Fathom collapsed a spreadsheet sprawl into one screen the team opens first each day. Decisions that took a morning of reconciling now take a glance.
“It’s the only screen we trust before coffee.”
Under the hood
A Go collector streams service heartbeats over WebSockets into TimescaleDB; the React/TypeScript console renders incident state machines, and Grafana handles the long-tail dashboards ops already trusts.
- Go collector: 40k heartbeats/s on one small node
- Incident lifecycle as an explicit state machine
- WebSocket fan-out with backpressure handling
- Timescale continuous aggregates for uptime bars
Also considered Node for the collector — Go's goroutines and memory profile won the ingestion path.