Auto Repair Price Estimate Template: Build One With ChatGPT

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Auto Repair Price Estimate Template: Build One With ChatGPT.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Auto Repair Price Estimate Template: Build One With ChatGPT.

Ask ChatGPT to design the layout and write the spreadsheet formulas, then paste them into Excel or Google Sheets and let the sheet, not the chatbot, do the arithmetic. Add a check cell that recalculates the total a second way, and compare it with the printed figure before any estimate goes to a customer.

A model can write a formula correctly and still add a column up wrongly when asked to do it in chat, so treat any total typed out by ChatGPT as unchecked. Labour, parts and tax each follow rules that differ from shop to shop, which is why every rate lives in one settings sheet you control and the AI never decides one.

Follow me on Instagram@sagnikteaches

The finished estimate first: one brake job and one filter

It is easiest to build backwards from what the customer receives. This estimate carries two repairs, and its numbers run through the rest of the page (all illustrative: labour guide hours of 1.8 and 0.3, a $135 labour rate, and 8% tax charged on parts only).

Connect on LinkedInSagnik Bhattacharya
LineDescriptionQty or hoursUnit priceLine total
1Part: front brake pads, set1$64.00$64.00
2Part: front brake discs (rotors)2$88.00$176.00
3Part: brake hardware kit1$20.00$20.00
4Labour: replace front pads and discs1.8$135.00$243.00
5Part: cabin air filter1$28.00$28.00
6Labour: replace cabin air filter0.3$135.00$40.50
Parts$288.00
Labour$283.50
Tax on parts at 8%$23.04
Total$594.54

Above the lines sits the customer's concern, copied from the intake form and its technician summary, so the estimate answers the complaint in the customer's own terms. Beside each repair goes an urgency tag and one plain-English sentence, and below the totals sit the approval block and a validity period. The plain-English sentence and the approval block are built later in this page.

Subscribe on YouTube@sagnikteaches

Label the document an estimate, not a quote, and say what can change it. Printing "this price may change if the technician finds further damage, and extra work needs your approval first" costs one line and saves arguments. If the price really is fixed, call it a quote and mean it. What each word means legally varies, so have a qualified adviser read the wording once.

Settings sheet: labour rate, parts matrix and tax in one place

Every number that can change sits on a second sheet called Settings, and no formula contains a number of its own. That single rule is what lets you change the tax rate in one cell, and it is the first thing to check in anything ChatGPT writes.

CellSettingExample value
B1Tax rate8%
B2Labour rate per hour$135
B3Is labour taxable? (Yes or No)No
B4Minimum parts margin35%
A8:B11Parts markup matrix: cost from, then multiplier, lowest first0 → 2.0; 20.01 → 1.6; 75.01 → 1.4; 200.01 → 1.3

A matrix prices cheap parts at a high multiple and expensive parts at a low one, so a $10 hardware kit earns a useful amount and a $400 part does not look greedy. The bands above are placeholders; set yours from your supplier costs and what your market accepts. Run the example through it: pads costing $40 fall in the 1.6 band and sell at $64.00; discs costing $55 sell at $88.00 each; the $10 hardware kit falls in the 2.0 band and sells at $20.00; the $14 filter sells at $28.00. Across the four parts, cost is $174 and price is $288, a blended margin of 39.6%.

Labour is hours multiplied by the shop rate. Shops commonly take the hours from a published labour guide (often called book time) rather than the clock, so that the price does not change with how fast a technician works. Which guide you use, and whether you bill book hours or clock hours, is a business decision that ChatGPT cannot make for you. Shop supplies and environmental charges, if you make them, belong on their own visible fee lines, and some places regulate how they may be charged, so ask your adviser before adding one.

Diagnostic time needs a decision before you build, because the sheet has to follow a rule. Charge it as its own labour line, and print one sentence saying whether the fee is credited against repairs the customer approves. Either policy works. A customer who first meets the fee in the total will argue with it, and one who read it on the estimate usually does not.

The prompt that builds the sheet, and what to fix in its answer

