How to Price Carpentry Work: Test Day Rates Against Job History With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Price Carpentry Work: Test Day Rates Against Job History With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Price Carpentry Work: Test Day Rates Against Job History With AI.

Price carpentry work by building a day rate from your costs and billable days, then choosing per job between a day rate and a fixed price. AI can test that rate against your last ten jobs: give it quoted days, days worked and materials, and it shows your real earnings per day and your overrun by job type.

Most carpenters set a day rate by asking what others charge, then find out on a fixed-price job that a day and a half went on quoting, ordering and snagging that nobody paid for. The tests below use your own records: the day rate you need, the day rate you actually earned, and the kinds of job where each pricing method works.

Follow me on Instagram@sagnikteaches

Build the day rate from your costs and your billable days

A day rate is a sum, not a market price. Start with what you want to take home, add what the business costs to run, and divide by the days you can really bill. The figures below are illustrative, for a sole carpenter; replace them with last year's numbers from your accounts.

Connect on LinkedInSagnik Bhattacharya
Yearly costAmount
Your pay before tax$62,000
Van, fuel and van insurance$9,400
Tools and consumables$3,600
Liability and other insurance$1,900
Accountant, software and phone$2,400
Training, licences and workwear$1,200
Total to cover$80,500

Now the days. Nobody bills 260 days a year.

Subscribe on YouTube@sagnikteaches
DaysNumber
Working days in a year (52 weeks of five)260
Holiday-20
Public holidays-8
Sickness and weather-6
Quoting, admin and merchant days (half a day a week)-26
Billable days200

$80,500 divided by 200 billable days is $402.50 a day, which the example rounds to $405. The divisor does the damage. Divide the same costs by 260 days and you get $309.62; by 220 days, $365.91. A carpenter who divides by working days instead of billable days undercharges by about $93 a day in this example. If you want a margin for a slow month or tool replacement, add it before dividing: 5% on the total gives $422.63.

The same sum gives a rate for an employee or a regular helper: their yearly cost divided by their billable days, plus a share of the overheads and a margin. If you also want an hourly equivalent for small jobs, the hourly rate calculator for a tradesman works through it, and the day rate divided by eight is a fair starting point, $50.31 in this example.

AI is useful here as a calculator you can talk to, with one condition: ask it to show every step, then check the division yourself. Give it your list of costs and your list of lost days and ask for the rate with a 0%, 5% and 10% buffer. If its answer differs from yours by more than a few cents, one of you has mistyped something.

The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

Day rate or fixed price? Four questions, then the history

Neither method is better. Each puts the risk of a wrong estimate on a different person: on you under a fixed price, on the customer under a day rate. Four questions decide which fits a job.

  1. Can you describe the finished job on one page, with measurements and a specification?
  2. Can you see all of the work, or is some of it behind a wall, under a floor or inside a roof?
  3. Have you done at least three similar jobs, so that you know how far your estimates usually miss?
  4. Is the customer buying a result, or buying your time?
SituationLean towards
Well-defined, repeat work you have done many times, such as hanging doors or fitting skirtingFixed price from your median days
Custom or built-in work with some history, such as wardrobes or a kitchen fitFixed price with an overrun factor, or a day rate with an estimated range
Repairs and alterations to old work, or anything that depends on what is hiddenDay rate with a review point
Customers who change their mind as the job goes onDay rate, or a fixed price with priced variations

The table gives you the starting point and your own records settle it. If your last four fitted-wardrobe jobs all overran by 25% to 35%, no feeling about the next one overrides that. The next sections show how to find out.

The ten-job table: quoted days against days spent

This is the test that matters. Take your last ten finished jobs and write down, for each one: how it was priced, how many days you quoted or estimated, how many days you spent on site, and how many days went on everything off site (measuring, quoting, ordering, collecting, snagging). Then work out what the job paid per day for all the days it took. Here is the example carpenter's table, with fixed-price jobs built at the $405 rate. All figures are illustrative.

