Verv
Languages
Frontend
Backend
Infrastructure
Build & Tooling
Summary
Verv is the core monitoring app for a smart home energy platform. A current clamp attaches to your mains electricity and connects to a hub (custom hardware on a Raspberry Pi) that runs machine learning disaggregation on the signal. The hub identifies what's running: a kettle, a washing machine, an appliance on the verge of failing. The app runs on tablets or phones in your home and connects to the hub via WebSocket. It shows real-time power usage in a graph that updates 10 times per second, appliance-by-appliance breakdowns, and historical comparisons so you can see your washing machine cost you £3.29 this month. This was built at a time when the UK government was subsidising energy companies to innovate for sustainable energy. Verv was the smart meter on steroids.
Problem/Context
Before this, you couldn't understand your electricity usage. Bills arrived at the end of the month with no breakdown. The hub recorded millions of samples per second and ran them through machine learning models trained on appliance signatures. That level of granularity was new at the time. The app aimed to show your home energy usage in real time, by appliance, with a live graph and an appliance list that lit up as devices turned on.
Role/Contribution
For the first phase, I was the only person on the UI. I designed it myself (no designer yet), built the whole thing with Angular 1.4, D3.js for the graph, and Socket.io for real-time data from the hub. I handled the socket work, Bluetooth connection flows for Wi-Fi setup between the hub and the device, and local network management. When Bluetooth range caused issues, we switched to a dedicated network the hub emitted so the tablet could connect, exchange Wi-Fi credentials, then reconnect to the home network. That required a lot of diagnostics and flows for when things went wrong: connection failures, rebooting the hub's private network, and the like. I built it to run on tablets via Ionic and Cordova. Gulp, Grunt, and Bower handled the build.
Once we got funding, the team grew. I hired iOS developers, Android developers, a QA engineer, and a designer. I became team leader and ran sprints, managed workload, and unblocked people. I communicated with stakeholders and worked with the designer on the flow. We ran user tests with real people, invited them in for sessions and gave them pizza or a drink in exchange for feedback on proof-of-concept builds. When the proof of concept was signed off, we hired native developers to rebuild. I managed that process end to end. QA was mostly manual: we had to test with the physical hardware in different homes, on different devices (iPads, Android tablets, Windows tablets, phones old and new). I still contributed code occasionally: pull requests in Kotlin or Swift when needed. I led the team until the native app caught up to the original and replaced it.
Hybrid (Angular, Ionic, Cordova)
The first version used Angular 1.4 with Ionic and Cordova wrapped around it so it could run on tablets. That was the practical way to get to market quickly. The data was incredibly granular. Updating the graph 10 times per second in a web view became a bottleneck on weaker connections. We used optimistic updates based on previous usage until the real-time data could be verified, then corrected the display if needed. Socket.io was the leading solution for real-time at the time, so we used it for WebSocket and heartbeat for uptime and diagnostics.
Native (Swift, Kotlin)
We moved to native because we were hitting limits with the hybrid approach. Bluetooth had issues on Ionic and Cordova. Push notifications were harder to get right than they are today. The graph was rendered in a web view, and the fast updates caused performance problems. Going native fixed that. The native apps shipped with a 4.8/5 rating across 100+ reviews.
Observability
Observability was minimal by today's standards. We used Google Analytics for usage tracking and basic error tracking to surface crashes. That was typical for the time.
CI/CD
Deployment was typical for 2015: build locally and upload via FTP. No CI/CD pipelines in the modern sense.
Accessibility
The app met WCAG 2.0 accessibility standards at the time.
Outcome/Impact
The app won App of the Year and Technology of the Year at the BusinessGreen Technology Awards 2017. The judges were impressed by the combination of advanced AI and an intuitive interface. The platform was covered extensively in the media, including the Evening Standard, TD SYNNEX Newsflash, and European Circuits. Verv was distributed through retailers like Amazon and Tesco, and the company raised investment from Centrica and joined Google's Launchpad startup programme.