Ask ten contractors how they arrived at the number on their last quote, and most will describe some version of a gut check: a rough sense of materials, a mental tally of hours, a bit of padding "just in case," and a number that felt about right. It works, right up until it doesn't — until the job runs long, a supplier's price moved since the last time you checked, or the crew hits something the walkthrough didn't catch.
Start from cost, not from a feeling
Every price has three real inputs: materials, labor, and overhead. Skipping straight to a price and reasoning backward is how margin quietly disappears. Price a job in that order instead — cost the materials from a current list, cost the labor at a real hourly rate (not what you pay yourself, what the job actually costs to run), then add a fixed overhead percentage that covers the truck, the insurance, the software, all the costs that don't show up on any single job.
Markup and margin are not the same number
This is the single most common pricing mistake in the trades. Markup is profit as a percentage of cost. Margin is profit as a percentage of price. A 50% markup is only a 33% margin — confuse the two and you'll consistently underprice by exactly the gap between them. If a $1,000 job needs a 30% margin, the price isn't $1,300 — it's $1,000 ÷ 0.7, or about $1,429.
If that math makes your eyes glaze over, that's fine — that's what a calculator is for, not something to hold in your head between jobs.
Reprice the recurring stuff on a schedule, not from memory
Material prices move. If your "standard" price for a service hasn't been rechecked against current supplier pricing in the last few months, you're likely quoting last quarter's costs. Put a recurring reminder on it — quarterly is a reasonable floor for anything you quote often.
The fastest fix
If you do nothing else, separate cost from price every single time, even roughly. The habit alone — writing down the number before you decide what to charge — catches most underpricing before it happens.