#JobPriced asDays quotedSite daysOff-site daysLabour chargedEarned per day
1Internal doors, six hungFixed2.02.00.5$810$324
2Skirting and architrave, ground floorFixed3.03.250.5$1,215$324
3Decking, 18 m²Fixed4.04.50.5$1,620$324
4Stud wall with door openingFixed2.02.50.5$810$270
5Fitted wardrobes, two alcovesFixed5.06.51.0$2,025$270
6Kitchen fit, units and worktopFixed6.08.01.5$2,430$256
7Shelving and window seatFixed3.04.00.5$1,215$270
8Staircase repairDay rate3.0 est.4.50.5$1,822.50$364.50
9Floor boarding and loft ladderDay rate2.0 est.2.50.5$1,012.50$337.50
10Gate and fence repairDay rate1.5 est.1.50.25$607.50$347.14

Two things show straight away. On a fixed price, labour charged is the days you quoted times $405. On a day-rate job it is the site days times $405, so the customer pays for the overrun, but the off-site days are still unpaid. Across all ten jobs the carpenter charged $13,567.50 for 45.5 days of effort, an average of $298.19 a day. The target was $402.50.

Gathering the data is the real work. Allow 30 to 45 minutes a job if you have a diary or invoices to go from. Work from the job notes, calendar entries, merchant receipts and photos with timestamps. If you cannot recall the off-site days, count the merchant runs and the snagging visits and assume half a day for measuring and quoting; a rough number you can improve beats an empty column.

Ask the AI to test the rate

Ten rows fit in a chat message, so paste the table into ChatGPT, Claude or Gemini after removing any names or addresses. Ask for the specific tests and for the working.

Below is a table of my last ten carpentry jobs: job, job type group, priced as (fixed or day rate), days quoted, site days, off-site days, labour charged. My target is $402.50 earned per day, counting site and off-site days.
1. For fixed-price jobs only, give total days quoted, total site days, total off-site days, labour charged, and earned per day. Give the site overrun as a percentage and as a median.
2. Do the same for the day-rate jobs separately.
3. Group the jobs into "doors, trim and decking", "custom and built-in" and "repairs" and give the overrun and earned per day for each group.
4. Show your working. Do not suggest a new day rate. Say how many jobs each figure rests on.
Fixed price (7 jobs): quoted 25.0 days, site 30.75, off-site 5.0. Charged $10,125. Earned per day: $283.22. Site overrun: 23.0% (median 25.0%).
Day rate (3 jobs): estimated 6.5 days, site 8.5, off-site 1.25. Charged $3,442.50. Earned per day: $353.08.
Groups:
- Doors, trim and decking (3 jobs): overrun 8.3%, $324.00 a day
- Custom and built-in (4 jobs): overrun 31.3%, $264.49 a day
- Repairs (3 jobs, day rate): site days 30.8% over the estimate, $353.08 a day
Recommendation: raise the day rate to $520 to reach the target.

Check the output against your own sums before you read the conclusions. The figures above match the table (custom and built-in is 31.25% over, shown as 31.3%). The last line breaks the instruction. It recommends $520 a day from ten jobs, which would overcorrect: the shortfall comes from overruns and unpaid off-site days, not from a rate that is too low, and a rate of $520 would price you out of the work that already earns fine. Delete any recommendation you did not ask for, and decide what to change from the numbers.

What the test found, and three changes to make

Grouping the jobs turns ten rows into a decision. Here are the three groups from the example.

GroupJobsPriced asDays quotedSite daysSite overrunEarned per day
Doors, trim and decking3Fixed9.09.758.3%$324.00
Custom and built-in4Fixed16.021.031.3%$264.49
Repairs3Day rate6.5 est.8.530.8% over estimate$353.08

The carpenter charged $405 a day and earned between $256 and $364.50 on every job. The fixed-price jobs earned $283.22 a day, which is 29.6% below the $402.50 target. Three changes follow from the table, and none of them is "raise the rate".

1. Price the off-site days. Every one of the seven fixed-price jobs had off-site days, five in all, and none was charged. At $402.50 that is $2,012.50 given away. Put a "measure, order and snag" line on every quote: half a day as a minimum, a day on fitted furniture, a day and a half on a kitchen.

2. Use a different overrun factor for each group. Doors, trim and decking ran about 8% over, so add 10% to your estimate and keep quoting fixed prices. Custom and built-in work ran about 31% over, so either add 30% to the days or move that work to a day rate with a range. Take fitted wardrobes, estimated at five days on site. The fixed price is five days times 1.3, plus one off-site day: 7.5 days at $402.50, or $3,018.75. That is 49% more than the $2,025 the same job was priced at before, and it is simply the gap between the $270 a day it earned and the $402.50 it needed. The day-rate alternative reads "6 to 8 days at $405, plus one day for measuring and ordering", which is $2,835 to $3,645.

