04Sourceful Energy / Case Study

Sourceful App

iOS and Android app for Sourceful Energy customers. Real-time monitoring, automatic battery optimisation, and multi-brand device control. Designed and researched alongside our app developer.

Client
Sourceful Energy
Role
UX, UI, research, supporting build
Year
2026
Status
Live
  • Optimiser screen with overnight battery schedule against spot price

    01 / Optimiser

  • Savings breakdown showing daily and monthly earnings

    02 / Savings

  • EV charging screen with smart charging schedule

    03 / Vehicles

  • Detailed history chart of consumption, production and grid flow

    04 / History

Optimiser, savings, vehicles, history. Four of the screens that make the live home read worth coming back to.

A small product team, one app

The Sourceful App is the consumer surface for everything the Zap gateway does in the home. Live energy flow, automatic battery scheduling against spot prices, EV smart charging, savings tracking, multi-brand device control. iOS and Android, free, in front of every Sourceful customer in Sweden.

It is not a side project. It is the only thing most users ever touch.

What it is not is the work of one designer at a desk. The app shipped because a small product squad worked tightly together: one app developer doing the lion's share of the build, me on UX, UI and research, and the wider Sourceful platform team behind us. My job was to be useful to that group, not heroic about my part of it.

How we worked

Co-located on Sourceful's product squad. Same standup, same backlog, same Figma file, same build. The app developer and I paired on most screens, sometimes literally on a call with the file open, sometimes async over a Loom and a comment thread. Decisions stayed light because the loop was tight.

Two rules made the pairing work. The dev never had to wait for "final" design. I shipped the next state in Figma fast, then iterated against what was already on the simulator. And I never specced what could be answered by sitting next to the build for ten minutes. A lot of the UI was decided in the IDE, not the design tool.

Decide in the simulator, not in the spec.

Working principle, 2026

What I owned

UX, UI, and the user-research loop. Information architecture across home, optimiser, devices, vehicles and history. The visual system, type, colour, iconography, motion. Empty states, error states, the whole onboarding flow from "download" to "first useful read."

User research was a constant, not a phase. We ran short interviews with new installs every week, watched first-launch sessions, and scraped App Store and Play Store reviews into a shared doc the whole team read on Mondays. Most of the IA shifts in the app, the move to a single live home screen, the savings card promotion, the EV split, came out of that loop rather than a workshop.

Optimiser screen with battery schedule

The home screen is the screen we returned to most. New users open the app dozens of times in the first week, mostly to check that the thing is working. That is a different need from a power user reading their schedule, and a different need again from a customer checking the savings number on a Sunday morning. We tested four versions of the home before settling on the live-flow read with a savings card pinned underneath.

iOS

App Store, Sweden

Android

Google Play

Weekly

Research interviews

1

App developer, paired

Code where it helped

I am not the app developer. Most of the Dart and Flutter is not my work. But I picked up code where picking it up made the team faster, mostly the things designers usually annotate and hand back: small layout tweaks, copy strings, motion timings, the fiddly bits of empty states, theme tokens. Pull requests rather than redlines.

The point was not to claim engineering. The point was to remove the round trip when the round trip was the bottleneck. The app developer kept ownership of the architecture. I kept ownership of how it looked and felt, and committed against that ownership when it was faster than writing a ticket.

  • Spot price screen showing current and upcoming €/kWh price for the SE4 area

    01 / Spot Prices

  • Optimiser plan view showing scheduled charge and discharge windows

    02 / Plan

  • Battery state of charge view across the day

    03 / State of charge

  • Devices list showing connected inverter, battery, EV charger and meter

    04 / Devices

  • Pair a new Zap gateway over Bluetooth

    05 / Pair Zap

Across the app. Spot prices, the optimiser plan, state of charge, multi-brand devices, and the Bluetooth pairing flow for adding a new Zap.

The harder problems

The app sits on top of a physical system that does not care about screens. Inverters drop offline. Batteries throttle. Spot prices rewrite themselves at 13:00 each day. The hard UX problems were the ones where the app had to stay legible while the underlying data was lying, late, or both.

Two examples. The optimiser schedule is computed against tomorrow's spot prices, which arrive mid-afternoon. Until they do, "tomorrow" is a forecast, not a plan. The first version of the screen treated forecast and plan as the same object. Customers told us, in research, that they did not trust a number they could not source. We split forecast and confirmed states with different visual weight, a small caption explaining what changes at 13:00, and a quiet animation when the day's plan locks in. Trust went up. Support tickets about "wrong" schedules went down.

Second, multi-brand devices. Sourceful integrates with most major inverters, batteries, EV chargers and V2X systems. The original devices screen tried to be brand-neutral and ended up unreadable, every device looked the same regardless of what it could actually do. We rebuilt the list around capability rather than brand, with the brand as supporting metadata. Same data, very different read.

The stack

Flutter on both platforms, sharing a single codebase. State managed locally, talking to the Zap gateway and Sourceful's platform APIs. Designed in Figma against a token set that mirrors the wider Sourceful design system. Distributed via the App Store and Google Play, free to download for any Sourceful customer.

  • Flutter
  • Dart
  • Figma
  • Zap gateway
  • Sourceful Platform
  • App Store
  • Google Play

Outcome

Live

iOS and Android

Free

For Sourceful customers

One

Squad, tightly paired

Daily

Active product surface

The app is the surface a Sourceful customer touches every day, and a small team got it there by working as one unit rather than as a relay. The lesson I carried out is that on a product squad this size, the design role is partly to do the design, and partly to remove every reason for the team around you to wait.