Skip to content

Aneo Mobility

Two years building the data platform, operations tooling and grid optimisation behind a Norwegian EV charging operator.

Category
Work
Type
Website
Year
2025
Stack
Kafka · Redpanda · .NET · Node.js · Next.js · TypeScript · ClickHouse · PostgreSQL · Python · Azure · Pulumi · Hangfire · NestJS · Blazor · MCP

Aneo Mobility runs large charging sites as a service, from the hardware in the ground to the customer app. Over two years I went from building features in their portal to owning the data platform the rest of the company now runs on.

Atlas, the data platform

Atlas is the central platform for collecting, processing and distributing real-time data. I designed the architecture and built the streaming application on Kafka and Redpanda, with services in both Node.js and .NET.

It orchestrates every dataflow between external vendors and internal systems: eMabler, Zaptec, Easee, Garo, Meraki, Com4, Elhub and Salesforce. Each one models the world differently, so a large part of the work was standardising complex and unstructured data into something the rest of the organisation could trust.

As demand for data grew internally, the project expanded into running the company data warehouse. We chose ClickHouse, which suits a smaller organisation while still holding up as a serious analysis tool, and I set up an MCP server against it so colleagues could pull their own answers with AI instead of filing a request.

Pulse, the operations tool

Pulse is the real-time system for monitoring the entire charging fleet. Operators watch sensor values from chargers across every vendor, plus network health from Meraki and Com4, in one place.

It sits on Atlas as a flexible filtering and rule engine that surfaces faults at charger, circuit and station level. I designed the dataflow end to end and built the Next.js frontend that gives the operations team alerts, status overviews, custom filters and full control of the portfolio. After launch it also became a sales and support tool for other parts of the company.

kWatch, cutting grid costs

kWatch reduces grid rent by optimising the power tier of each site without making charging worse for the customer. It reads Atlas as its data source and runs a custom load management algorithm that works out the lowest tier a site can safely operate on.

I was the only developer on it, which meant a hybrid role across data science, data engineering, analysis and development. I learned the power grid, tariff tiers, charging technology and charging behaviour in enough detail to understand what actually drives an optimal downgrade, then wrote the Python for collection, analysis and dynamic adjustment, including a bespoke algorithm that estimates realistic hourly demand for chargers that report irregularly or only sporadically.

The project worked. Several sites now run two to three power tiers lower than at the start, which is a real annual saving for Aneo.

ChargeFlex, selling the flexibility back

With kWatch proving that power could be controlled precisely, the obvious next step was to sell that control. ChargeFlex offers available capacity back to grid operators through the NODES marketplace.

The MaxUsage products were brand new in the regulation when we started, so much of the job was defining what participation even meant for charging infrastructure, and working directly with grid operators to establish workable, mutually useful terms. Technically it runs on .NET and Hangfire to handle, verify and monitor activations in real time, with PostgreSQL and ClickHouse behind it and infrastructure on Azure set up with Pulumi.

I also ran a pilot at Aneo Mobility on using AI in development work, setting the ground rules and building the agents, skills and processes for how work gets started and documented alongside a model.