3. Keep the day rate for repairs, and keep its off-site days in the price. The repair jobs earned $353 a day, not $405, for the same reason as the others: nobody paid for the half day around each one. The staircase repair took 4.5 days against three estimated; on a fixed price it would have been a loss, and as a day-rate job it paid. Hidden work is what day rates are for.

A 49% rise looks alarming on paper. The customer may say no, and then you have two honest options: reduce the scope until it fits their budget, or decline the job. What you should not do is take it at the old price and tell yourself it will be a quick one. For the measuring side that makes day estimates more accurate, a site measure checklist from notes and photos is worth reading, and cut lists, takeoffs and client quotes with AI covers the materials side of the estimate.

One trap to avoid: shocked by the kitchen, the carpenter adds 33% to every quote. The six-door job, which ran on time, then prices at (2 days x 1.33 + 0.5 day) x $402.50, which is $1,271.90, instead of the $1,086.75 that its own history supports with a 10% allowance. That is 17% too high on repeatable work where a rival can price from experience, and it is how an honest correction becomes a run of lost quotes. This is why the factor belongs to the group, not to the carpenter.

Materials: the markup has to pay for the merchant runs

A flat percentage on materials looks fair and quietly loses money, because it must also pay for the time spent buying, the waste you cannot bill and the risk of a price rise. A quick sum for the fitted wardrobes shows how. Materials cost $1,180 at your trade price. A 15% markup earns $177.

  • Three merchant runs at 1.25 hours each, with an hour worth $50.31 (the $402.50 day rate divided by eight), cost $188.67.
  • Waste on board and trim at 8% of $1,180 is $94.40.
  • Together that is $283.07 against a $177 markup, so the markup is $106.07 short before you have earned a penny on the materials.

The fixes are structural. Put the ordering and collecting time into the off-site line, where it belongs with labour. Put a waste allowance on the materials, using your own history rather than a rule of thumb. Your cut lists and order sheets show how much you ordered against how much the job used. Then apply a smaller markup for carrying cost and price changes. For the wardrobes, with an 8% waste allowance and a 12% markup, the materials line reads $1,180 plus $94.40 for waste, which is $1,274.40, plus 12%, which is $1,427.33. The customer sees a clear materials figure, and you are no longer subsidising the merchant runs.

A tiered markup, with a higher percentage on small orders and a lower one on large orders, is the other common approach, since a $60 order costs the same trip as a $1,200 one. If you want a calculator for either method, the handyman material markup calculator with AI builds one you can adapt.

Wording for the quote, in both versions

Once you know the numbers, the quote has to say them plainly. Both versions below price the fitted wardrobes from the example. The materials figure is the $1,427 worked out above, and every figure is illustrative.

Fixed price version

Fitted wardrobes, two alcoves, as per the drawing dated [date].
Fixed price: $3,019 for labour (7.5 days including measuring, ordering and one snagging visit), plus materials at cost with an 8% waste allowance and 12% markup, estimated at $1,427.
Included: carcasses, doors, shelving and rails as drawn. Painting is not included.
Not included: changes to the drawing, and repairs to walls, floors or ceilings found once the old fittings are out. Any change will be priced and agreed before I do it.
Valid for 30 days. Materials are priced at today's prices.
Day-rate version

Fitted wardrobes, two alcoves.
Estimate: 6 to 8 working days on site at $405 a day, plus one day for measuring, ordering and collecting materials, so $2,835 to $3,645 for labour. Materials at cost plus 12%, estimated at $1,427.
I will report progress at the end of day 6, and tell you before I go beyond day 8, with the reason. Hidden defects found once the old fittings are out will be priced before I carry on.

Keep a promise in the quote only if you will keep it. "I will tell you before day 8" is worth nothing if you forget on day 9. AI is good at tidying this wording and at turning it into your house style, so give it the numbers and your standard terms and ask for a clean version. What counts as a binding estimate, and what a customer can claim if the figure moves, differs between places, so have your standard terms read by an adviser once and reuse them.

Check the next estimate against your history before you send it

The table earns its keep on the next job. Give the AI your history and the new estimate, and ask what the history says about it.

