Field services · 62 days
Field-operations app for crews who work offline
A services business replaced paper checklists and a brittle PWA with a real native app their crews actually use.
The problem
Crews ran jobs out of a PWA that broke whenever the truck lost signal between sites. Photos uploaded twice or not at all. Dispatch had no reliable picture of where a job stood until the foreman called in. The ops director had spent a year asking three agencies for a native app and getting six-month quotes she couldn't justify.
Constraints
- Offline-first wasn't optional — half the job sites had no cell coverage for hours at a time.
- Crews ran a mix of three-year-old Android handsets and personal iPhones — the app had to feel native on both without two codebases.
- Dispatch software was a 12-year-old on-prem system with a SOAP API the client couldn't replace this year.
Approach
- Weeks 1-2: rode along on six job sites, watched four foremen run a full shift, and rewrote the job-card flow before writing a single screen.
- Weeks 3-6: built the app on Expo with a local SQLite store, conflict-resolution rules for the three fields that actually clash, and a background sync queue tuned for spotty connectivity.
- Weeks 6-8: wrote an adapter that translates the dispatch SOAP API into a typed REST surface — the legacy system stays, the app talks to something modern.
- Weeks 8-9: TestFlight and internal Android distribution to two crews for a full pay cycle, fixed the three things that only show up under real shift conditions, then rolled out company-wide.
Artifacts handed over
- iOS and Android apps from one Expo codebase, distributed through the App Store and an internal Android channel.
- A REST adapter the client owns, sitting between the new app and the legacy dispatch system.
- An offline-conflict playbook documenting every edge case we hit in the field, with the resolution rule for each.
Outcome
Crews stopped calling dispatch to confirm whether yesterday's job actually closed. Photos land once, time-stamped, with the job. The ops director sees an accurate board for the first time in three years. The legacy dispatch system, which everyone assumed would have to be replaced before mobile could work, is still running — the adapter took the pressure off. The two-month build replaced a one-year procurement cycle.
Tech
- Expo
- React Native
- TypeScript
- SQLite
- Node.js
- AWS
Six-month projects, finished in six weeks. Mobile takes a little longer — field reality is the long pole, not the code.
Anonymized for client confidentiality.
Got a similar shape?
Send a paragraph. We’ll send back a plan inside 24 hours.
Get a quote→