six steps. one system of record.
This is the flow the app and backend run today. The state names are the real ones.
A business asks for coverage
Where, when, headcount, and required qualification. A quote and a prepay hold land before anyone commits.
Only eligible officers see it
Eligibility, availability, and qualification are checked on the server. One officer per slot. No double booking.
Presence is proven, not claimed
The server draws the geofence, measures distance, rejects mocked GPS and stale timestamps. Coordinates are discarded after the verdict.
A human signs off
An administrator reviews hours, adjusts billed time with a reason, and approves. The original check-out is never overwritten.
Balanced to the cent
Business charge, admin fee, and officer payout are computed in integer cents and must sum. Every record stores the rate and fee that applied.
Written down forever
Hash-chained events per shift, actor identity hidden from non-admin readers, exports locked in write-once storage for seven years.
Built on AWS
Built on AWS · encrypted. Customer-managed encryption keys and tenant isolation on every record.
No location retention
Only the verdict, distance, and accuracy are stored. Raw coordinates never touch the database or the logs.
Five, enforced by the API
Officer, Business Admin, Agency Admin, Finance, Auditor. Each route allows exactly the roles it should.