Put the prompt in a ChatGPT Project so the next change, a new fee line or a new rate, starts from the same facts. On a plan that includes ChatGPT Work (Plus and above), it can also produce the spreadsheet file itself. On any plan it can write formulas for you to paste. Either way, read every formula before you trust it.

I run a small auto repair shop. Design an estimate spreadsheet for Excel and Google Sheets.

Rules:
1. Two sheets: Settings and Estimate. Every rate, percentage and band lives in Settings. No number appears inside a formula.
2. Settings: tax rate (B1), labour rate per hour (B2), labour taxable Yes/No (B3), minimum parts margin (B4), and a parts markup matrix (A8:B11, cost-from in column A sorted lowest first, multiplier in column B).
3. Estimate columns: Line, Type (Part or Labour), Description, Qty or hours, Unit cost (parts only), Unit price, Line total, Urgency, Approve (Yes, No or Call me). Ten line rows (rows 6 to 15).
4. Part unit price = unit cost times the matrix multiplier, rounded to cents. Labour unit price = the Settings labour rate. Line total = qty times unit price, rounded to cents, on every line.
5. Totals: parts, labour, tax (tax rate on parts, plus labour only if Settings says labour is taxable), total.
6. Approved total: the same sums, but only for lines marked Approve = Yes.
7. Four check cells outside the print area: typed-over line totals, the total recalculated by a second route, parts margin below the Settings minimum, and labour hours not in tenths.
8. Give every formula with its cell address, in plain text I can paste. Do NOT calculate any totals in your answer. Include one sample estimate as inputs only, so I can test it myself.

Expect something usable and slightly wrong. Four slips turn up often enough to look for deliberately (these are common patterns, not a record of one session):

  • A number inside a formula. The tax rate typed as 0.08 in the total cell means a rate change misses it. Point the formula at Settings!$B$1 instead.
  • Rounding only at the end. The lines add up to a figure a cent away from the total. Round every line total, as rule 4 says.
  • Exact-match lookup on the matrix. A cost of $37.20 returns an error because only $20.01 and $75.01 are listed. The last argument must be TRUE for a lookup against bands, and the first column sorted lowest to highest.
  • Markup applied to labour. If the labour price formula refers to the matrix, the $135 rate gets multiplied like a part's cost and every labour line comes out wrong. Labour uses the Settings rate only.

The formulas that should come out, with lines in rows 6 to 15:

F6   (part)     =ROUND(E6*VLOOKUP(E6,Settings!$A$8:$B$11,2,TRUE),2)
F9   (labour)   =Settings!$B$2
G6              =ROUND(D6*F6,2)                  copy down to G15
G17  Parts      =SUMIF($B$6:$B$15,"Part",$G$6:$G$15)
G18  Labour     =SUMIF($B$6:$B$15,"Labour",$G$6:$G$15)
G19  Tax        =ROUND((G17+IF(Settings!$B$3="Yes",G18,0))*Settings!$B$1,2)
G20  Total      =G17+G18+G19

Leave the unit cost cell empty on labour lines, because a stray dash there breaks the margin check below. If you would rather practise the spreadsheet side first, the older guide to using ChatGPT with Excel covers pasting and testing formulas.

Check column: recalculating the total a second way

Two things can break a total. A language model reads numbers as text and can slip on a long sum, and a person in a hurry can overtype a cell. The tutorial on why AI is bad at maths and what to check in quotes and invoices explains the first problem in more detail. The sheet guards against both by computing the figure twice, by different routes, and shouting when they disagree. Put these cells outside the print area:

