PAINTING · INTERIORS AND FINISHES · FIXED BY STEP 01

You bid square feet and spend man-hours

You bid it at a buck ten a foot, the job closed months ago, and you still can't tell anyone what a foot cost you.

WHY IT IS A PAINTING PROBLEM

A square foot price hides every single thing that drives production: cut-in ratio, ceiling height, occupied versus vacant, and spray versus brush and roll. On pre-1978 repaint it hides the biggest one, because EPA RRP containment and OSHA 1926.62 controls presume manual scraping, sanding, heat gun work, and spray application at up to ten times the PEL until monitoring says otherwise. The square footage doesn't change, the hours run two or three times higher, and your estimate carried one price for both conditions.

WHAT IT COSTS

The size of it

A 15 percent production-rate miss on an 85 percent labor cost structure is 12 or more points of margin, and it repeats every bid cycle until somebody measures hours against units.

OVERHEAD AT $1M–$5M
13%
CFOS target 12% for painting.
GROSS MARGIN AT $1M–$5M
18%
CFOS target 22% for painting.
NET PROFIT AT $1M–$5M
5%
CFOS target 10% for painting.

Estimates get built in square feet of wall, in openings, or in a price per apartment unit. Cost walks out the door in burdened man-hours. Unless hours and installed quantities post to the same cost code, you never compute a real production rate in square feet per man-hour, and the estimating database never corrects itself. The next twelve bids come off the same number that just lost you money.

WHAT TO DO

Three moves, in order

STEP 01
Break cost codes by the activity you bid, one code each: prep and patch, prime, first coat, second coat, doors and frames, and touch-up.
STEP 02
Require the field ticket to carry installed quantity alongside hours, so a code closes with square footage on it and not hours alone.
STEP 03
Post measured square feet per man-hour by activity back into the estimating file every month, and make the estimator use your number before the published one.
QUESTIONS

What painting owners ask

How to track square feet per man hour on painting jobs?

You bid it at a buck ten a foot, the job closed months ago, and you still can't tell anyone what a foot cost you.

What does it cost?

A 15 percent production-rate miss on an 85 percent labor cost structure is 12 or more points of margin, and it repeats every bid cycle until somebody measures hours against units.

What do I do first?

Break cost codes by the activity you bid, one code each: prep and patch, prime, first coat, second coat, doors and frames, and touch-up.

What are painting contractors supposed to be making?

Painting runs 18% gross margin, 13% overhead and 5% net profit before taxes at $1M–$5M. The all-trade average is 7%, so this trade sits 2 points below it. The CFOS target is 10%.

Which part of the system fixes it?

The step is number 01, job cost structure. Seven cost categories and three levels of granularity, built so the estimate and the ledger use the same words. It comes from chapter 1 of CONTROL: The Construction Financial Operating System.

AUTHOR
Josh Luebker
JOSH LUEBKER
MASTER ELECTRICIAN · 150+ PROJECTS · $2.1B+ MANAGED

Josh Luebker ran commercial construction projects before he ran the numbers behind them, on data centres, military bases, hospitals, and high-rises. He wrote CONTROL: The Construction Financial Operating System, which is an eight-step framework for commercial subcontractors, and it publishes on October 1, 2026. He is a master electrician who moved into the office and kept the field vocabulary.

Sulphur Prairie Operations LLC maintains the benchmark reference behind these figures. Every edition is reconciled against the newest CFMA survey release before it publishes here. Where a figure changes between editions, the older edition keeps its year in the title so a citation to it stays correct.

Eight steps. Sixty days.

CONTROL is the full system, written for commercial subcontractors from under $1M to $100M. It publishes on October 1, 2026. Eight steps, six working templates, and the order they install in.