01 The problem
Field service software is designed in offices by people with reliable wifi and clean hands. The actual user is under a house, holding a flashlight, wearing gloves, in the dark, with one bar of signal or none.
Strata is diagnosis for licensed plumbers: point the camera at a component and it identifies it and walks a hypothesis-elimination flow; hold to speak and it transcribes; say “Hey Strata” and it listens hands-free. It finds the nearest supply house that has the part.
The requirement that drove the architecture is that none of that can depend on the network.
02 How it works
03 Cut the signal
Kill the network and watch where the query goes. Offline is not a degraded mode here — it is the mode the app was designed around, because the crawl space has no signal.
Writes made offline queue in an idempotent outbox — each one keyed, so replaying the queue twice cannot create a duplicate record. Reconnect and watch it drain.
04 The parts that were actually hard
- Offline is a product decision, not a fallback. Full diagnostic guidance runs from a local SQLite FTS5 index, so the app is useful with the radio off rather than showing a spinner.
- An idempotent outbox. Feedback and job summaries queue locally and replay on reconnect. Because replay can happen more than once, every queued write is keyed so re-sending it cannot duplicate a record.
- Designing for gloves and sunlight. 56px touch targets, 7:1 contrast, voice as the dominant input, one clear action per screen. This sounds like polish and is actually the difference between used and unused.
- Chunking the manuals properly. Ingestion uses section-aware chunking with a parent/child schema in Pinecone, so a retrieved paragraph carries the context of the procedure it belongs to.
Honest limits. It is a diagnostic aid for licensed professionals, not a substitute for one, and GPT-4o Vision misidentifying a component in a dark crawl space is a real failure mode rather than a hypothetical one. The offline cache is a snapshot, so guidance can go stale between syncs.