From the Field · A Teaching Story
The $4M Cabinet Shop That Couldn't See Its Own Margin.
Let me tell you about a fictional company called Harbor Cabinetry. They don't exist, but they could be any one of a dozen shops I've walked into. Family-owned, $4M in revenue, twenty-two people on the floor, custom kitchens for high-end builders all over Orange County. The owner, let's call him Mike, was working harder than ever and bringing home less than he did three years ago. The bank balance was always tight by the 25th of the month. He couldn't tell me why.
His P&L looked fine. Gross margin around 38%, net around 9%. On paper, Harbor Cabinetry was a healthy little shop. So we sat down at his kitchen table on a Saturday morning and started picking apart what was actually happening, one job at a time.
The trap that catches almost every shop like this
Mike's bookkeeper was tracking everything by the month. Total revenue, total cost of materials, total labor, total overhead. Every category was a single bucket. At the end of the month, you subtract the buckets, you get a number, and the number was fine.
The problem is that "the number was fine" was an average across roughly forty jobs. Some of those jobs made 50% margin. Some made 4%. A few were quietly losing money. Mike couldn't tell which was which, because he never looked at a single job in isolation.
This is the most common mistake I see in shop-based businesses. Cabinetry, fabrication, custom millwork, sign shops, machine shops, food production, anything where you build different things for different customers. The accounting system gives you a tidy monthly P&L and the tidy monthly P&L is hiding a brutal truth: half your jobs are subsidizing the other half.
What we actually did
We didn't buy software. We didn't hire anyone. We took a stack of the last sixty completed jobs and rebuilt each one in a single spreadsheet. For every job we logged: contract value, material cost, hours actually worked on the floor (Mike's foreman knew this better than the time-tracking system did), subcontractor cost if any, and a fair allocation of overhead based on shop hours.
It took about a week. Then we sorted the spreadsheet by gross margin, lowest to highest. The picture was ugly and clarifying at the same time.
About 30% of his jobs were under 15% gross margin after honest labor costs. A handful were actually negative. The common thread: they were almost all rush jobs for two specific builders who Mike had been reluctant to push back on because they were "his biggest customers."
They were his biggest customers by revenue. They were also his worst customers by profit. Mike had no idea, because the monthly P&L averaged them in with the good jobs and gave him a number that felt fine.
The fix was almost embarrassingly simple
Three things, none of them fancy:
One, we built a one-page job sheet that the foreman filled out at the end of every job. Ten minutes. Estimated hours vs. actual hours, estimated material vs. actual material, change orders. That's it.
Two, we set a margin floor. No new job below 25% gross margin estimated. If a customer pushed back, the answer was a polite "we can't make it work at that price, but here's what we can do." Mike was terrified of losing the two big builders. He lost one, kept the other at higher prices, and replaced the lost revenue inside four months with smaller, more profitable customers.
Three, we built a weekly margin review. Every Monday morning Mike spent fifteen minutes looking at the prior week's completed jobs and the open ones. That's it. No dashboard, no software, just a habit.
What happened
Twelve months later Harbor's revenue was almost identical, around $4.1M. Net profit was about 18% instead of 9%. Mike took home roughly double what he had the year before. He worked fewer Saturdays. His foreman started catching scope creep before it became a margin killer because the job sheet made it visible. The shop ran calmer because the rush-job parade had stopped.
Nothing about this story is sophisticated. There is no AI, no fancy ERP, no consulting buzzword. Just the discipline of looking at one job at a time instead of one month at a time.
If your business builds different things for different customers and you only look at monthly totals, you almost certainly have jobs that are losing money and you don't know it. The fix isn't software. It's the habit of measuring profit at the unit of work, not the unit of time.
If you suspect this is happening in your business, the cheapest first move is to pick your last twenty completed jobs and rebuild them honestly in a spreadsheet. The truth will be uncomfortable. It will also be the most valuable spreadsheet you build all year.
Harbor Cabinetry is a composite. The pattern is real, the story is fiction, and any resemblance to a specific shop is unintentional. If it sounds like you, that's because this happens in roughly half the businesses I walk into.