Ledge

Why Landscape Companies Lose Money on Jobs They Win

Edgar GalindoCo-founder, Ledge·2026-04-14·9 min readBusiness Tips
Job loss analysis showing underbid labor hours, material overruns, and change orders not billed as root causes

Winning bids feels good. Losing money on them does not. These are the five execution patterns that drain margin after the contract is signed — and how to stop them.

You close the deal. The client signs. The deposit clears. You mobilize the crew and run the job. Then four weeks later, you look at what actually came in versus what you thought you would make — and the numbers do not match.

This is one of the most common and most damaging problems in landscape construction: companies that are busy, that are winning bids, that are growing revenue — but not making money. The jobs are the problem. And the margin is leaking out in ways that are invisible until you look closely.

Here are the five patterns that cause landscape contractors to lose money on work they have already won.

Pattern 1 — Labor Hours That Run 20–40% Over Estimate

The most common cause of lost margin is this: you estimated 24 crew hours for a job and it took 32. That 8-hour overage at $85/hour loaded crew cost is $680 — gone. Do this on 25 jobs per season and you have lost $17,000 in gross profit with no explanation.

Why does this happen? Usually a combination of: optimistic estimating based on ideal conditions, crews that work at different rates than the person who built the estimate assumed, and scope additions that happened on-site without a change order. All three cause the same outcome — more hours than planned, no adjustment to the contract price.

The fix starts with tracking. You cannot correct what you do not measure. Set up job-level time tracking — even a simple daily text from the foreman with hours worked on each job. After 30 days, compare estimated hours to actuals. The gap will show you which job types you consistently underestimate, and by how much.

See the job costing guide for a step-by-step system to set this up.

Pattern 2 — Material Costs That Exceed the Estimate by 8–15%

You estimated materials at prices from three months ago. By the time the job runs, prices have moved. Or the job required 15% more material than planned because of waste, cuts, or a change in site conditions. Either way, the overage comes out of your margin.

A 600 SF paver job estimated at $4.80/SF for materials costs $2,880. If actual price is $5.40/SF — a 12.5% increase — actual material cost is $3,240. That $360 difference seems small. Across 20 similar jobs per year, it is $7,200 out of gross profit.

Two fixes: First, always add a 5–8% material buffer to your estimates as a line item (label it "material contingency"). Second, get a supplier quote for every bid over $15,000 — do not rely on memory or last quarter's price sheet.

Job loss analysis showing underbid labor hours, material overruns, and change orders not billed as root causes

Pattern 3 — Scope Additions Done Without a Change Order

The client asks if you can add a few extra feet of edging. Or adjust the drainage outlet. Or move the planting bed two feet to the right. Each request is small. Each one takes 30 to 90 minutes of crew time. You say yes because it feels like good customer service. You do not write a change order because it feels like overkill for something small.

By the end of a 3-week job, you have donated 6 to 10 hours of labor. At $85/hour, that is $510 to $850. On a $28,000 job with a 40% target margin, you budgeted $11,200 in gross profit. That gift to the client just turned it into $10,350 to $10,690. Two to three points of margin, gone.

The position here is clear: every scope addition that takes more than 30 minutes needs a change order. Not because you are being difficult — because you are running a business. Clients who respect your work respect your process. The ones who push back on small change orders are often the same clients who complain about every invoice.

"We ran 47 jobs last season and thought we made money on all of them. When we did job costing on 12 of them, 5 lost money. We had no idea."

Pattern 4 — Subcontractor Costs That Were Not Locked In Before Bid Submission

You estimate tree removal at $2,400 based on a verbal quote from your usual arborist. When the job is awarded, the arborist is booked and unavailable. You find someone else who charges $3,100. You eat the $700 difference because the client already signed at your price.

Rule: never submit a bid with a subcontractor line item unless you have a confirmed written quote. A verbal estimate from a sub is not a price — it is a suggestion. If the sub is unavailable or their price changes, you are exposed.

