Car Detailing Price List Template: AI-Built Packages and Add-Ons

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Car Detailing Price List Template: AI-Built Packages and Add-Ons.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Car Detailing Price List Template: AI-Built Packages and Add-Ons.

Time five real jobs for each package, work out what an hour of your business costs, then give those figures to a chatbot and ask for three packages, a vehicle-size multiplier table and an add-on menu with a price for each. The AI builds the structure and the wording; the minutes and costs must come from your own jobs.

A blank price-list template leaves the hard part blank, which is the number. A usable list starts from minutes and costs, and a chatbot can only guess at those. Give it measured figures and it does the tedious work well: pricing every cell of a size grid, naming the packages, spotting a gap in the ladder and writing the one-page version customers read. The figures below belong to an illustrative studio with one full-time detailer, so swap in your own at every stage.

Follow me on Instagram@sagnikteaches

Time five real jobs for each package

Guessed hours are where detailing price lists go wrong first. Over a normal fortnight, log the start and finish time of the next five jobs on each package you plan to offer, on cars of a similar size. A notes app or a shared sheet is enough. Record why a job ran long: pet hair, a spilled drink, a car that had not been washed in a year.

Connect on LinkedInSagnik Bhattacharya

Use the median, the middle value, not the average. Say five Full Detail jobs on medium cars took 3h10, 3h25, 3h30, 3h40 and 6h00, the last being a family car with pet hair and spilled milk. The median is 3h30. The average is 3h57, because the one bad job drags it up by 27 minutes. At a cost of $50 an hour, pricing from the average makes every ordinary customer pay about $22 of cost for someone else's mess. Price the typical job, and charge the messy one separately, as the soiling surcharge below does.

Subscribe on YouTube@sagnikteaches

Let the spreadsheet do the sum with =MEDIAN(B2:B6), which works the same in Google Sheets and Excel. If you paste the times into a chat instead, ask for the sorted list so you can see the middle value yourself. Three or four more jobs per package make the figure steadier. If you have only done a package twice, enter a provisional time and mark it provisional until you have five, so the sheet shows which prices are still guesses.

Work out what an hour of your business costs

The one number no chatbot can supply is your cost per productive hour. Add a month of wages and employer costs, add a month of overheads, and divide by the hours you can actually bill, not the hours you pay for. Productive hours are lower than paid hours because of admin, travel between jobs, waiting for customers and cleaning the kit. Start with 75% of paid hours and replace it with your own count after a month.

Monthly item (illustrative)Amount
Wages and employer costs, one full-time detailer$3,600
Unit rent$1,100
Insurance$210
Utilities$240
Booking and accounting software$90
Pads, towels and tool replacement$260
Marketing$350
Van and fuel$150
Total monthly cost$6,000
Productive hours (160 paid x 75%)120
Cost per productive hour$50

Now add a margin, and add it the right way round. A 30% margin on the price turns $50 of cost into a charge-out figure of $71.43 an hour ($50 divided by 0.70). Adding 30% to the cost instead gives $65, which is only a 23% margin on what the customer pays. Every price below uses the divide-by-0.70 method. If you work alone, put your own wage in the wages line, or the list quietly pays you nothing.

What a chatbot cannot tell you is what the market will pay. The limits of AI pricing research are covered in the tutorial on whether AI can tell you what to charge. Look at three or four rivals' price lists yourself and use them only to sanity-check the ladder, not to set it.

Let the chatbot draft the package ladder

With measured hours and a cost per hour you can brief a chatbot properly. Lock the figures, list what each package includes in your own words, and forbid vague adjectives, which models love.

I run a car detailing studio and want a price list built from my own measured figures, for a medium car (saloon or hatchback).

Measured medians and materials per job:
- Express Refresh: 1.5 hours, materials $4
- Full Detail: 3.5 hours, materials $14
- Showroom Protect: 7.5 hours, materials $42

What each package includes (my words):
- Express Refresh: foam wash and hand rinse, wheels and arches, windows inside and out, interior vacuum, dashboard and door-card wipe-down.
- Full Detail: everything in Express Refresh plus clay-bar decontamination, hand-applied wax, carpet and seat clean, leather conditioner, door-shut cleaning.
- Showroom Protect: everything in Full Detail plus a single-stage machine polish and a six-month paint sealant.

