FieldAudit Pro is a mobile-first, offline-first app for teams recording physical defects: photos, markup, voice notes, locations, owners, due dates and branded PDF reports.
It keeps a defect's photo, note and owner in one record, so nothing gets lost between the site walk and the report.
Who it's for
Inspectors, site and project managers, engineers, surveyors, safety and quality inspectors, facility managers and contractors. Snag lists, punch lists, handovers and site walks, done by teams.
What it does
- Organisations, clients, projects with nested locations and assets, inspection types and checklists.
- Findings with photos, on-photo markup, voice notes, priority, status, assignee, due date and full history.
- Team roles, invitations and multiple organisations.
- Works with no signal, and syncs when there is one, with an indicator that shows what's still waiting.
- Branded PDF reports from a template library.
- AI where it helps: report sections written from bounded data, and report templates generated from a plain-English objective.
- An MCP server so Claude and Codex can read inspections and add findings.
-
Locations -
Inspection -
Checklist
How does it sync without losing work?
By deciding up front what happens when two devices disagree.
- IDs are created on the device, so a record exists the moment it's captured.
- Pulls page by a single server sequence, not by timestamp, so clock skew between devices can't skip a row.
- Last writer wins on a finding's own fields, guarded by the server's timestamp.
- Child records are append-only, so two inspectors adding photos to the same finding both win.
- Deletes are tombstones, not holes.
- Every change goes through an outbox.
The cost: if two people edit the same field of the same finding at once, one edit wins. The design makes that rare, because what inspectors add at the same time, like photos, is append-only and never collides.
Agents, with guardrails
- The MCP server can't delete or overwrite anything. Twelve tools read and four only add. A test fails the build if any tool so much as imports an update or delete path.
- Template generation resists prompt injection. The fixed scaffold goes in the system prompt, the user's objective in the user prompt, and the output can only use a catalogue the code owns.
- Personal access tokens minted in the app, stored hashed, revocable, pinned to one organisation, rate-limited on every request.
Decisions
What happens when the plan changes halfway through? #
In June 2026 the product moved from offline-only with an iCloud backup to offline-first with team sync. The spec changed first, then the code. Every agent session after that worked from the new plan, because the new plan was the one written down.
Why does the free tier never gate capture or sync? #
Because the record of the work has to be complete to be worth anything. Only premium output is paid.
The numbers
- 328 commits, 319 of them in June 2026.
- About 40,000 lines of Dart and 24,000 lines of TypeScript.