K1  Typed-over lines    =IF(ABS(SUMPRODUCT($D$6:$D$15,$F$6:$F$15)-SUM($G$6:$G$15))<=0.05,"OK","CHECK")
K2  Second route        =IF(ABS(G20-ROUND(G17*(1+Settings!$B$1)+G18*IF(Settings!$B$3="Yes",1+Settings!$B$1,1),2))<=0.02,"OK","CHECK")
K3  Parts margin        =IF(G17=0,"OK",IF(1-SUMPRODUCT(($B$6:$B$15="Part")*$D$6:$D$15*$E$6:$E$15)/G17<Settings!$B$4,"LOW MARGIN","OK"))
K4  Hours in tenths     =IF(SUMPRODUCT(($B$6:$B$15="Labour")*(ABS(ROUND($D$6:$D$15*10,0)-$D$6:$D$15*10)>0.0001))>0,"CHECK HOURS","OK")

K1 multiplies quantity by price for every row in one go and compares that with the sum of the line totals. If someone types $190 over the $176 discs total, the first figure stays at $571.50 and the second becomes $585.50, a difference of $14.00, so K1 says CHECK. The 5-cent tolerance allows for rounding on odd hours.

K2 rebuilds the total as parts times one plus the tax rate, plus labour. If somebody edits the tax cell so it charges tax on labour as well, G20 becomes $617.22 while the second route still says $594.54: a $22.68 gap that K2 reports.

K3 is a margin alarm: a part keyed in at too high a cost drags the blended margin under your 35% floor. K4 looks for the classic labour slip, covered below. Add conditional formatting so any cell that is not "OK" turns red, and put the four cells beside the Total on screen, outside the print area, where you cannot miss them.

The golden estimate: a test for wrong settings

K2 cannot catch a wrong setting, because it reads the same settings as the total does. If the "labour taxable" switch is flipped to Yes for a fleet customer and left there, both routes agree on $617.22 and nothing turns red. A golden estimate closes that gap.

Keep one estimate whose total you worked out by hand on a calculator, the brake job and filter above, with its inputs saved in a corner of the sheet and the expected total, $594.54, written beside it. After every settings change, and once a quarter, re-enter the inputs and look at the total. A flipped switch gives $617.22, a tax rate of 8.5% gives $595.98, and a changed matrix band gives a new parts total. Any difference from $594.54 means a setting changed, and now you know to ask whether that was meant.

The hand calculation matters. If you ask ChatGPT for the "expected total", you are checking a sheet against a source with the same weakness, so use a calculator, or a colleague.

Turn technician shorthand into plain-English lines

Customers approve what they understand. A line reading "fr pads 2mm, rotors scored, rr ok" is accurate and useless to them. A second prompt turns the technician's note into a short explanation that uses only what the note contains and the urgency tag the technician chose, so the AI never decides how worried a customer should be.

You write the customer-facing line for one repair on an auto repair estimate.

I give you the technician's note in shorthand, with an urgency tag: SAFETY, SOON, CAN WAIT or MONITOR.

Write 2 to 4 sentences, under 70 words, in plain English for someone who knows nothing about cars:
1. What we found. Keep every measurement from the note.
2. What we recommend.
3. The urgency sentence for the tag. SAFETY: 'We recommend doing this before you drive much further.' SOON: 'We recommend doing this in the next few weeks.' CAN WAIT: 'This can wait until your next service.' MONITOR: 'No repair is needed now; please keep an eye on it.'

Rules: use only facts in the note. Do not add causes, consequences, prices or warranty promises. Do not use alarming words such as dangerous or failure unless the note does. Explain a part in a few words the first time it appears. If the note is unclear, ask me one question instead.
Technician's noteCustomer line (illustrative output)
Fr pads 2mm, rotors scored and under min thickness, rr ok. Replace pads and rotors together. SAFETYYour front brake pads have worn down to about 2 mm, and the discs they grip are scored and thinner than the minimum. We recommend replacing the pads and discs together. The rear brakes are fine. We recommend doing this before you drive much further.
Cabin filter dirty, airflow ok. Replace. CAN WAITThe cabin air filter, which cleans the air coming into the car, is dirty, but air is still flowing normally. We recommend replacing it. This can wait until your next service.
Coolant 1 cm under min, no leak seen, topped up, no charge. MONITORThe coolant, the fluid that stops the engine overheating, was about 1 cm below the minimum mark. We topped it up at no charge and found no leak. No repair is needed now; please keep an eye on it.

Two checks before any line goes out: every number matches the note, and the urgency sentence matches the tag. A common slip in a first draft is an invented consequence, such as "or the brakes could fail", added to make the SAFETY line feel serious. It is the model's guess, not the technician's finding, and a customer will quote it back at you. The "do not add consequences" rule exists to stop it. The urgency wording is your policy, so edit the four sentences in the prompt until they sound like your shop. If the technician writes a note that supports a firmer sentence, they write it in the note.

The approval block: one yes, no or call-me per line

Put an Approve column beside each line, with three allowed answers: Yes, No or Call me. A dropdown stops typos, and the approved totals then add up only what the customer agreed to, with tax recalculated on the approved parts instead of copied from the full estimate:

G22  Approved parts   =SUMIFS($G$6:$G$15,$B$6:$B$15,"Part",$I$6:$I$15,"Yes")
G23  Approved labour  =SUMIFS($G$6:$G$15,$B$6:$B$15,"Labour",$I$6:$I$15,"Yes")
G24  Approved tax     =ROUND((G22+IF(Settings!$B$3="Yes",G23,0))*Settings!$B$1,2)
G25  Approved total   =G22+G23+G24

Suppose the customer approves the brake job and declines the filter. Approved parts are $64.00 + $176.00 + $20.00 = $260.00, approved labour is $243.00, and tax is 8% of $260.00 = $20.80, so the approved total is $523.80. Subtracting the filter's two lines from $594.54 would give $526.04, because the filter's $2.24 of tax would stay in. Approve a repair's parts and labour lines together, or the sheet will happily total labour for a job whose parts were declined.

Below the table goes fixed wording, written by you or your adviser and never by the AI. A draft to start from:

Estimate [number], valid for 14 days from [date]. Prices are estimates. If the technician finds anything further, we will contact you for approval before any extra work is done. For each repair, mark Approve, Decline or Call me, then sign and date. Approved total: $[amount]. Name: [signature]. Date: [date].

Some places require specific wording or a signature before work begins, and the rules differ widely, so show the final version to a qualified adviser. For estimates that sit unanswered, the tutorial on following up unapproved repair estimates with AI picks up where the approval block ends, and the guide to an approval step for AI-written quotes covers the review stage before it reaches the customer.

When the technician finds more: a revision, not a new total

Mid-job discoveries are where estimates turn into arguments. Once an estimate is approved, leave it untouched and issue a revision that carries only the new lines, numbered E-1042 rev 2 if the original was E-1042. The customer approves the revision separately, and the job's approved total is the sum of what was approved at each stage. That way the record shows what was agreed, and when.

Say the front brakes are apart and the technician finds the front-left caliper slide pin seized (illustrative). The part costs $35.00, which falls in the 1.6 band and sells at $56.00. Labour is 0.5 hours, $67.50, and tax on the part is $4.48. The revision comes to $56.00 + $67.50 + $4.48 = $127.98, and if the customer approves it the job's approved total becomes $523.80 + $127.98 = $651.78. The plain-English prompt writes the explanation from the technician's note ("Fl caliper slide pin seized. Replace. SAFETY") and you add the price:

Hi [first name], while the front brakes were apart our technician found that the slide pin that lets the front-left brake caliper move freely is seized. We recommend replacing it as part of this job, and doing it before you drive much further. Added cost: $127.98 including tax (parts $56.00, labour 0.5 hours $67.50). Reply YES to approve, or call us on [number]. We have paused that part of the work until we hear from you. [your name]

The last sentence matters as much as the price. It tells the customer that nothing extra has been done, and it commits the shop to wait. Decide in advance how long you wait before you phone, and write that rule down.

Four ways an estimate goes wrong, and where the sheet shows it

  • The typed-over line. After a phone haggle, someone types a round $150 over the $176.00 discs total to give a quick discount. K1 turns red, because 2 × $88.00 no longer equals the figure in the cell and the two sums disagree by $26.00. The discount is fine; doing it by overtyping a total is the problem. Change the unit price cell instead, where K3 still watches the margin.
  • Minutes typed as hours. The labour guide says 1 hour 48 minutes and the sheet receives 1.48, when the decimal figure is 1.8. At $135 an hour that bills $199.80 instead of $243.00, a $43.20 shortfall that never feels like an error. K4 flags 1.48 because it is not in tenths. If you bill in quarter-hours, change both 10s in K4 to 4.
  • The flipped switch. Tax treatment set for one customer type and never set back. Only the golden estimate shows it, as $617.22 instead of $594.54.
  • The stale part price. The estimate says $88.00 per disc, but the supplier raised the price a week ago and the car does not come in for another ten days. No formula can know. That is what the 14-day validity line is for: an older estimate gets its part prices checked again before work starts.

Overlapping labour is the one error the sheet cannot show at all. When two jobs share the same disassembly, the second job's labour should reflect the steps already done. Check your labour guide or shop-management system for overlap rules before you price two repairs on one vehicle, and decide whether the owner approves any deduction.

When the spreadsheet should give way to shop software

A sheet like this is a good fit for a shop writing a handful of estimates a day. It stops being the right tool when you need labour-guide hours looked up for you, live parts prices from suppliers, inspection photos attached to the estimate, or approvals by text link. Shop-management software typically brings those. My rule of thumb: time yourself for a week, and if the sheet costs more than five minutes an estimate, or you are re-keying parts from supplier invoices, start comparing software.

If your software already has an estimate template, keep it. ChatGPT still helps in two places that software rarely does well: the plain-English lines, and a second pair of eyes on a printed estimate. For the second job, paste the estimate text into a fresh chat and ask it to list any line where quantity times price does not equal the line total, or where tax appears on a labour line. Treat the answer as a pointer to look closer, and let your calculator or sheet decide who is right.

Ninety minutes to build it, in order

  1. Settings sheet with your real rate, tax rule and matrix: 15 minutes.
  2. Run the build prompt, paste the formulas, fix the four usual slips: 25 minutes.
  3. Add the four check cells and the red formatting: 15 minutes.
  4. Work one estimate out by hand and save it as the golden estimate: 10 minutes.
  5. Save the plain-English prompt and test it on three recent technician notes: 15 minutes.
  6. Add the approval column, the approved totals and your fixed wording: 10 minutes.

Then run ten real estimates through it by hand beside your current method, compare the totals, and only switch over when all ten match. Keep the earlier method for another week, because a template earns your trust slowly and loses it in one wrong total.

Questions about estimate templates and checking them

Should the customer's copy show my parts cost and markup?

No. Customers need the unit price and the line total. Keep cost, margin and check cells on the Settings sheet or in hidden columns, set a print area that leaves them out, and send a PDF, not the spreadsheet. Hidden columns and extra sheets can travel with a shared file, so open the PDF yourself once to see exactly what a customer would.

Does it matter whether I call it an estimate or a quote?

Yes, so choose one and print which it is. An estimate says the price can change if the technician finds more, and that extra work needs approval. A quote usually promises a price. What each word means in law can differ from place to place, so have a qualified adviser check your wording and your approval line.

How often should I re-test the template?

Whenever the tax rate, labour rate, markup bands or labour guide change, and once a quarter regardless. Re-enter the golden estimate and confirm the total still reads $594.54. A quarterly run also catches quiet breakages, such as a formula typed over during a busy week, before a customer meets a wrong total.

Further reads

Sources: common auto repair estimating practice (flat-rate labour guides, parts markup matrices, separate fee lines) as described in industry guides; OpenAI's description of ChatGPT Work and Projects (September 2026); standard Excel and Google Sheets functions (ROUND, VLOOKUP, SUMIF, SUMIFS, SUMPRODUCT).

Want your estimates built and checked properly?

On a 1:1 call we can go through how your shop prices parts and labour, set up the template and the check steps, and decide which wording AI drafts and which stays fixed.

Book a 1:1 call with me