My cost per productive hour is $50. I want a 30% margin on the price, so price = (hours x 50 + materials) / 0.70, rounded UP to the next $5.

For each package give: a name, a one-line "best for", the included work as short action phrases, the hours exactly as I gave them, and the price with the sum shown. Do not add services I have not listed. Do not use the words premium, deep, ultimate or luxury unless you say exactly what is done.

A typical reply, trimmed to the sums (illustrative), looks like this.

PackageBest forHoursPrice and sum
Express RefreshA car that must look right before the weekend1.5($75 + $4) / 0.70 = $112.86, so $115
Full DetailA yearly reset, or before selling3.5($175 + $14) / 0.70 = $270.00, so $270
Showroom ProtectDull paint that needs correcting, then protecting7.5($375 + $42) / 0.70 = $595.71, so $600

The prompt above already carries the fixes for four faults that a looser first version produced, and they show why you read what comes back. That version wrote "deep interior clean" for Full Detail, which promises nothing you can hold yourself to, so the included work is now listed as actions. It rounded the Full Detail time to "about 3 hours", softening the 3.5-hour median, hence "the hours exactly as I gave them". It added a ceramic coating to Showroom Protect, which this studio does not offer, hence "Do not add services I have not listed". And it named the packages Silver, Gold and Platinum, which say nothing, so the brief now supplies names that describe the outcome. The steps between prices are 2.3 times and 2.2 times, even enough that neither package looks like a leap.

Put the formula in the sheet rather than trusting the chat's arithmetic. With the hourly cost in B1, the margin in B2, hours in B4 and materials in C4, this returns the rounded-up price, and Express Refresh should give 115.

=CEILING((B4*$B$1+C4)/(1-$B$2),5)

Ask the chatbot to write the formula and explain it, then test it on the row you already worked out by hand. The Google Sheets AI prompts tutorial has more on getting reliable formulas out of a chatbot.

Size multipliers that follow measured time

A single price for every vehicle undercharges SUVs and overcharges hatchbacks. The usual fix is a multiplier per size class, and the mistake is picking round multipliers by feel. Time one Full Detail per size class (three if you can) and let the measured hours set the multiplier. The dog grooming price list tutorial uses the same idea for breed and coat size.

SizeExamplesMeasured Full Detail timeMultiplier
SmallCity car, small hatchback3h09 (3.15 h)0.9
MediumSaloon, family hatchback3h30 (3.5 h)1.0
LargeEstate, mid-size SUV4h22 (4.375 h)1.25
XLLarge SUV, people carrier, pickup, van5h36 (5.6 h)1.6

Then audit the grid. Hand the chatbot the finished table and ask it only to check, never to change.

Here is my price sheet as a table: [paste package, size, hours, materials, price].
My cost per productive hour is $50 and my floor is a 28% margin.
1. Recompute every price from hours x 50 + materials and list any cell where my price gives a margin below 28%.
2. Flag any gap between neighbouring packages above 2.5x or below 1.5x.
3. List any wording a customer could read two ways.
Show the sums. Do not change any prices; only list what you find.

In the first version of this studio's grid the XL column used 1.5, a round figure the chatbot had proposed. The audit caught it (illustrative output): "Full Detail, XL, $405. Cost is 5.6 hours x $50 + $22.40 materials = $302.40, a margin of 25.3%, below your 28% floor." Setting the XL multiplier to the measured 1.6 moved the price to $435 and the margin to 30.5%. The third check caught a different problem: "interior clean" appeared in two packages with different scope, which is how a customer ends up expecting a deep shampoo from the cheap one.

An add-on menu priced by its own minutes

Add-ons are the easiest lines to price, because each one is time and materials you can predict. Ask the chatbot for the extras customers commonly request in your trade, then delete every one you do not actually sell. Six to eight is plenty, and grouping them as fix, protect or refresh makes the menu quicker to read. Price each from its own hours and materials, rounded up to the next $5, and keep the margin visible while you build it.

Add-onTimeMaterialsCost at $50/hourPriceMargin
Pet hair removal (up to 45 minutes)0.75 h$3$40.50$6032.5%
Headlight restoration (pair)0.75 h$9$46.50$7033.6%
Engine bay clean0.5 h$3$28.00$4030.0%
Odour treatment0.5 h$2$27.00$4032.5%
Clay bar and iron decontamination1.0 h$8$58.00$8531.8%
Leather clean and condition0.75 h$6$43.50$6533.1%
Fabric protection (seats and carpets)0.5 h$7$32.00$5036.0%
Wheel-off clean and seal1.5 h$12$87.00$12530.4%

