You know which jobs made money when every dollar that left the business can be attached to a job, a date and a document, inside the period you close. Until that is true, a per-job profit figure is an opinion with decimal places. Cost lands late, in the wrong column, on the wrong job, or a credit never lands at all.
Written by JD Davenport, who still sells for a living. Updated 4 November 2026.
Most contractors find out once a year, at tax time, on a number that covers everything at once. That number is usually correct. It is also useless for the decision you actually have, which is whether the work you are selling right now is the work you should be selling more of.
These two facts are not in conflict, and understanding why is most of the work. Your bank reconciles. Your profit and loss is accurate. And your job costs are still wrong, because a job's cost is not a number you hold. It is a number that assembles itself over weeks, from four directions, and it gets there late.
Cost lands late. The job closed in March. The disposal invoice arrives in May. If you looked at March in April, March looked profitable.
Cost lands in the wrong column. A labor invoice with dump fees on it. The whole thing goes to labor, so labor looks high and disposal looks free, and next year you price both wrong.
Cost lands on the wrong job. Two jobs on the same street, one purchase order, one crew. The material goes to whichever job number got typed. One job carries a loss it did not earn and the other shows a margin it did not make.
Credit never lands. Returned material gets credited to the account rather than to the job. The account is right. The job is still carrying material that came back on the truck.
None of those is carelessness and none of them is fixed by asking people to be more careful. They are what happens when cost information arrives from four systems on four timetables and nothing forces them to agree.
Three things, and they are testable rather than aspirational.
One row per payment, not one row per invoice batch. Leaf level. A total is not evidence. If you cannot see the line items, you cannot test them, and a summary that agrees with itself tells you nothing about whether it agrees with reality.
Every payment has a document behind it, or is marked as not having one. Missing paperwork is not fraud. Some subcontractors invoice by text message. But a payment nobody has checked has to look different from a payment somebody checked and passed, or your clean rows and your untested rows are indistinguishable and the whole register is worthless.
A stated window and a stated basis. "Revenue" is not a number. "Collected, date-closed basis, 1 January to 31 July" is a number. Most arguments about job cost are arguments about the denominator, discovered late.
Reconciliation is not reading every invoice. It is running the same small set of tests against every row, so that the exceptions surface rather than being noticed.
Twelve tests cover almost everything: does the payment have a reference, does that reference exist, does the payee have an agreed rate, does the amount match that rate, is it coded to a job that was open on that date, was the same amount paid twice, did a credit ever arrive for returned material, and so on. Each one is a pass or fail column, not a task on somebody's list.
The point of running them on every row rather than on the odd-looking ones is that the odd-looking ones are the ones you already know about. The expensive rows are the ones that look normal.
A first pass on a year of payments is a day of work, not a quarter. Build the ledger in about ninety minutes, test it against itself for forty-five, vouch documents in bulk for an hour, and spend the rest on the exceptions that survived.
The output is not a profit number. It is a register of every dollar that did not reconcile, what failed on it, and what it would take to close the line. The profit number comes after that, and it is trustworthy in proportion to how short that register is.
Once you can state per-job profit, check the shape before the average. Ask whether your shortfall is concentrated in a handful of jobs or spread evenly across all of them. Those are different problems with different owners, and the average hides which one you have. Concentrated means execution. Even means pricing.
Averages hide tails, and tails are usually where the money is.
The twelve tests, the register, the workbook and a browser tool that runs the mechanical half in about a minute are The Job Cost Standard. If the losses turn out to be concentrated, the gates that catch them are The Production Standard. More answers on the questions page.