Here are real-looking notes from a painting estimator, typed on a phone in a parking lot:
Office repaint for Mesa Dental, about 2,400 sq ft of floor. Walls and trim, 2 coats. Some patching where old shelves were. 6 doors. Has to be done over a weekend so they don’t close.
Turning that into a quote is tedious, not hard. Someone works out the wall area, applies the rates, adds the prep, adds the weekend premium, checks the minimum job, and types it up. It’s the kind of thing that sits in a to-do pile for three days while the customer gets two other bids.
It’s also exactly where people get burned by AI. Ask a chatbot “quote this job” and you’ll get a confident number. Ask again and you may get a different one. It can’t tell you where the number came from, because it didn’t come from anywhere: it was generated.
Two jobs, two owners
So we split quoting into two jobs.
Job one: read the notes. This is what AI is genuinely good at. It turns the messy paragraph into a structured scope:
- 2,400 sq ft of floor (and it notes that this is floor area, not wall area)
- walls and trim, 2 coats
- standard prep (some patching)
- 6 doors
- weekend work
It also writes down what it assumed and what it still needs to ask: trim footage isn’t given; should ceilings be included; which weekend, and what are the access hours? That list is often the most useful part. It’s the follow-up call your estimator would have made anyway.
Job two: price the scope. This is plain code reading the contractor’s own price book: rate per square foot per coat, the prep multiplier, door rate, weekend surcharge, minimum job, deposit. No AI involved. The same scope gives the same quote every time, down to the cent, and every line traces back to a rate the owner set.
In our demo, that whole round trip takes about six seconds. The estimator reviews it, answers the open questions, and sends it the same day.
Why this matters more than speed
- It’s auditable. When a customer asks why a line costs what it does, there’s an answer: the rate, times the quantity, plus the rule.
- It’s consistent. Two estimators with the same notes produce the same price. So does the same estimator on a Monday and on a Friday.
- It fails safely. If the notes are too vague to price (“repaint my kitchen cabinets and maybe the walls?”), the system says so and hands back the questions to ask. It doesn’t guess a number to look helpful.
- It can be checked before launch. For a real client we encode their actual pricing rules and back-test against their last 20 or so quotes. If our engine doesn’t land where their estimator did, we find out why before anyone relies on it.
The general rule
We use the same split everywhere: the AI handles language, the code handles anything that’s a fact or a commitment. Prices, bookings, totals, whether a text is allowed to go out. The AI reads and writes; it never decides what something costs.
If you’re looking at an AI quoting tool, ask to see the same notes quoted twice. If the numbers differ, the AI is doing the math.