General Contractor AI: Turn Site Messages Into Change Orders

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for General Contractor AI: Turn Site Messages Into Change Orders.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for General Contractor AI: Turn Site Messages Into Change Orders.

Paste the text thread, site notes and photos into ChatGPT or Claude together with your contract's change clause and your own rate sheet, then ask for a change order in a fixed layout: description, reason, priced lines from your rates, schedule effect and an approval line. Check every number yourself before anything goes to the client for signature.

A text thread proves the client asked. It doesn't give the price, the schedule effect or the signature your contract probably requires. Your contract's change clause governs how changes must be requested, priced and approved, so the AI works inside that clause: it drafts, you review, and prices come from your rate sheet, never from the model's memory.

Follow me on Instagram@sagnikteaches

What a message thread leaves out

Site messages are written for speed, between people who share a room and a plan. A change order is written for a stranger, possibly a lawyer, reading it a year later. The gap between the two is what the AI has to close, and it can only close what it is given:

Connect on LinkedInSagnik Bhattacharya
What the message saysWhat the change order needs
"Can we move the sink to the island?"Exact scope: what moves, what stays, who does the work
"Sure, whatever it costs"A price built from your rate sheet, with the markup your contract allows
"Hope that doesn't hold us up"The schedule effect in working days, and any knock-on for inspections or deliveries
A thumbs-up reactionAn approval from someone the contract authorises, in the form it requires
"Also the lights, while you're there"A separate priced line for each item, so any one can be removed

The cost of leaving that gap open is easy to underestimate. Take a contractor who absorbs five small changes a job at three hours each, with labour costing $62 an hour. That is $930 a job before any margin, and across 12 jobs a year it is $11,160 of work nobody was asked to pay for. These are example figures. Count the changes on your last three jobs and cost them at your own hourly rate before deciding whether a routine is worth setting up.

Subscribe on YouTube@sagnikteaches

Read the contract's change clause before drafting anything

Contract terms govern, so the first job is to extract the rules the draft must follow and keep them in one place. For a typical home-improvement contract (the wording below is illustrative), the sheet looks like this:

RuleWhat the example contract saysWhy the AI needs it
Who may request or approveThe client or a named representative, in writingStops drafts going to the wrong signer
Required formA written change order, signed before work starts, except in emergenciesSets the "do not start" line
Pricing basisCost plus 15% overhead and profit on additions; credits at cost with no markupThe most common arithmetic slip
Rate sourceRates in the rate sheet are cost rates; markup goes on topPrevents marking up twice
Response periodThe client has two business days to approveSets the chase date
Schedule effectExtension in working days, stated on the change orderFills the schedule line
EmergenciesWork to protect people or property may start first, with a record sent the next dayNeeded for the emergency case below

Ask the model to build that table from your own clause rather than typing it by hand:

Read the change clause below and return a table with these rows: who may request or approve a change; required form; pricing method and markup; how credits are priced; response period; schedule extension rule; emergency exception; anything unclear or missing.
For each row quote the exact words from the clause, then give a one-line plain reading. Do not interpret beyond the text. If the clause is silent on a row, write SILENT.
[Paste the change clause here]

Compare each quoted line with the contract yourself. The table is a working note, and the contract is what governs. A row marked SILENT, or wording that reads two ways, is a question for a lawyer, not a gap for the model to fill with a plausible guess. Keep the finished table in your project so every change order starts from the same rules.

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

Gathering messages, photos and the rate sheet

Collect only what concerns the change: the relevant messages, the site note, the photos and the rate lines. Replace names, addresses and phone numbers with placeholders such as [client] and [address] before pasting. Copying text is cleaner than screenshots, but screenshots are fine when the thread holds images. Claude accepts up to 20 files in a chat, including JPEG, PNG, GIF and WebP images, and ChatGPT takes PNG, JPEG or non-animated GIF images of up to 20 MB apiece (both checked in November 2026; limits change, so look again before relying on them). A foreman's voice note can become a site note through your phone's dictation or a transcription app; the voice notes to job sheets tutorial covers that step.

Give each photo a one-line caption saying where, what and when ("Photo 1: former dishwasher space, soft subfloor, Tuesday"). Without captions the model guesses what it is looking at, and a guess inside a change order is a risk you don't need.

