$24,000 of net profit became $1,105,000
An erosion control contractor was running seven figures of revenue and keeping almost none of it, because no site had a number of its own.
What it looked like from the owner's chair
Revenue looked healthy and the year ended with $24,000 of net profit on it. That isn't a business, that's a job with more paperwork. The owner knew the number was wrong and had no way to argue with it, because the books reported one company total and the work happened across a lot of separate sites.
What was actually happening
Erosion control lives or dies site by site. Mobilization, maintenance visits, BMP replacement and the inspection tail all land differently on every job, and a single company-wide total averages the good sites and the bad ones into one number that describes neither. The owner couldn't tell which sites were carrying the year and which ones were eating it, so every bid went out priced on a blended history that didn't apply to any specific job.
This is a known failure and it has a page of its own, with what it costs and how to size it in your business.
The work
We built job costing per site so each one reported on its own, normalized the overhead rate so it stopped being a guess, and put WIP reporting in place so every site carried a visible number month to month. Nothing about the field work changed. What changed is that the losing sites became findable inside a cycle rather than at year end.
The result
Net profit went from $24,000 to $1,105,000 the following year, a 30% net margin. They did it on $1.6M less revenue than their peak year, which is the part worth sitting with. The revenue was never the problem.
Other contractors carrying the same thing
All 14 are on one page, filterable by which step did the work.
What owners ask about this one
What was actually wrong?
Erosion control lives or dies site by site. Mobilization, maintenance visits, BMP replacement and the inspection tail all land differently on every job, and a single company-wide total averages the good sites and the bad ones into one number that describes neither. The owner couldn't tell which sites were carrying the year and which ones were eating it, so every bid went out priced on a blended history that didn't apply to any specific job.
What did you change?
We built job costing per site so each one reported on its own, normalized the overhead rate so it stopped being a guess, and put WIP reporting in place so every site carried a visible number month to month. Nothing about the field work changed. What changed is that the losing sites became findable inside a cycle rather than at year end.
How long did it take?
The following year. That is the time to the result on this page, not to the last piece of the install.
Which part of the system did it?
step 01, job cost structure, step 03, overhead calculation and step 07, monthly cadence. Installed in dependency order, which is the same order every client gets, because a step that reads from a number nobody established yet produces output that looks finished and isn't.
Do these figures apply to every SWPPP and erosion control contractor?
No. This is one company at $5M–$10M and the numbers are its own. What generalizes is the mechanism, not the magnitude. The published SWPPP and erosion control benchmarks across all 7 revenue bands are on its trade page, and those are the figures to measure yourself against.
