Work / Records and approvals
Keep track of field work across sites.
A crew works at several outdoor sites. The office needs to know who was where, for how long, and what was done, without asking crews to type anything.
- Setting
- Field crews across several outdoor sites
- Users
- Crew members on phones; an admin on a dashboard
- Languages
- English and Spanish
- Status
- Working demo, deployed as a sandbox
The workflow
A field-based nonprofit working under public-agency contracts needs hours and work performed recorded per site. Crews are outside, often wearing gloves, and have little patience for a form. The office still needs a record it can review and export.
The design constraint I started from: very few taps for the crew, and no paperwork to catch up on at the end of the day.
What the demo does
- Check-in by opening a link. Each worker has a personal link. Opening the page logs their location against the site they are standing in. Staying put extends the visit; moving to another site closes one visit and opens the next.
- Drawn site boundaries. An admin outlines each site on a satellite map, as one or more areas. Sites can't overlap.
- Spoken work report. One large microphone button: tap, say what was done, tap. The speech is transcribed and matched against a prescribed list of work types. Anything that doesn't match the list is shown separately as unmatched and is never forced into a category.
- Work-type buttons. The same list is available as toggles, so a worker can tap instead of talk, and tap again to undo.
- Before and after photos from a live in-page camera, filed to the visit where they were taken.
- End-of-day review. A worker sees each place visited that day and can add pills or photos to the right one.
- English and Spanish. The crew page switches language. Spanish reports are matched to the same work types and shown to the admin with an English translation.
- Admin dashboard. First in, last check-in, time on site, work done, photos, and a CSV export.
Why I made these choices
Matching speech only against a fixed list keeps the record consistent while leaving room for the unexpected. If the AI step fails, a simple keyword matcher still saves the report, so a crew member is never stuck.
Location is not tied to the microphone or camera. The page keeps a position fix while it is open and attaches the latest one to every report and photo, so work is filed under the place where it happened.
When a phone fix lands outside every drawn site, the demo suggests the closest one and asks the worker to confirm. The admin sees that it was confirmed by the worker, not detected.
What stays manual, and what I haven't decided
- An admin names places the system doesn't recognize, and can redraw a boundary. Saving it re-files past visits to the new site.
- Someone reviews unmatched work.
- Hours are computed by a stated rule. A forgotten check-out is closed at the last sign of life and is shown as 'no check-out', never padded. Whether that rule fits a contract's reporting requirements is a decision for the organization.
- Voice audio is not kept, only the transcript. Photo retention is undecided and would depend on what the contract requires.
- Sign-in uses personal links, which is acceptable for a sandbox. A production version would move to a stronger method.
- The Spanish wording was drafted by me and needs review by a native speaker before real use.
- Not built: per-worker timesheet documents, and alerts such as a worker who never checked out.
- OpenWorker opens their link; location is checked against the drawn sitesAutomatic
- ConfirmIf the phone is outside every site, it suggests the nearest one and asksPerson
- ReportWorker speaks or taps what was done; before and after photos are addedPerson
- MatchSpeech is transcribed and matched to the prescribed work list; the rest is flaggedAutomatic
- ReviewAdmin checks times, work, photos, and unmatched itemsPerson
- ExportAdmin exports a CSV for reportingPerson