The rate sheet is a plain table of code, item, unit and cost rate, kept in a spreadsheet. Claude reads CSV uploads (and XLSX once code execution and file creation is switched on in its settings), and you can paste the rows into ChatGPT. Give the model the whole sheet, not an excerpt, because a missing line is where it starts inventing a number. An illustrative extract:

CodeItemUnitCost rate
CARP-01Carpenter labourhour$58.00
LAB-01Labourerhour$38.00
MAT-PLY343/4 in plywood, 4 x 8 sheetsheet$62.00
MAT-FIXFixings and adhesive, per job lotlot$18.00
DISP-01Disposal, small loadload$25.00

The instruction that matters most goes with it: use only these codes, and if an item isn't on the sheet, write TBC and ask for a quote. To build the sheet from supplier quotes and keep it current, see building a supplier rate sheet for estimating.

A kitchen remodel, four messages and one soft subfloor

The contractor in this example is partway through a $48,500 kitchen remodel under the contract rules in the table above, with two small changes already approved (CO-01 and CO-02, $308.50 between them). Four messages arrive over three days:

  • Monday, 4.12 p.m., client: "Can we add under-cabinet lighting along the sink wall? Warm white."
  • Tuesday, foreman's site note: "Lifted the old dishwasher space. Subfloor soft, about 3 x 4 ft. Joists look sound. Photos 1 and 2."
  • Tuesday, 6.30 p.m., client: "Fix the floor, obviously. And skip the crown moulding on the upper cabinets, we've decided against it."
  • Wednesday, 9.05 a.m., electrician (subcontractor): "Under-cabinet strip, three runs plus a switch, $380 all in."

One standing instruction does the drafting. It lives in the project, and the messages, photo captions and rate sheet go in each time:

You draft change orders for a general contractor. Use the change rules table and the rate sheet in this project, and the messages and photo captions I paste.
1. One numbered line per change. For each give: description, reason (client request, unforeseen condition, required change or substitution) and the pricing lines.
2. Price only from rate-sheet codes or a subcontractor quote I have pasted. If a price is missing, write TBC and list the question to ask. Never use a price from memory.
3. Apply the markup and credit rules from the change rules table. Show subtotal, markup, additions total, credits, net change, the contract sum before this change (original sum plus approved change orders) and the revised contract sum.
4. State the schedule effect in working days and say what you assumed.
5. If a message is vague or two messages conflict, do not price it. List the questions instead.
6. End with an approval block that follows the contract: who signs, the response period and the do-not-start line.
7. List every assumption at the bottom.

The first draft needed three corrections before it was fit to send as CO-03. This table is the corrected version (illustrative figures throughout):

LineDetailAmount
1. Replace damaged subfloor, about 12 sq ft, former dishwasher spaceCarpenter 5.0 h x $58 = $290.00; plywood 1 sheet = $62.00; fixings $18.00; disposal $25.00$395.00
2. Under-cabinet lighting, three runs plus switchElectrician's quote, materials included$380.00
Additions subtotal$395.00 + $380.00$775.00
Markup, 15%$775.00 x 0.15$116.25
Additions total$891.25
3. Credit: omit crown moulding on upper cabinetsMaterials $210.00; labour 3.0 h x $58 = $174.00; no markup on credits-$384.00
Net change$891.25 - $384.00$507.25
Contract sum before this change$48,500.00 original + $308.50 approved in CO-01 and CO-02$48,808.50
Revised contract sum$48,808.50 + $507.25$49,315.75

Schedule effect: one working day, with the subfloor done first and the electrician's visit after it. The three corrections were these:

  1. It marked up the credit. The draft applied 15% to the $384 credit, which gave $441.60 and a net change of $449.65, short of the correct $507.25 by $57.60. The change rules say credits are at cost, so the fix was to point the model at that row and ask it to redo the totals.
  2. It priced the plywood from memory. The pasted rate sheet had lost its plywood row, so the model used $48 instead of $62. With the full sheet pasted it used the sheet's figure. A missing row doesn't produce an error message. It produces a number.
  3. It overstated the scope. The draft said "full replacement of kitchen subfloor", but the site note describes a 3 x 4 ft patch. The line was rewritten to the measured 12 sq ft, with a sentence that if the damaged area is larger once exposed, a further change order follows.

