An eMSP app is a real-time systems product wrapped in a consumer UI. Pretty maps are not enough if start and stop are unreliable. Drivers judge you in one moment: did the charger start, and was the bill fair?
This post is how we think about reliability for easyplug — the non-negotiables, the agent layer, and the metrics that actually matter.
Non-negotiables
Session state machine
Start, active, stopping, finished, failed — with recovery if the app is killed mid-session. Drivers reopening the app should land on the live session, not a blank home screen. Roaming lag is not an excuse for lost state.
Honest errors
Map every backend code to a human sentence and a next action. “Error 503” is not a product. Prefer classes drivers understand: offline, rejected, timeout, vehicle not ready, payment required.
Offline and low-signal mode
Show last-known station status, explain RFID / Plug & Charge fallback, and queue stop or start when the network returns. Highway exits are not a fiber lab.
Price and energy stream
Users stare at kW and €. If the stream stalls, say so. Do not freeze a fake number that will disagree with the receipt.
The agent layer
A conversational agent only helps if it can:
- Search with real filters (power, free, connector, price when known)
- Start and stop sessions
- Explain failures in the same language as the rest of the app
- Open support with full session context
Otherwise it is a chatbot on top of a broken flow. We treat the agent as a first-class surface, not a demo.
Metrics that matter
- Remote start success rate (home network vs roaming)
- Time-to-energy after Start
- Stop success and stuck-cable rate
- Support contacts per 100 sessions
- Price dispute rate
We optimize those — not only app-store screenshots. Operators feel the same numbers as utilization and ticket volume; see OCPP for operators .
What’s next
Deep dives on roaming failures , transparent pricing , and driver support .

