Offline-first field operations for 4,000 technicians
Platforms
iOS · Android
Duration
22 weeks
Delivered
2025
- Faster average job completion
- 62%Faster average job completion
- Internal app store rating
- 4.9★Internal app store rating
- Crash-free sessions
- 99.98%Crash-free sessions
- Records lost to sync conflicts
- 0Records lost to sync conflicts
What we were handed.
Four decisions that mattered.
- 01
Rebuilt the data layer as an offline-first store with a deterministic conflict-resolution policy, so a job edited on two devices reconciles to a single correct record rather than the last write winning.
- 02
Designed the job flow around one-handed use with gloves on: 56pt targets, high-contrast states legible in direct sunlight, and a completion path that never requires typing.
- 03
Moved photo capture and upload into a background queue with resumable transfers, so a technician can finish a job and drive away while 40 megabytes of evidence uploads behind them.
- 04
Shipped a supervisor view built on the same sync engine, giving dispatch a live picture that stays accurate even when half the fleet is dark.
Built with
- Swift
- Kotlin
- SQLite
- CRDT sync
- Postgres
Where it landed.
We had been told twice that offline-first was not realistic for our data model. Devora had a working prototype reconciling real conflicts in nineteen days.