The need
Job costing compares the labor you sold with the labor your team actually worked, phase by phase. The two sides come from different places today. Budgeted hours follow the phase on each labor line in the quote, so Equipment Installation set to Finish is budgeted in Finish. Actual hours follow the task group of the task a technician picks when they log time, not the labor type they log.
So a technician can log Equipment Installation time and have it land in Engineering, because the task they chose sits in an Engineering task group. Time logged without a task has no phase at all. Budget vs actual by phase then looks badly off, and the only fix is to rebuild task groups so they mirror the quote's phases.
Why this matters
Phase-level job costing is how many integrators judge whether a job is on track and how they price the next one. When actuals land in a different phase than the budget, the report can't be trusted. Teams end up maintaining the same phase structure twice, once in the quote and again in tasks.
Open questions
- When a time entry's labor type and its task point to different phases, which should win?
- Should time logged without a task fall back to the phase of the labor it was logged as?
- Should the phase be visible, and editable, on the time entry itself?
- How should this apply to labor types used in more than one phase on the same project?
Possible directions (exploratory, not commitments)
- Let each company choose whether time entries take their phase from the task or from the labor type.
- Fall back to the labor type's phase on the project when no task is selected.
- Show the phase on the time entry, with an option to override it.
- Build a project's starting task groups from the phases in its quote.
Vote and comment if this affects how you track labor.