Three Costs Never Reach the Job, and All Three Are Real Money
· 7 min read · Written by Faceela Research & Editorial Team
Reviewed by Ahmed Hassan Algammal — Founder and Enterprise Systems Consultant
The job made money. The cost sheet says so, the estimate was beaten by a little, and the file is closed.
Then the same client asks for the same thing again, you price it from the last one because that is what a sensible business does, and the second job loses money in a way nobody can explain. So does the third.
Nothing went wrong on the second job that did not also go wrong on the first. The difference is only that on the first one you were never shown it.
The cost sheet cannot show you what is missing from it
Open a job cost sheet in almost any workshop and you will see material issued, hours booked, subcontract purchases raised against the job, and a total. Read it for as long as you like. Nothing on it will tell you that something is absent, because absence does not get a row.
That is the whole mechanism, and it is worth saying slowly. Every cost in the business is incurred — the money left, the hour was worked, the invoice was paid. Only some of those costs are attributed — connected to the job that caused them. The gap between the two is not visible from either side. The ledger shows the incurred and does not care which job. The job sheet shows the attributed and cannot report a negative.
So a job cost sheet is not a measurement. It is a measurement of the part of the cost that had somewhere to go.
The shape of it
Everything a job costs, and the three that never arrive
Inside the factory
Material issued to the job
Boards, sections, hardware and glass drawn from the store against a cutting list or a requisition.
Material wasted on the job
The offcut the drawing caused, charged to the job that caused it rather than absorbed by the workshop.
Direct labour by operation
Cutting, edging, assembly, welding, fitting — booked per operation, so the comparison against the estimate can be made per operation.
Machine time on the constraint
The press, the paint line, the CNC, the welding bay. The hour that decides how much work the building can hold.
Rarely reaches the job
Rework inside the workshop
A unit stripped and rebuilt because the drawing changed, the finish failed or the fitter damaged it. It consumes hours, material and booth time a second time.
Where it lands instead: General production. It looks exactly like new work, because it is done by the same people on the same machines.
Outside the factory
Delivery and installation
The truck, the crew, the lift booking and the hours actually spent on site rather than the hours allowed.
Site conditions
Access, floor level, out-of-square, no power, the third visit because the room was not ready.
Variations executed and never billed
Approved in a message, built the same week, and never turned into an invoice line — worth 8% to 12% of contract value in this trade.
Rarely reaches the job
External finishing operations
Galvanising, powder coat, duco, toughening. Your material, at their premises, invoiced in their unit weeks after the job shipped.
Where it lands instead: A subcontract expense account for the month the invoice arrived, with the job it belonged to already closed.
After the job leaves
Rarely reaches the job
Post-handover attendance
Snagging visits, defect call-outs, replacement hardware, the van and the two men who go back for months.
Where it lands instead: Workshop wages and vehicle costs in the month it happened. The job was closed when the last invoice was raised.
The estimate it should be read against
Not a cost, but the baseline. An actual with nothing to subtract from is a number, not an answer.
What the three have in common
None of them is disputed, hidden or hard to price. Each one happens at a distance from the shop floor — a second pass, another company's yard, a month after handover — and the record was designed around the first pass, this building, and this month.
Distance from the shop floor predicts which costs go missing
Look at the three marked in the figure and notice they are not random. Each one happens at a remove from the place the record was designed around.
Rework is the same building, the same people and the same machines — but a second time. Your system books labour to a job when a man scans on, and the man scanning on to rebuild a wardrobe he already built once is scanning on to the same job with no way to say which pass this is. So the hours land, and they land as production. The job absorbs them and nobody learns that the job was made twice.
External finishing is the same pass but somebody else's building. Material leaves your store, a galvaniser or a powder coater works on it, and the invoice arrives weeks later priced in kilos or square metres against a job number nobody wrote on the delivery note. That is a whole article on its own — three tons of steel at the galvaniser — and the short version is that the cost comes back long after the material did.
Post-handover attendance is the same building again, and the same people, but a different month — and by then the job is closed. Two men and a van go back for six months and the job that closed while they kept going has no line left open to receive them.
One pattern underneath all three: the record captures the first pass, in this building, this month. Everything that is a second pass, or somewhere else, or later, has to be caught deliberately, and nothing in the system asks for it.
The ledger is not wrong. It was built to answer a different question
It is worth defending the accountant here, because the usual reaction to this article is to assume the finance function has been sloppy.
It has not. Every one of those costs is in the accounts, correctly classified, in the right period, ready for an auditor. Wages are in wages. The galvaniser is in subcontract expense. The van is in vehicle running costs. The books are right.
They are right by nature of expense, which is the question a statutory account exists to answer. What did this business spend money on this year? — answered perfectly. Which job consumed it? — never asked, because the ledger has no column for it and was never supposed to.
The consequence is specific. A company can have accurate books and no idea which of its jobs make money, and those two facts sit together comfortably for years. The gross margin at the bottom of the P&L is true. It is also the average of a set of jobs you cannot see individually, and an average conceals a loss-making half by construction. That is the same arithmetic behind why your ERP dashboard is lying to you.
What the complete record is actually for
The point of attributing cost is not tidiness. It is that a small number of expensive decisions are unanswerable without it, and every one of them is being made anyway.
| The decision you make anyway | What the ledger can tell you today | What it takes to answer it properly |
|---|---|---|
| Should we bid this kind of work again? | Total gross margin for the year | Margin by job type, with rework and site time inside it |
| Is this client worth keeping? | Revenue by customer | Cost by customer, including the attendance after handover |
| Is our wastage factor honest? | One percentage in the estimate | Achieved yield per material, from jobs already cut |
| Should we bring powder coating in-house? | Subcontract spend for the year | Spend by operation, plus the days of lead time it costs you |
| Which operation runs over its estimate? | Total production wages | Hours by operation against hours estimated, per job |
| Are the site crews the problem? | Installation labour in total | Site hours per job against site conditions on that job |
| What rate should we quote next year? | Last year's average | A rate build-up fed by actuals, not by last year's guess |
Read the middle column as a set. Every answer in it is a company-level number, and every question in the left column is a job-level question. That mismatch is the whole problem, and it does not get better with a bigger report. It gets better with an attribution.
The estimate is half of it, and it has to survive
There is a second failure that turns a good cost record into a useless one, and it is quieter than the missing costs.
An actual with nothing to compare it against is a number, not an answer. Knowing a job consumed a certain amount of oak tells you nothing until you know what it was supposed to consume. Which means the estimate has to be kept, at the same level of detail as the actual, and it has to survive the job — not be overwritten when the drawing changed, not be replaced by the revised quotation, and not live in a spreadsheet somebody has since reused.
That is harder than it sounds in this trade, because estimating joinery jobs produces a document that is edited many times before it is agreed. What has to be frozen is the version the job was sold on. Everything after that is a variation, priced separately, and worth 8% to 12% of contract value in approved changes that this trade routinely never bills at all.
Freeze the sold estimate. Let variations add to it as separate lines. Then the comparison at the end is between two things that were built the same way, and the difference means something.
What to make a vendor show you
On a live system, with a real job, not on slides.
- Show one job's cost sheet with material, labour by operation, machine time and external purchases on it, side by side with the estimate it was sold on.
- Book an hour of rework against that job and show it separately from the original production hours on the same sheet.
- Show estimate against actual line by line, not as two totals.
- Add a cost to a job that has already been handed over, and show the sheet change.
- Send material out to an external finisher and bring it back, and show the finisher's invoice landing on the job it belonged to.
- Change the drawing mid-job and show the estimate baseline surviving the change, with the variation as its own line.
- Report margin by job type, by customer and by foreman across a year of finished jobs, on one screen.
Item 3 is the one that decides it. Almost every system can produce two totals and a difference, and a difference at total level tells you a job lost money without telling you where — which is exactly as useful as the P&L you already had. Line by line is a different capability: it requires the estimate to have been stored in the same structure as the actual, which most systems never did, and it is the only view that turns a loss into a lesson.
Item 2 is the quiet one. Rework is the largest of the three missing costs in most workshops and the least likely to be asked about in a demonstration, precisely because it looks like ordinary production while it is happening.
The short version
Your job cost sheet is not incomplete because anyone is careless. It is incomplete because three real costs happen at a distance the record was not designed to reach — a second pass, another company's yard, a month after the job closed — and a cost sheet has no way of reporting what never arrived on it.
The accounts are meanwhile entirely correct, organised by nature of expense, which answers what the business spent and never which job consumed it. Both of those things being true at once is the normal condition of a fabrication business, and it is why the jobs that look profitable are the ones you keep bidding.
With materials at 55% to 70% of job cost in this trade, the arithmetic is unforgiving: a small unattributed share of a large number is the whole margin. And the repair is not a better report. It is attribution — every cost carrying the job it belongs to, and a sold estimate frozen alongside it so the difference can be read line by line.
The three costs each have their own article — outsourced finishing, the board you paid for whole and the job that closed while two men kept going back — and the store's part in it is why your stock figure is wrong. What it looks like built as one system is on the joinery, steel and fabrication page, and the system is Flow.
