I’ve been a finish carpenter for 20 years. For a lot of those years I had a pricing sheet, a spreadsheet with what I charge for the work I do. And for a lot of those years, I treated it as a suggestion instead of a rule.
The pricing sheet I didn’t follow
I get calls from all over the city. Some are in nice neighborhoods. Some aren’t. Some customers clearly have money, and some clearly don’t. Some tell me things on the walkthrough that stick with me on the drive home.
More often than not, that’s what ended up setting my price. Not the pricing sheet. Not the work. How I felt standing in that house.
The door that kept costing me
A lot of the houses I get called to are old, and old houses mean lead paint. When I replace a door in a home built before 1978, I follow the EPA’s lead-safe rules, known as RRP. I set up containment, take the old jamb out without spreading lead dust, and clean up properly afterward. Putting up the containment alone takes me at least an hour, before the skill it takes to pull a lead-painted jamb without damaging the walls around it.
Now picture an old house in a poor neighborhood. The customer clearly doesn’t have much, and they really need a new door. More than once, I left the RRP charge off the bid and did all the containment work anyway, because it has to be done right.
Same with historic trim. Reusing the original trim means cleaning it up and getting it ready to go back on after the new door is in. That’s real time, and plenty of times I didn’t charge for it.
The customer got a safe, properly installed door. I felt good about the work. But I gave myself away to do it, and I lost my ass on more of those jobs than I’d like to admit.
The fix: one price per task, set once
When I started building my own app, the first thing after keeping track of customers was a labor pricing catalog. Every task I do gets a price, entered one time.
Here’s what part of mine looks like:
Basic entry door install: $600. That covers the time a standard install takes. Anything beyond that is an add-on.
Masonry install: $180. Knowing where to drill brick or concrete so the screws stay hidden, the hammer drill and diamond bit it takes, masonry screws I don’t normally stock, and the extra time. On a masonry opening you can’t just nail the jamb to wood to hold it while you shim it in and set the screws.
RRP containment: $180. That’s for a basic single entry door. Bigger doors, ceilings higher than 9 feet, or anything else that makes the containment setup harder costs more.
Now when I bid a job, I don’t decide what to charge. I add the tasks the job needs, and the catalog fills in the prices. It doesn’t matter who the customer is or what part of town I’m in. The catalog sets the price, not me.
Where the prices came from
They didn’t start where they are now.
Doors: I spent 2 years installing doors for Home Depot. I saw what they charged customers, and I saw what the contractor I worked for got paid, so that’s where I started. Back when I was writing estimates by hand, a basic entry door was $300 to $400. Then it sank in that I could charge whatever I wanted. I raised it over time, checked it against local market rates, and it’s $600 now.
Trim: I started with a price that felt fair. Then I tracked how long jobs actually took across a lot of them, and raised my prices to aim for $100 an hour. Some jobs come in under that, and some come in over when the work goes easier than expected. Either way, the customer gets what they paid for, because I take as long as the work takes to do it right.
RRP containment: I started at $150. Then I realized the containment alone was taking me an hour, not counting the lead-safe demo and the cleanup. It’s $180 now, it’s probably still too low, and it’s going up.
The catalog isn’t set in stone. When a task keeps taking longer than its price covers, I change the price in one place, and the next bid charges more. The difference is that I make that call at home, looking at the facts, not standing in somebody’s kitchen.
Can I still change the price on a job? Yes. I almost never do.
When I add a task to an estimate, the price field fills in from the catalog, but I can still edit it. Sometimes I bump it up for conditions: a bigger door, high ceilings, a tight space. Once in a long while I’ll drop it a little. I’m still tempted to bid with my feelings sometimes. But most of the time, I accept the catalog price and move on.
And when a customer asks me to lower the price? They called me because of my reputation. My price is my price, and it’s the catalog that puts it on the job. If they want a lower price, they can call someone else.
I’m offering a service they want or need. If they want me to do it, they have to pay what I’m charging. I can’t ask my landlord, the electric company, or the gas company for a lower rate either.
You can do this without an app
The catalog is the point, not the software. If you want to try it with what you have:
List the tasks you do most, with the add-ons that change the price, like masonry openings or lead paint setup.
Price each one once, at home, with a clear head.
Track your time on a few jobs, and adjust toward the hourly rate you actually need.
Bid from that list every time. Adjust for real conditions, not feelings.
Fair warning: I had a spreadsheet, and I still ignored it. A list only works if following it is easier than overriding it.
Where BuiltWright comes in
That’s why the catalog is built into BuiltWright. Add a task to an estimate and the price comes from your catalog automatically, while you can still adjust it for real conditions. You can explore it in the free demo, with no account needed.
Next up: the same problem with materials, and how all the unbilled caulk, silicone, foam, and fasteners were quietly eating my paycheck.