Using only my table, tell me what it says about a new job. Group: custom and built-in. My estimate is 3.5 site days for built-in shelving and a desk in an alcove. Give the likely range of site days using the range of overruns in that group, the off-site days to add based on that group, and the labour price at $402.50 a day for a fixed price. Do not use any figure from outside my table.
Custom and built-in jobs ran 25.0% to 33.3% over their estimates (median 31.7%).
Likely site days: 4.4 to 4.7 (3.5 x 1.25 to 3.5 x 1.333).
Off-site days: 0.9 (this group averaged 0.875).
Fixed-price labour at the middle of the range: (4.6 + 0.9) x $402.50 = about $2,214.
Rests on 4 jobs: treat as a guide.

That is a good reply. It gives a range, keeps the off-site days separate, uses only your table and says how few jobs it rests on. Check one thing it cannot know: whether this job is easier or harder than the group, because of access, stairs or a customer who changes their mind halfway. Then decide the price yourself. The point of the AI step is that the number on the quote now has a reason behind it.

One number to watch each month

After the first audit, one figure tells you whether the changes are working: labour charged in the month divided by the days you worked on jobs, on site and off. Take a month with 20 working days, 14 of them on site and 3.5 on off-site tasks, which leaves 2.5 days with no paid work, perhaps waiting for materials or between jobs. Labour charged is $5,400.

MeasureSumResult
Earned per day worked (pricing accuracy)$5,400 / (14 + 3.5)$308.57
Earned per working day (pricing and diary together)$5,400 / 20$270.00

The two numbers answer different questions. The first says whether your quotes are priced right for the days they take, and the target is $402.50. The second also counts the gaps in the diary. If the first is near target and the second is low, the problem is empty days, not the price list, and raising rates will not fix it. If both are low, go back to the ten-job table. The AI can keep this tally for you: paste the month's days and charges and ask for both figures, then check the division yourself.

When ten jobs are not enough

Ten jobs split into three groups give rows of three, four and three. That is a signal, not proof, and a few rules keep you from over-reading it.

  • Under three jobs in a group: do not use that group's factor. Use the overall fixed-price overrun (23% in the example), or a day rate.
  • Three or four jobs: use the group as a guide and quote a range, as above.
  • Five or more: you can change the factor you use for that group.
  • A wide spread: if overruns in one group run from 0% to 50%, the median hides the real problem. A spread that wide is a reason for a day rate, not for a bigger factor.
  • One disaster job: mark it and ask for the figures with and without it. Do not delete it.

Start recording from today so that the next table does not rest on memory. At the end of each day, write one line: job, hours, and any off-site task (measuring, ordering, snagging). Five minutes a day gives you, after ten more jobs, a table with real off-site days in it. Run the same tests again then and see what moved. If the shortfall has closed, your changes worked. If it has not, the table will show which group is still leaking, which is what a pricing method should do. For the same quoted-against-actual idea across a whole building firm, checking your rates against past building jobs with AI goes line by line through costs instead of days.

Questions carpenters ask about day rates

Should I raise my day rate after one bad month?

Not on one month. A single bad month can come from weather, a late supplier or one awkward job. Build the ten-job table first and see whether the shortfall shows up across several jobs and job types. If it does, the fix is usually in how you estimate days and in the unpaid off-site time, not in a bigger headline day rate.

How do I quote when the customer insists on a fixed price for uncertain work?

Price it from your history with the overrun factor for that kind of job, and list your assumptions in writing: what is included, what you have not seen, and what happens if it turns out differently. Another route is to fix the price for a first phase, such as strip-out and inspection, and price the second phase once the hidden work is visible.

Is it safe to give an AI my job records?

The table needs only job numbers, job types, days and amounts, so strip customer names, addresses and phone numbers first. Consumer chat plans have a privacy setting that controls whether chats are used for model training, and business plans from the main vendors do not train on your content by default. Check which plan you are on before you paste.

Further reads

Sources: no vendor pricing is used. Day rate, markup, margin and effective earnings per day are arithmetic on illustrative figures. Replace every figure with your own records.

Want your job hours logged without the paperwork?

On a 1:1 call we'll map how you record days, materials and snagging today, pick the cheapest way to capture them for every job, and check whether your quoting app can export the table for you.

Book a 1:1 call with me