The draft's assumptions list, at the bottom, is worth reading closely: it said the subfloor repair was limited to 12 sq ft, that the electrician's price included materials and the switch, and that no work in the sink area would start before signature. Each is a statement for you to confirm or correct. In this illustration the contractor needed about ten minutes for the change order, including those corrections, against 30 to 40 minutes writing it by hand. Time your own first three; if the saving is smaller, the routine still earns its place through the consistency of the paperwork. For the pricing logic in more depth, read how small building firms price variations.

Seven more messages, seven different drafts

Not every message should become a priced line. Some should become questions, some a notice, and one should become a record of work already done. Here is how the standing instruction should treat each:

Message or noteThe trapWhat the draft should do
Client: "Can you make the shower niche bigger?"No size, position or finish givenPrice nothing; list the questions to ask the client
Foreman's photo of old wiring behind a wall that was meant to stay closedUnforeseen condition; the price can't be known until it is exposedDraft a notice that work stops in that area, and propose a provisional allowance or measure-on-exposure pricing if the contract allows, flagged for your decision
Inspector's note requires an extra smoke alarm circuitRequired change; who pays depends on the contractLabel the reason "required by inspection", attach the note, price from the rate sheet and quote the clause that decides who pays
Client picks tile A on Monday and tile B on WednesdayConflicting instructionsShow both in a dated decision log, price nothing, ask the client to confirm the final choice in one sentence
Supplier: chosen vanity delayed six weeks; client picks a substitutePrice and schedule effects in both directionsDraft a substitution: credit for the deleted item, addition for the new one, schedule effect and the client's written choice
Plumber's call at 6 p.m.: burst pipe, repaired that nightEmergency work started before approvalDraft an emergency work record (what happened, what was done, who attended, cost) and send it the next morning for signature, as the contract's emergency exception allows
Subcontractor's quote lists exclusions: scaffold and disposalThe model copies the headline price and skips the small printList each exclusion as its own line or note, and ask the subcontractor to confirm before you send

The conflicting-instructions case is where AI is most useful as a clerk. Ask it to turn the thread into a decision log, a short table you keep with the project file:

DateFromInstructionStatus
MondayClientTile A, matt white, 4 x 12Superseded
WednesdayClientTile B, grey, 3 x 6Latest; awaiting confirmation
WednesdayYouAsked client to confirm tile B in writingOpen

Nothing gets priced until the status column shows a final instruction. That one habit prevents the most expensive kind of change order, the one for work the client never meant to order. For worked examples from single trades, see the plumbing change orders tutorial.

The review pass before anything reaches the client

The AI drafts and you review, so make the review a fixed routine of about ten minutes rather than a glance. Nine checks, in this order:

  1. Scope: does each line match what the messages and photos show, and nothing more?
  2. Source: can every price be traced to a rate-sheet code or a pasted subcontractor quote, and is every TBC resolved or removed?
  3. Markup: applied as the contract says, and kept off credits unless the contract says otherwise?
  4. Arithmetic: redone in your own spreadsheet, not only in the chat.
  5. Schedule: stated in working days, with the assumption visible?
  6. Exclusions: any subcontractor exclusions listed as lines or notes?
  7. Identity: project, change order number, date and parties correct?
  8. Approval: signer, form and response period matching the change clause?
  9. Overlap: does an earlier change order already cover any line?

A second-pass prompt helps with the arithmetic: "Recompute every total in this change order from the lines shown, and list any figure that differs from mine." It catches slips quickly, but the check that counts is the one in your spreadsheet, because a model can repeat a slip while confirming it.

Getting it signed, chased and logged

Send the finished change order as a PDF through your e-signature tool or, if you run construction software, from the software itself. JobTread, for example, builds change order cost items from the job budget, lets customers approve digitally and tracks approvals back to the budget, so there the AI's job is the wording rather than the numbers; its AI Writing Assistant drafts and rewrites project communications. Whichever route you use, work in the changed area waits for the signature unless the contract's emergency exception applies. A text thread isn't the approval, and a lawyer can tell you whether a text or email reply satisfies your contract's wording.

