A practical way to track what each service job actually earns.
Your schedule is full. The crew is working. Another job gets finished, and the next one starts.
But which jobs actually leave enough money behind?
That question gets harder when labor, materials, and operating expenses put pressure on your pricing. TD Economics’ October 2026 commentary on the NFIB small-business survey describes renewed inflation pressure alongside labor-quality concerns. That is national context, not a measurement of Southern Utah businesses. Your own job records are what tell you where the pressure lands.
For a cleaning company, repair business, landscaping crew, or installer, a full calendar is not a profitability report. Job profitability tracking connects the work you sold with the resources it actually used.
Start with gross job margin, not a mystery profit number
For a simple first view, define these measures with your bookkeeper:
- Job revenue: the amount earned for the agreed work, adjusted for approved scope changes and credits, excluding sales tax collected for remittance.
- Direct job costs: labor, materials, subcontractors, and other costs attributable to that job.
- Gross job profit: job revenue minus those direct costs.
- Gross job margin: gross job profit divided by job revenue, expressed as a percentage.
Use that convention consistently. Some accounting reports include allocated production overhead in cost of sales, so their gross margin may differ from this first view.
Gross job profit is not business net profit. Office rent, administrative work, software, insurance, and other expenses still need coverage if they are not already included. The SBA’s break-even guide explains why fixed and variable costs both matter.
Do not subtract the same expense twice. If you allocate overhead to jobs, show it separately and reconcile it with your accountant. This is an operating view, not a replacement for your financial statements.
Keep the estimate beside the actual cost
Consider this hypothetical example, not a Night Radiant client result. All figures are illustrative and the arithmetic has been checked.
You sell a service job for $1,200. You estimate eight labor hours at a fully loaded cost of $40 per hour, plus $300 in materials.
- Estimated direct cost: $320 labor + $300 materials = $620.
- Estimated gross job profit: $1,200 minus $620 = $580.
- Estimated gross job margin: $580 divided by $1,200 = 48.3%, rounded.
The completed job takes 12 labor hours, and materials total $420.
- Actual direct cost: $480 labor + $420 materials = $900.
- Actual gross job profit: $1,200 minus $900 = $300.
- Actual gross job margin: $300 divided by $1,200 = 25%.
The revenue did not change. The amount remaining before overhead did.
The $40 rate is a labor cost assumption, not a customer billing rate. A fully loaded rate should reflect applicable employer payroll taxes, benefits, and insurance, not wages alone. Xero’s job costing guide describes these labor inputs and the estimate, track, analyze cycle.
If the owner performs work without wages appearing against the job, track those hours too. An explicitly labeled owner-labor allowance can help evaluate pricing, but it is not automatically a booked payroll expense.
Build one job record from the tools you already use
Start with your accounting system, schedule, time records, and material receipts. A shared worksheet or an existing project feature may be enough to test the method. You do not need to buy another platform before understanding the gaps.
Give each job one consistent identifier. A customer name alone is not enough when the same customer books several visits.
The minimum record should include:
- Job ID, service type, completion date, and agreed scope.
- Estimated revenue, labor hours, labor cost rate, and materials.
- Actual earned revenue, credits, and approved scope changes.
- Actual hours, labor costs, materials used, and subcontractor costs.
- Source references, missing items, and a preliminary or reconciled status.
Use the job ID in the scheduling entry, time log, accounting project, and receipt record wherever the existing tools allow it. If records cannot carry that ID, maintain a reviewed mapping rather than guessing from similar names.
Assign materials consumed by the job, not an entire bulk purchase used across several jobs. Account for returns and credits. Include attributable travel or callback time under a consistent rule.
Keep customer billing rates separate from employee cost rates. When payroll actuals become available, reconcile provisional labor costs rather than adding both versions together.
Review exceptions before trusting the margin
Choose an owner or administrator to close the record after each job. Their first task is checking completeness, not admiring a dashboard.
Missing time, an unmatched receipt, or a late subcontractor bill should keep the margin labeled preliminary. A blank cost field must not silently become zero.
Then compare estimated and actual hours, materials, and gross margin. Ask what changed: more difficult access, extra preparation, rework, an unrecorded scope change, or a cost assumption that needs updating?
Compare similar work before drawing conclusions. One unusual repair should not dictate the pricing of every repair you sell. An apparent low-margin job may have incomplete records rather than a bad price.
Have the owner review proposed changes to future estimating assumptions. Do not rewrite an accepted customer price because a report found a variance.
Where AI helps, and where it should stop
AI can suggest a cost category, extract a candidate job reference from a receipt, or summarize why actual hours exceeded the estimate. A person should review uncertain matches against the original record.
The arithmetic belongs in deterministic formulas or accounting reports. Job revenue minus verified costs should produce the same result every time, without asking a language model to infer missing numbers.
Limit access to the records needed for the task. Employee pay information deserves tighter access than a general operations dashboard.
No automatic price changes. No payroll adjustments. No silent reassignment of costs between jobs. Those decisions need authorized human approval.
Start with a small set of completed jobs
Pick one recurring service and review a small set of recent jobs. Find out whether the necessary records exist and whether someone can reconcile them reliably.
If they cannot, fix that capture step first. A practical workflow audit can help identify where the job ID, hours, or receipts get lost.
Night Radiant helps Southern Utah small businesses connect existing tools and build practical operational workflows. For job profitability tracking, that means connecting the records, making the calculations visible, and keeping decisions with the owner.
If you want help mapping that workflow, talk with Night Radiant. Start with the records you already have, not a promise that another app will make every job profitable.

