Helios — Energy Analytics Platform
Real-time dashboard processing millions of meter readings, with forecasting and anomaly alerts for grid operators.
- Timeline
- 7 months to first release
- Team
- 2 backend · 2 frontend · 1 data · 1 designer
- Surface
- Web dashboard + internal API
- Scale
- ~2.4M meters, 15-minute intervals
Helios sells analytics to regional grid operators. The data was already flowing in — the problem was that nobody could act on it until the next morning.
- Sector
- Energy · Grid operations
- Region
- Northern Europe
- Engagement
- Platform build + ongoing partnership
Smart meters across the network report every 15 minutes. That is a few hundred million readings a month, and it was all being swept into a nightly batch job that produced PDF reports. By the time an operator saw that a substation had been drifting out of tolerance, the drift was twelve to thirty-six hours old.
Analysts had worked around it the way analysts do: exporting CSVs and rebuilding the same pivot tables in Excel every week. Three people were spending most of a day each on work that should have been a page load. Meanwhile the sales team was losing deals to competitors who could demo a live screen.
The constraint that shaped everything: this is regulated infrastructure. Readings are auditable, retention rules are fixed, and a dashboard that shows a wrong number is worse than a dashboard that shows nothing. We needed speed without loosening correctness.
How the work was actually sequenced
Streaming ingestion in front of the batch job
Rather than a risky big-bang replacement, we put a streaming path alongside the existing nightly pipeline and ran both for six weeks. Readings land in a queue, are validated and normalised, then written to a time-series store partitioned by region and interval. The batch job stayed authoritative until the streaming path matched it reading-for-reading.
Pre-aggregation, so the dashboard never scans raw data
Operators look at rolling windows, not individual readings. We materialise hourly, daily and weekly rollups on write, which is what turned a multi-second query into a sub-100ms one. Raw readings stay queryable for audit and drill-down, just off the hot path.
Forecasting and anomaly detection as separate services
Load forecasting and anomaly detection have different failure modes and different retraining cadences, so they run as independent Python services. If the forecast model is down, alerts still fire; if anomaly scoring is degraded, the dashboard still loads. Every alert links back to the readings that triggered it.
A dashboard built for a control room, not a demo
Dense tables, keyboard navigation, no gratuitous animation, readable on the wall-mounted screens the operators actually use. Server-rendered with Next.js so first paint does not wait on a chart library, with live updates layered on after.
Frontend
- Next.js
- TypeScript
- Tailwind CSS
Backend & data
- Python
- FastAPI
- PostgreSQL
- TimescaleDB
- Redis
Infrastructure
- AWS
- ECS
- Kinesis
- S3
- CloudWatch
- Terraform
BrightLearn — Mobile Learning App
Mobile
Got something like this in mind?
Tell us what you're building. We'll come back within one business day with a clear plan and an honest estimate.