Internal standard operating procedure for configuring, monitoring, and interpreting labor controls during the Phase 1 pilot period. Do not deviate from this guide while the pilot is active.
A job is eligible for the pilot labor tracking program when all ten of the following are true:
scheduled or in_progressapproved_labor_hours is set (non-null, > 0)approved_crew_size is set (≥ 1)crew_lead_id is assignedassigned_supervisor_id is assignedJobAssignment exists with status acceptedrequired_photo_types has at least before and after selectedJobTask exists for the jobSet approved_labor_hours before the crew is dispatched, ideally when the job transitions to approved_to_schedule or scheduled.
This is the maximum simultaneous headcount approved for the job at any given time, not the total number of workers across all visits.
Select from: arrival, before, progress, after, completion, trade_specific.
Open the Labor Hygiene Dashboard each morning before dispatch and each evening after crews clock out. Review these categories in order:
total_hours. These must be corrected before end-of-week payroll.clock_in_location_status is "unavailable". Follow up with the employee to confirm their location at clock-in.lunch_start. Confirm with the employee and set lunch_supervisor_override if lunch genuinely did not occur.DailyFieldReport for the prior work day. Contact the crew lead.JobPhoto records. Follow up before the job closes.JobAssignment. Determine if self-dispatch occurred and document it.on_trackBudget consumption below 75%. No action needed.
watch75–89% consumed. Supervisor notified. Review scope and remaining work. Prepare to request additional hours if needed.
over_budget90–99% consumed. Supervisor notified. Crew should continue working — do not pause the job. Submit a LaborBudgetApproval request immediately.
approval_required100%+ consumed. A LaborBudgetApproval record has been auto-created. Admin must review and approve or deny additional hours. Time entries continue to be recorded regardless of status.
recalculateJobLaborBudget automation each time a TimeEntry is saved. It does not update in real-time on screen — refresh the page to see the latest value.