When the response period runs out, chase with a short message that names the number, the amount and what is waiting:

Hi [first name], following up on change order CO-03 sent on Wednesday (net +$507.25, one extra working day). The floor repair is waiting on your signature before we can close up the area, and the contract asks for a reply within two business days. Can you approve it today? [Your name]

Then log it. A change order log is a spreadsheet with one row per change, and it answers the client's favourite question, "where are we now?", in one glance:

CORaisedDescriptionNet amountDaysStatus
CO-01Week 2Move socket to island wall$212.500Approved
CO-02Week 3Upgrade tap to client's choice$96.000Approved
CO-03Week 4Subfloor patch, lighting, crown credit$507.251Awaiting signature

Approved changes total $308.50, and CO-03 would bring the contract to $48,500 + $815.75 = $49,315.75 with one extra day. Ask the project to turn the log into three lines for each weekly client update: approved total, awaiting signature, and schedule days added. The construction final account tutorial shows where those lines end up when the job closes.

Setting it up in an hour, and where it goes wrong

Set the routine up once, in a ChatGPT or Claude project named for change orders rather than for any one client:

  1. Add the change rules table, the full rate sheet and a one-page change order layout. ChatGPT projects hold a limited number of files depending on the plan (five on Free, 25 on Go and Plus), so keep those three as three files.
  2. Paste the standing instruction from the worked example as the project's instruction.
  3. For each job, open a new chat inside the project and paste only that job's messages, captions and quotes.
  4. Test with three past changes where you already know the right answer, and compare every figure.

Expect about an hour for the first setup, and a few minutes of tidying the rate sheet whenever your costs move. Then watch for the failure patterns below, each of which has a way to spot it:

  • Prices from memory. Any line without a rate code or a quote reference is suspect. The TBC rule is the cure.
  • Double markup. If the rate sheet holds cost rates, the draft should mark up once. Test it with a credit, as the worked example did.
  • Loose scope wording. Phrases such as "all necessary work" or "full replacement" should trigger a check against the message and the photo captions.
  • The wrong job's messages. A new chat per job, and the project name on every draft, keeps threads apart.
  • Client data in the tool. Placeholders for names and addresses, and a look at the plan's data settings. On a personal plan, turn off the setting that lets the provider use your chats for training.
  • Photos misread. Treat the model's description of a photo as a hint, and let your own caption win.
  • Starting before signature. The log's status column should show Approved before anyone is told to proceed, unless the emergency exception applies.

Used this way the AI is a fast, tidy clerk with no authority: it assembles what you have, applies your rules and flags what it doesn't know. The authority stays with the contract, your rate sheet and your signature. If you'd like help fitting the routine to your own contract and job software, my AI implementation consultation is built for that.

Questions contractors ask about AI-drafted change orders

Is a client's text enough to start the work?

Treat it as evidence of the request, not as approval. Most contracts set out how changes must be approved, often in writing and signed before work starts. Check your change clause, and ask a lawyer whether a text or email reply meets it. Emergency work is the usual exception, and it should be recorded and signed afterwards as the contract allows.

Can AI price the change order?

It can multiply and add, but only from the rates you give it. Put your rate sheet and markup rules in the project, tell the model to use only those lines and to mark anything else TBC, then check every total yourself. A price from the model's memory is a guess, however confident it sounds.

What if the client keeps adding small changes?

Log each one the day it is asked, even if it seems minor, and batch the written change orders weekly so no single request drags. Some contracts set a threshold below which an email approval is enough, so check yours. The running total also gives you something concrete to show the client in the weekly update.

Should I paste the whole text thread into AI?

Paste only the messages about the change, with names, addresses and phone numbers replaced by placeholders. Check the tool's data settings first: ChatGPT Business and Claude Team leave your content out of model training by default, and personal plans let you switch training off in the privacy settings.

Further reads

Sources: JobTread change order and AI feature pages, OpenAI and Anthropic help pages on image inputs and projects. Contract wording, rates and prices in the examples are illustrative.

Want change orders drafted from site messages in minutes?

On a 1:1 call we'll set up a change-order project around your contract's change clause and your rate sheet, test it on three real past changes, and agree who reviews what.

Book a 1:1 call with me