Field intelligence, end to end.

Two PWAs in production. One pipeline behind them. Razor-thin clients gather reality from the field; the shared pipeline converts it into actionable structure.

inputpaper / memory / field notes
processworkflow / audit trail / sync
outputrecords / summaries / decisions

The thesis

Capture should be the cheapest part of an operational system. A phone with a browser, a handful of structured fields, a tap to submit. The value is in conversion — turning unstructured field reality into queryable, durable, role-scoped operational data.

So: build clients thin enough to deploy as a Web App Manifest install on any phone or Chromebook. Build the pipeline once. Add new clients by writing another tiny PWA pointed at the same shared backbone.

The pipeline

Each step is a small, focused stage. Adding a new client adds another writer at step one; the rest of the chain is reused.

  1. 01Capture: a PWA installs to the home screen. Site, employee, geolocation, optional audio + photo + typed note. One tap to submit.
  2. 02Ingest: a stdlib Python intake server validates the submission and writes a CouchDB document. Audio bytes stay on local disk; metadata becomes the source of truth.
  3. 03Transcribe: a Mac-local watcher pulls audio, drops it into a Whisper inbox alongside a sidecar JSON carrying the structured context.
  4. 04Extract: the transcript is parsed for site observations, callouts, retention risks, access constraints, onboarding signals. Structured fields from the sidecar override text-detected guesses.
  5. 05Dispatch: events become queue jobs; the queue processor routes them by routing flag — personal entries to the journal, site-tagged observations to the site note, employee-tagged to the person note.
  6. 06Project: the Obsidian vault is the canonical design model. HTML projections give role-scoped views — an area manager on a Chromebook sees the operational state without ever touching the vault.

Field Capture — production

Ten active users. A photo + audio + structured-observation PWA used daily by B&T Building Services area managers and supervisors. Pick a site, pick employees, snap photos, optionally record a voice note, submit. The submission lands in CouchDB; the pipeline turns it into a timestamped section in the site's living about page in the operational vault.

Per-person bearer tokens with scoped site/person authorization. Tokens cached in localStorage after first tap; Add-to-Home-Screen installs are first-class.

Try Field Capture

photos.gregstoltz.com

Without an access token you'll see the paste prompt — the auth gate works as designed. The PWA still installs cleanly.

Voice Memo — operations + personal

A sister PWA. Same pipeline. Same Web App Manifest install pattern. A mode toggle at the top picks routing intent: operations memos route through the site/employee dispatcher; personal entries route to a journal in a separate vault.

Operations mode captures site, employees (grouped by site with the selected site jumping to the top of the picker), geolocation, optional typed note, and audio. Personal mode collapses to just audio and a note.

Try Voice Memo

voice.gregstoltz.com

Same paste-prompt-on-no-token behavior as Field Capture. Add to Home Screen on iOS or Android for the standalone install.

The pattern is the product

Two PWAs sharing one pipeline is a proof of concept, not a finish line. The shape generalizes: any new field-intelligence channel is a fourth client that writes to its own CouchDB database, drops sidecar metadata alongside its uploads, and inherits transcription, extraction, dispatch, and projection for free.

The substantive engineering investment lives once, in the pipeline. The marginal cost of capturing a new kind of field observation collapses to writing a small PWA.