Rounding up is deliberate. Rounding $66.43 down to $65 would take the headlight add-on to a 28.5% margin, and the same habit across eight lines quietly drops you under your target. Prices ending in 9 are a matter of taste, and if you like them, round up to them, never down.

Bundles are where margins disappear. Headlights ($70) plus pet hair ($60) cost the studio $87 to deliver. A 5% bundle discount takes the pair to $123.50 and a margin of 29.6%, still above the 28% floor used in the audit. At 10% off, the price falls to $117 and the margin to 25.6%, below the floor; at 15% off it is $110.50 and 21.3%. The rule that follows: give no more than 5% off, and only when the add-ons are attached to a package. A discount on a stand-alone add-on is just a smaller price for the same minutes.

Heavy soiling, travel and minimum charges

A size grid prices the typical car of that size. Three further rules cover the rest.

Heavy soiling is priced by time. At $50 cost and 30% margin, half an hour is $35.71, so charge $36 per extra half hour after you have seen the car. Ask customers to send six photos with the booking (each side, the boot, the rear seats and the driver's footwell). A chatbot can read the photos for obvious cues like pet hair, stains and mud, and it makes a decent first pass, much as it does for painters quoting from photos. It cannot smell the car or feel the paint, so confirm on arrival, and call before continuing if the job is heavier than the photos showed.

A worked case: a large SUV on Full Detail normally takes about 4h22. The photos show ground-in biscuits and pet hair, and you estimate another 1h15, which is 2.5 extra half hours. The quote is $340 + (2.5 x $36) = $430. The job takes 5h40, close to the estimate, and nobody argues at handover because the rule was written down.

Travel is not free. If you work mobile, a 40-minute average round trip costs $33.33 at $50 an hour. Build that into a call-out fee or into every price. Leaving it out means your most distant customers are the ones you subsidise.

Set a minimum. Your cheapest sensible job sets the floor. Here a quick exterior wash priced at $40 would be the minimum booking, so nothing on the list gets sold for less than it costs to turn up.

Some work stays off the list. Paint correction beyond a single-stage polish, ceramic coatings and anything that depends on the condition of the paint cannot be timed in advance. Price those by the panel or by an inspection quote, and keep the quote template (scope, a range of hours, what is not included, deposit) as a separate document. A chatbot can draft that template well, but only after you have measured a few real jobs to fill in the range of hours.

The finished price list, ready to print

Keep one master workbook with five tabs and make every customer-facing version a copy of the last one. The tabs are Costs (wages, overheads, productive hours, cost per hour, margin target), Packages (name, included work, median hours, materials, formula price), Sizes (size, examples, measured hours, multiplier), Add-ons (name, what is done, hours, materials, formula price) and Price list (the customer-facing version, pulled from the others by formula, with a "prices valid from" date). When wages or products change, you edit one tab and the rest follows.

This is what the Packages and Sizes tabs produce for the customer, with each cell the rounded-up result of the sheet formula.

PackageSmallMediumLargeXL
Express Refresh$105$115$145$185
Full Detail$245$270$340$435
Showroom Protect$540$600$750$960

Hand the Price list tab to the chatbot for the layout and nothing else.

Using only the table below, write a one-page customer price list. Sections: three packages with their included work as bullets, a size price grid, an add-on list with one line each, and a short "How we price" note of 40 words or fewer explaining that larger vehicles take longer and that very dirty cars are charged by the extra time, after we have seen them. Keep my package names and prices exactly. Do not add offers, guarantees or services that are not in the table.

[paste the Price list tab]

Chatbots are good at layout and wording, but they can slip when copying numbers, so read every figure in the output against the sheet, as you would proofread a printed menu. Once the list is right, ask the same chatbot to generate the website version, the booking-form text and the services list on your business profile from the same table. Keeping every surface identical matters more than it sounds, because a customer who sees $265 on one page and $270 on another stops trusting both. If you use AI to keep the diary full, this list has to be the single source for every enquiry reply.

Test the list against your last ten jobs before you publish

Take ten recent invoices, price each job on the new list and compare. Four of them, from the same illustrative studio, show the pattern.

JobTimeOld priceOld $ per hourNew priceNew $ per hour
Medium, Full Detail3h30$210$60.0$270$77.1
Large, Full Detail4h25$240$54.3$340$77.0
Small, Express Refresh1h20$90$67.5$105$78.8
Medium, Showroom Protect8h10$450$55.1$600$73.5
All four17h25$990$56.8$1,315$75.5

After subtracting $50 an hour of cost and the materials for each job, the old prices left $42.10 across the four jobs, a margin of 4.2%. The new list leaves $367.10, or 27.9%. It falls a little short of 30% because the large Full Detail and the Showroom Protect ran longer than their medians, which is normal and why you keep a surcharge rule. The old list was not wildly wrong on any single job. It was wrong in the same direction on every job, which is why it went unnoticed for so long.

A rise of this size on some lines is steep. Tell regular customers before the new list applies, honour the old price for bookings made before the change date, and watch which package people choose for a month. If nearly everyone says yes without a question, test a higher price on new customers only. If enquiries dry up, look first at the gap between packages and at the "best for" lines before cutting the price.

The announcement matters as much as the number. Given the bare fact of a price rise, a chatbot's first draft tends to read like this: "Hi [first name], just a quick heads up that our prices are increasing from 1 March due to rising costs. We value your loyalty and hope you understand." It apologises, blames costs you have not shown and says nothing a regular can act on. After one round of feedback ("say what changes for this customer, in numbers, and what they can do about it") the same chatbot produces something closer to this.

Hi [first name], from 1 March our price list is built on the time each job takes, so larger vehicles and heavier jobs are priced by the hours they need. Your usual Full Detail on a medium car moves from $210 to $270. Anything you book before 1 March stays at today's price. The full list is attached, and if you would like to talk it through, just reply to this message.

Check the personal figures in each message against that customer's own history before sending, and never let the chatbot guess them. A merge field or a sheet lookup is safer than free typing.

Where AI-built price lists go wrong after launch

  • A package quietly grows. The chatbot adds a free extra in its wording, such as tyre shine, and you end up honouring it on every job. Paste the final text back in and ask what it includes that your sheet does not.
  • A price is rounded down. A tidy $110 for a $112.86 calculation looks harmless, but on Full Detail there is no spare margin to give away. Round up, and use the formula.
  • A "from" price travels without its size. A teaser reading "from $105" pulls in enquiries for a car that is not the one the customer owns. Show the size grid beside every teaser.
  • Costs drift. Polish, towels and pads rise a few per cent a year. Put a quarterly fifteen-minute review in the calendar: update the Costs tab, rerun the audit prompt and read the flags.
  • Two readings of one package. "Interior clean" meaning a vacuum in one package and a shampoo in another produces arguments. The third audit check exists to catch this, so keep running it.

Once the list is stable, the next job is telling people about it. The tutorial on before-and-after posts for detailers covers the promotion side without repeating any of the pricing here.

Questions detailers ask about their price list

How many packages should a detailing price list have?

Three is enough for most studios, plus six to eight add-ons. A fourth package splits attention and makes the middle one harder to choose. Work that needs an inspection first, such as coatings or heavy paint correction, usually stays off the list and is quoted after the car has been seen.

Should I publish prices or ask customers to request a quote?

Publish the size grid and the rule for very dirty cars. A visible price lets a customer decide without waiting for a reply, and you answer fewer repeat questions. Keep quote-only jobs for work you cannot time in advance, and say on the list which jobs those are.

How often should I update the price list?

Review product costs every quarter, which takes about fifteen minutes in a sheet, and revisit hourly cost whenever wages, rent or insurance change. Print a 'prices valid from' date on the list so customers and staff know which version applies.

Can ChatGPT quote a car from photos?

It can describe visible condition, such as pet hair, stains or mud, which helps you decide between a normal and a heavy-soiling quote. It cannot judge odours, paint condition or how stubborn dirt will be. Treat its reading as a first pass and confirm when the car arrives.

Further reads

Sources: all prices, times and costs are illustrative figures for a fictional studio; replace them with your own measured numbers.

Want your quoting steps mapped and tidied?

On a 1:1 call we'll look at how you quote, book and invoice, then decide whether a spreadsheet, your booking tool or a small automation should hold the prices so every page and message stays in step.

Book a 1:1 call with me