Case study · 2025 · Power Utilities · Construction
Offline-First Field App for a Utility Services Contractor
A utility services contractor ran 200 technicians on printed job packs and end-of-day data entry, because their work happens exactly where mobile coverage ends: substations, easements, rural feeders. We built an offline-first Flutter app that assumes no signal by default — jobs, maps, forms, and photos all capture locally and reconcile cleanly when the truck rolls back into coverage.
Screens are illustrative recreations — client interfaces stay confidential.
The challenge
Every prior app attempt had failed the same way: built online-first, it fell apart in the field, and crews went back to paper within weeks. Trust was the real constraint, not technology.
The data mattered downstream — utility clients audit completed work orders, and photos, form values, and timestamps re-keyed from paper at 6 p.m. were both late and error-prone.
What we built
Offline as the default path
A local SQLite store is the source of truth on device; sync is an opportunistic background process with field-level conflict resolution, so nothing a technician does ever waits on a signal bar.
Job packs that brief themselves
Each job carries its site maps, safety notes, asset history, and required form set, downloaded overnight on depot Wi-Fi — crews start the day fully briefed with zero connectivity.
Structured capture, not free text
Dynamic forms per work type with validation at entry, required photo checkpoints auto-tagged with asset and location, and digital sign-off — audit-ready the moment it syncs.
Crew-tested rollout
Two crews ran a four-week field pilot with weekly ride-alongs; the backlog was reordered from what broke in trucks, not what looked good in the office.
The results
- 6.5 hrs
- Weekly time returned per crew
- +17 pts
- Same-day job closure
- 100%
- Capture without coverage
paperwork and end-of-day re-keying eliminated
63.8% → 80.6% over six months
all job data records offline and syncs later
- Crews recovered about 6.5 hours per week previously spent on paperwork and evening data entry.
- Same-day job closure rose 17 points as completion data started arriving with the sync instead of the next morning.
- Work-order audit findings from missing or mismatched documentation dropped to near zero in the client's quarterly review.
Client identities stay confidential; figures are rounded from end-of-engagement delivery reporting.
Stack & expertise
- Flutter
- Dart
- SQLite
- GraphQL
- Firebase (push)
- Mapbox tiles