The Job That Cost Me $23,000 and a Year of Sleep
Three years ago, I took on a network infrastructure project for a chain of dental clinics. Twelve locations across two cities. Each location needed structured cabling, access point installation, firewall configuration, and integration with their practice management software. I bid it at $95,000. I was confident. I had done similar work before, smaller scale, and I just multiplied up.
That was the mistake. I "just multiplied up."
By the time I finished, the actual cost was $118,000. I had underestimated travel time between locations. I hadn't accounted for the fact that three of the twelve buildings had asbestos in the ceiling tiles, which meant I couldn't run cable without hiring a certified remediation crew first. My main subcontractor's lead installer quit mid-project, and his replacement was slower and needed supervision. The practice management software turned out to have an undocumented requirement for a specific network configuration that took my engineer two full days to figure out.
I finished the project. The clinics were happy. But I lost $23,000 on a job I thought would make me $20,000 in profit. That was the most expensive lesson of my career, and I'm going to share what I learned from it so you don't have to learn it the same way.
Estimating Is the Entire Business
I'll say something that took me too long to understand: your ability to estimate accurately is the single most important skill in running a contracting business. Not your technical expertise. Not your sales ability. Not your network of contacts. Estimating. Because you can be brilliant at the work and still go broke if you consistently underbid.
Here's what I do now that I didn't do for the dental clinic project.
I visit every site before I estimate. Not sometimes. Every time. Phone calls and photos aren't enough. When I walked the dental clinic sites, I would have seen the ceiling tiles. I would have noticed that two locations had server rooms the size of a coat closet with no ventilation. I would have realized that one building's electrical panel was in a locked room that the building manager could only open on Tuesdays and Thursdays. All of these things added time and cost that I didn't account for because I estimated from my desk.
I track actual hours against estimates on every project. I have a spreadsheet that goes back four years now. Every job, every task category, estimated hours vs. actual hours. Patterns jump out. I consistently underestimate cable runs by about 15%. I consistently overestimate equipment configuration by about 10%. Knowing your own bias is incredibly valuable. When I estimate a cable run now, I add 15% automatically, not as padding but as a correction factor based on data.
I price risk explicitly. For the dental clinic project, I should have included a line item for "unknown site conditions." Not hidden in the margin. Visible. "$5,000 contingency for site conditions to be assessed during pre-work survey." Some clients push back on this, but most reasonable ones understand. And the ones who refuse to accept any contingency are telling you something about how the project is going to go.
Managing Subcontractors Without Losing Your Mind
Unless you're running a one-person operation, you're going to need subcontractors. And managing subcontractors is a completely different skill from doing the work yourself.
The dental clinic project taught me this the hard way. My subcontractor was someone I'd worked with on three previous jobs. Good relationship. Good work. So I didn't have a detailed contract with him. We had a handshake agreement and an email with the scope and price. When his lead installer quit, he sent a less experienced replacement and didn't tell me until the replacement showed up on site. I couldn't fire him mid-project because I didn't have a backup lined up. I was stuck.
Here's what I require from subcontractors now:
Written contracts with named personnel. If I'm hiring a sub because of a specific person's skills, that person's name goes in the contract. If they can't work on the project, the sub has to notify me and I have the right to approve the replacement. This sounds aggressive, but I've never had a sub refuse this term. They understand why it matters.
Weekly check-ins, not just milestone check-ins. I used to check in when milestones were due. Now I do weekly calls or site visits, even for small jobs. Problems are always smaller on Tuesday than they are on Friday. Catching a sub falling behind in week two is fixable. Finding out at the milestone deadline is not.
Payment tied to verified deliverables, not time. I pay subs when I can verify the work is done, not when they say it's done. This isn't about trust. It's about alignment. When a sub gets paid on completion, they're motivated to finish. When they get paid on hours, they're motivated to log hours. I've seen both sides of this, and deliverable-based payment produces better results almost every time.
A "no surprises" clause. If the sub encounters something unexpected that will affect timeline or cost, they have to tell me within 24 hours. Not when they submit the invoice. Not at the next check-in. Within 24 hours. This clause has saved me thousands of dollars because it surfaces problems while they're still small enough to fix cheaply.
Contract Terms That Actually Protect You
I am not a lawyer, and nothing in this section is legal advice. Get a lawyer. Seriously. The $2,000 I spent having a contract attorney review my standard agreement was the best investment I've made in this business.
That said, here are the contract terms I insist on after learning from painful experience:
Change order process. Any work not explicitly described in the original scope requires a written change order signed by both parties before work begins. I don't care if it's a small addition. I don't care if the client says "just do it and we'll figure it out." Without a signed change order, I'm doing free work and hoping to get paid later. I've been burned by "just do it" twice. Never again.
Payment schedule with hold-back. I typically structure payments as 30% on signing, 30% at a defined midpoint, 30% on completion, and 10% held for 30 days after completion. The 10% holdback gives the client confidence that I'll handle any issues after handover. It also means 90% of my money is in before the client starts using the system and discovering things they want changed. Those changes become change orders, not free fixes.
Limitation of liability. My contract limits my liability to the total contract value. Without this clause, a client could theoretically sue me for consequential damages that dwarf the project fee. If a network I installed goes down and the client loses $500,000 in business, I cannot absorb that liability. My contract limits their claim to what they paid me. My lawyer told me this clause has saved many contractors from bankruptcy.
Warranty period with defined scope. I offer a 90-day warranty on workmanship. During those 90 days, I'll fix anything that's a defect in my work at no charge. But the warranty explicitly excludes issues caused by the client's modifications, third-party equipment failures, or changes to their environment that I wasn't consulted on. Without these exclusions, "warranty" becomes "unlimited free support," and clients will call you about everything.
The Maintenance Revenue Stream
The dental clinic project ended up being profitable in a roundabout way. Not because of the project itself, but because it led to a maintenance contract. All twelve locations needed ongoing network support, monitoring, and periodic equipment refreshes. That contract has been worth about $48,000 per year for the past three years.
Maintenance contracts are the most underrated revenue stream in contracting. Here's why:
Predictable revenue. Project work is feast or famine. You're either busy or you're wondering where the next job is coming from. Maintenance contracts provide monthly or quarterly revenue that you can count on. After two years of building maintenance clients, about 40% of my revenue is recurring. That changes everything about how you sleep at night.
Lower sales cost. Getting a new project client costs me time, proposals, site visits, and sometimes competitive bidding. Renewing a maintenance contract costs me an email and a conversation. The client already knows me. They already trust my work. The close rate on maintenance renewals is north of 90% for me.
Early access to new projects. When a maintenance client needs a new project, guess who they call? They don't put out an RFP. They don't get three bids. They call me because I'm already there, I already understand their environment, and they trust me. About 60% of my project work now comes from existing maintenance clients.
The key is pricing maintenance correctly. I see a lot of contractors who undercharge for maintenance because they think of it as easy money. It's not. You need to account for emergency response time, travel, parts inventory, and the opportunity cost of having staff available for support calls instead of billable project work. I price maintenance at a level where I'd be happy if it was my only revenue source. That way, every project I win on top of it is a bonus.
Seasonal Planning and Cash Flow
Contracting is seasonal in ways that aren't always obvious. IT contracting, for example, gets busy in Q4 when companies scramble to spend their remaining budget. Construction is seasonal for weather reasons. But there's another pattern that cuts across all types of contracting: the summer slump. Decision-makers go on vacation. Projects get delayed. Approvals stall.
My first two years, summer almost killed me financially. I'd have a great Q1 and Q2, bank some money, and then June through August would be dead quiet. I'd burn through my reserves and start September stressed and behind.
What I do now:
I book Q3 work in Q1. Sounds simple. But it requires discipline. In January, when I'm busy and things are going well, I force myself to make sales calls for projects that will start in June or July. It's hard to prioritize business development when you're already busy, but it's the only way to smooth out the seasonal dip.
I schedule maintenance work for slow periods. Equipment refreshes, firmware updates, infrastructure assessments. These aren't urgent, so clients are flexible on timing. I propose them for July and August when my project calendar is lighter. This keeps my team utilized and keeps revenue flowing.
I maintain a cash reserve equal to three months of operating costs. This took me two years to build up, and I guard it carefully. The reserve means a slow month doesn't become a crisis. I can make payroll, pay my subs, and keep the lights on even if July is dead.
Insurance and Liability: The Boring Stuff That Saves You
I know this isn't exciting. I don't care. This is the section that might save your business.
At minimum, you need general liability insurance and professional liability (errors and omissions) insurance. If you have employees, you need workers' comp. If you use vehicles for work, you need commercial auto. If you store client data, you should have cyber liability coverage.
I carried only general liability for my first three years. Then a client's server room flooded after a plumbing failure, and they claimed my network equipment installation had compromised the waterproofing on a wall penetration. It wasn't true, but defending myself against the claim cost $8,000 in legal fees before it was resolved. My E&O insurance would have covered that. I didn't have E&O insurance.
Get the insurance. Pay the premiums. It's the cost of doing business, and it's a fraction of what one bad claim will cost you without it.
What I'd Tell Myself Five Years Ago
If I could go back and give the version of me who bid on that dental clinic project some advice, it would be this:
Slow down on the estimate. Visit every site. Talk to the building managers. Ask about environmental conditions. Ask about access restrictions. Ask about other contractors who'll be working in the same space. Take twice as long on the estimate and you'll get twice as close to the right number.
Put everything in writing. Everything. Every change, every conversation about scope, every decision the client makes. Not because you don't trust them, but because memories differ and paper doesn't.
Build relationships with three subcontractors you trust, not one. Redundancy isn't just a technical concept. It's a business survival strategy. If your only sub can't deliver, you need options.
And start building that maintenance revenue as early as possible. Every project you complete should end with a conversation about ongoing support. Not every client will say yes. But enough will, and three years from now, that recurring revenue will be the foundation your business stands on.