If you cannot get a confirmed quote before the bid deadline, add a contingency buffer of 15 to 20% to the subcontractor line. State in the proposal that subcontractor pricing is subject to availability confirmation. This is not dishonest — it is accurate. And it protects you.

Pattern 5 — Crew Downtime and Mobilization Costs Not Priced Into Bids

Travel time. Loading and unloading. Waiting on material delivery. Equipment setup and breakdown. These hours exist on every job, but many contractors only price for hands-in-the-dirt productive time. If your crew spends 1.5 hours per day on mobilization and you pay them for it — which you must legally — that cost needs to be in the bid.

On a 5-day job with a 3-person crew: 1.5 hours/day × 5 days × 3 workers = 22.5 crew hours in mobilization time. At $28/hour average field wage, that is $630. At a 40% margin target, you need to charge at least $1,050 to cover that and contribute to overhead. Are you?

Add a mobilization line item to your estimates. Call it "site mobilization and logistics" if you prefer. Price it per day based on your actual crew size and average drive time. It is a real cost. Clients understand it when it is labeled and explained — it is not a nickel-and-dime charge, it is accurate pricing.

The Common Thread: No Job-Level Visibility

Every one of these five patterns is detectable — and fixable — with job-level cost tracking. The problem is most landscape companies look at total revenue and total expenses on a monthly P&L and assume the margin is spread evenly across all work. It is not.

Some jobs run at 45% gross margin. Others run at 18%. Without job costing, the profitable jobs mask the losers. You keep winning bids and wondering why the bank account does not grow. See the job costing reports guide for how to find these leaks systematically.

Ledge tracks estimated costs vs. actual costs by job — so you know within 24 hours of job completion whether you made or lost money, and why. Contractors using this data save an average of 12 hours per week previously spent reconstructing job financials from receipts and memory.

Built for Landscape Contractors

Stop guessing. Start knowing what every job costs.

Ledge tracks estimates, actuals, and margins in one place — so you know exactly where your money went before the next bid goes out.

Frequently Asked Questions

How do I know if a specific job lost money?

Compare what you estimated (materials, labor hours, subcontractors) to what you actually spent. If you tracked labor hours by job and kept purchase receipts assigned to jobs, you can reconstruct this within an hour. If you do not have job-level data, that is the first thing to fix. Even a simple spreadsheet — hours per job, materials per job, subcontractor invoices per job — beats running blind.

Is it normal for some jobs to lose money?

A job or two per year going sideways due to genuine unforeseen conditions — that is normal. Consistently losing money on a specific job type means your estimating assumptions for that category are wrong. If you regularly lose money on drainage work, your labor hours for drainage are underestimated. Fix the template, not the individual job.

How do I handle a job that is already going over budget mid-project?

First, stop. Do not keep running and hope it works out. Calculate where you stand: actual hours spent + materials purchased vs. estimated. If you are already 20% over on labor with 40% of the work remaining, you have a problem that only gets worse. Talk to the client early — not at the end. Bring documentation. Clients are more receptive when you flag an issue before it becomes a crisis.

Should I do job costing on every project or just the big ones?

Do it on every project above $5,000. Small jobs are where the worst habits hide — they are fast to finish and easy to rationalize. "We went a few hours over but it was a small job." Multiply that across 40 small jobs per season and it is tens of thousands in untracked losses. Build the habit on small jobs and it will be second nature on the big ones.

Can raising prices fix a job costing problem?

Partially. If your margins are consistently low across all job types, you are probably underpriced and raising rates will help. But if margins are inconsistent — great on some jobs, terrible on others — that is an execution problem, not a pricing problem. You could charge 20% more and still lose money on jobs that run 35% over on labor. Fix the execution tracking first, then evaluate pricing.

EG

Edgar Galindo

Co-founder, Ledge

Edgar built Ledge while running a landscape construction company in Central Texas. He writes about estimating, job costing, and building a business that runs without you on every site.