Once a crew member is clocked in, the portal shows the current stage's checklist: the project's own checkpoints or the standard milestone catalogue for that stage type, with items the office marked not-applicable struck through and untappable. Ticks go through the exact same save path the office's Gantt uses.
Also called: tick off checkpoints on my phone · mark stage done from site · crew progress updates
The man who did the work ticks the same box the office would have
Once he is clocked in his screen shows the current stage's checklist — the project's own checkpoints, with anything the office marked not-applicable struck through and untappable. The tick runs through the same save path the office's schedule uses. The field and the desk therefore cannot end up holding two different versions of what is done.
The last box is a different kind of tap, and it says so out loud
Every checkpoint ticks silently except the final one. That one routes to a screen that names the consequence — the office is told, and the customer sees the stage complete on their page — with a Not yet escape underneath. A customer update cannot be unsent, so the tap that sends it should not look like the five taps before it.
Photo proof hangs off the checkpoint, not off a text thread
A photo taken from the field carries the project, the stage, who took it, when and roughly where, with nothing typed. It attaches to the checkpoint it proves, so the shot of the posts sits in the job file beside the tick that says the posts were set. Two visibly different buttons decide whether it stays internal or goes to the customer; there is no toggle to misread.
You decide who is allowed to say a stage is finished
Marking work complete from a field link is crew-leader-only out of the box. One switch opens it to everyone on the crew, with no deploy and no ticket. Someone who cannot use the checklist is not shown it, and the server checks again on the way in. Not every builder wants a first-week labourer telling a customer the roof is on.
The field can say done; undoing it stays in the office
There is no un-tick on the phone. Completing the last checkpoint emails the customer, advances the job and starts the next stage's clock, and a screen that could reverse that would be lying about what has already gone out. A mistake is a phone call to the office, which is exactly what it was before any of this existed.
- 1crewStage() reads gantt_projects.tasks[].checkpoints (or STAGE_MILESTONES), stage_milestones for what is ticked, and project_checkpoints.na_at for what does not apply.
- 2Which stage you are on comes from the open shift, never from the client.
- 3A tick posts the WHOLE milestone map for the task through saveMilestones, because the legacy contract is a map not a delta.
- 4The stage-instance model is dual-written fire-and-forget via complete_project_checkpoint.
- 5When the last applicable box is ticked, notifyStageCompleted runs the same customer email, internal notification and automation path the Gantt fires.
- 6A stage with no checklist at all gets a 'Mark this stage done' button that calls the atomic complete_project_stage RPC.
Job progress lived in two places: the schedule the office reads, and whatever the crew remembered to phone in. The crew's checklist is the same checklist the schedule is built from, so the two cannot disagree, and ticking a box in the field runs the same rules as ticking it at a desk — including deciding whether the customer gets told. Crews can say a thing is done; undoing it stays with the office, because completing the last item messages the customer and a field screen that could un-message them would be lying about what was sent. Fixing a mistake is a phone call to the office, which is what it was before any of this existed.
- Progress known only by phoning the crew.
- Two versions of 'done' between the field and the office.
- Stage completion side effects being skipped when the field reports progress.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →