A customer emails a drawing and a quantity and wants a number by Friday. You know how to make the part, but the last few times you priced a batch in a hurry you worked out the real margin afterwards, and it was thinner than you thought.
ChatGPT is useful here, but not in the way most people use it. It should not pick your price. It should hold your cost build-up in one place, do the arithmetic without slipping a decimal, and turn the result into a quote that says exactly what you are and are not supplying. You still set the rate, the scrap allowance and the margin, because those are yours.
Keep two documents, not one
The single biggest reason margin leaks out of a machined-parts quote is that the cost build-up and the customer-facing quote get written at the same time, in the same email. Once they are mixed, you start rounding numbers to make the price look tidy, and the rounding always goes down.
So separate them:
- The internal cost build-up. Material with scrap allowance, machine hours at your shop rate, setup and tooling, outside processes, freight in and out. Nobody outside your building ever sees this.
- The customer-facing quote. Part number and revision, quantity, unit price, total, lead time, what is included, what is excluded, how long the price stands, payment terms.
Give ChatGPT both jobs, in that order, in the same chat. Ask for the build-up first and check it. Only then ask for the quote.
The method
- Paste the enquiry exactly as it arrived. The customer's email, the quantity, the drawing number and revision, the finish note, any delivery schedule. Do not tidy it up. The gaps in it are information.
- Ask ChatGPT to list what is missing before it prices anything. Untoleranced features, no material spec, a finish called out by trade name only, no packaging requirement, no first-article expectation. This is the same discipline as the job brief builder: pin the scope down before you put a number on it.
- Give it your cost inputs as numbers, not guesses. Stock price per pound from your last invoice, your scrap allowance, cycle time per part, your shop hourly rate, setup hours, tooling spend, the plater's per-piece and lot charges, freight estimates.
- Have it build the cost per part and the cost for the batch. Ask for the arithmetic shown line by line so you can see where a number came from.
- Apply margin on price, not markup on cost. State the percentage you want and which one it is. More on this below, because this is where money goes missing.
- Turn unknowns into an exclusion or a provisional sum. Never absorb them into the unit price.
- Set a validity period tied to your material quote. Then write the customer-facing quote from the finished build-up.
A worked example
This is an illustration with invented figures, not a rate card. Kestrel Machine Works is quoting Vance Conveyor Systems for 2,400 machined brackets in 6061-T6, two operations, clear anodize, called off in four shipments over ten weeks.
Internal cost build-up
- Material: 0.47 lb of bar per blank at $3.92 per lb is $1.84 per part. Add a 4% scrap allowance and it is $1.92 per part, so $4,608 for 2,400.
- Machine time: 3.4 minutes per part across both operations is 136 machine hours. At a shop rate of $78 per hour that is $10,608.
- Setup: 6 hours across the two operations at $78 is $468.
- Tooling: soft jaws and one form tool, $540.
- Outside processes: clear anodize at $0.95 per piece is $2,280, plus a $150 lot charge, so $2,430.
- Freight: $210 inbound on the bar stock, plus four outbound shipments at $95, so $590.
Total cost for the batch: $19,244. That is $8.02 per part.
Now the price. Kestrel wants 32% margin.
- 32% margin on price: $19,244 divided by 0.68 is $28,300. Unit price $11.79.
- 32% markup on cost: $19,244 times 1.32 is $25,402. Unit price $10.58.
Same percentage, two very different quotes. The markup version is $2,898 lighter, and the actual margin inside it is 24.2%, not 32%. To reach a 32% margin you need a 47.1% markup on cost, because 0.32 divided by 0.68 is 0.471. Ask ChatGPT to state which basis it used and to show the division, every time. If it says "32% applied" and nothing else, make it show the working.
The exclusions. The drawing has a 12 mm slot with no tolerance called out, and the finish note says only "anodize". Kestrel quotes clear anodize to the general commercial spec and writes:
- Excluded: full dimensional inspection report. Available at $340 for the lot if required.
- Provisional sum: $1,150 if hard-coat anodize is specified instead of clear. To be confirmed on receipt of the finish spec.
- Noted: the 12 mm slot is untoleranced on revision C. Quoted to a general tolerance of plus or minus 0.13 mm. A tighter requirement changes the cycle time and the price.
Validity. Kestrel's bar stock was quoted on 15 September and holds for 14 days, so the quote says: price valid 14 days from the date of this quote, subject to confirmation of metal price at order.
The prompt
Paste this into ChatGPT and replace the figures with yours.
I run a 9-person machine shop. A customer wants 2,400 machined brackets, 6061-T6, two ops, clear anodize, drawing rev C, called off in four shipments over ten weeks. Their email is pasted below. First, list everything on the drawing or in the email that is missing or unclear and that I need to confirm before pricing. Do not price it yet. Then build an internal cost sheet from these numbers, showing the arithmetic on every line: material 0.47 lb per blank at $3.92/lb plus 4% scrap, cycle time 3.4 min/part, shop rate $78/hr, setup 6 hours, tooling $540, anodize $0.95/piece plus $150 lot charge, freight $210 in and 4 outbound shipments at $95. Give me total batch cost and cost per part. Then apply 32% margin on selling price, not markup on cost, and show the division. Keep the cost sheet separate from the customer quote. Then write the customer quote with unit price, total, lead time, inclusions, exclusions for the untoleranced slot and the unconfirmed anodize spec, 14-day validity subject to metal price, and net 30 terms. Flag anything you assumed.
What to check before you send
ChatGPT will do the arithmetic reliably if you give it clean inputs, and it will invent a plausible number if you do not. So read the build-up before you read the quote.
- Is the shop rate yours, this year? If you have not recalculated it since your last insurance renewal or machine payment, the whole quote is built on an old number.
- Is the scrap allowance on material only, or does it also cover the machine time you lose on a scrapped part? On a 136-hour job those are different amounts.
- Did the outside process lot charge get spread across 2,400 parts, or across one shipment? Four deliveries can mean four lot charges.
- Does the unit price still work at a lower quantity? If the customer comes back and orders 800, setup and tooling now sit on a third of the parts. Say on the quote that the price is for the stated quantity.
- Is every assumption listed? Ask ChatGPT to print its assumptions as a separate list. Anything on it that you cannot confirm becomes an exclusion or a provisional sum.
- Are the payment terms and the validity date actually in the document? They are the two things that get dropped when a quote is written in a hurry.
A last point on terms. If you are adding retention of title, late payment interest or anything about ownership of tooling, get the wording confirmed with your attorney once and then reuse it. ChatGPT can draft it, but it should not be the last person to read it.
Then hold the line
The quote is only half the margin. The other half is what happens when revision D arrives, or the customer asks for the slot held to a tenth, or the anodize spec comes back as hard-coat. Price the change, get it agreed in writing, and do not start the work on a phone call. The additional work approval skill exists for exactly that moment, and the quote and pricing builder will carry your cost build-up format from one enquiry to the next so you are not rebuilding it from memory every Friday afternoon.
Quote from the cost sheet. Keep the cost sheet to yourself. Say what you excluded. That is most of it.