Roofing Proposal Software: Adding AI-Written Scopes and Warranty Wording

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Roofing Proposal Software: Adding AI-Written Scopes and Warranty Wording.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Roofing Proposal Software: Adding AI-Written Scopes and Warranty Wording.

Keep your approved scope, exclusion, decking and warranty clauses in one ChatGPT or Claude project, give the AI each job's measurements and photo notes, and have it assemble the draft as plain text. Paste it into a text page of your Roofr template or your CRM's document template, then check it against your contract before sending.

Neither half is automatic. On the Roofr pages I read this month, proposals offer reusable templates, text or PDF pages, multi-option choices, change orders and e-signature, while the AI features it advertises, an AI Receptionist and an AI-built website, do other jobs. So the writing happens in a chat tool, and the proposal software stores and sends the result. One rule keeps that safe: the AI may arrange and fill in clauses you have already approved, and it never invents a new promise.

Follow me on Instagram@sagnikteaches

Where the AI step sits and where the finished text lives

Picture two places. The chat tool is the workshop: it holds your clause library and drafts the text for one job. The proposal software is the shop window: it holds the version the customer opens, signs and keeps. Nothing the AI writes counts until it has been pasted into the software and read the way the customer will read it.

Connect on LinkedInSagnik Bhattacharya

The software side needs only a few abilities, and Roofr has them. Its proposals page says a proposal can carry text or PDF pages alongside materials, images and cover pages, that templates can be reused, and that customers can choose between several options when they sign. Its help centre adds that every proposal ends with an e-signature, that in-line signatures or initials can be added for items such as payment schedules or terms and conditions, and that a change order can only be created from a proposal that has been won, stays linked to it and is logged on the job card. As of November 2026 the pricing page lists unlimited proposals and e-signatures from the Essentials plan ($249 a month, or $209 a month billed yearly) and ten trial proposals on the free Starter plan.

Subscribe on YouTube@sagnikteaches

If you use a different CRM, run a five-minute test before you build anything. Can it save a reusable block of text or a document template? Can it merge job fields into that text? Does the customer sign the pages, or only the total? A dummy proposal sent to your own phone answers all three. If the software can't hold free text, a PDF page attached to the proposal does the same job. The comparison of roofing CRMs and field service apps covers which kind of software to choose in the first place.

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

Build the clause library before you write a single scope

AI drafts well when it copies and badly when it invents, so give it something to copy. A clause library is one document holding the wording you have already decided on, with a version and date at the top ("Clause library v4, 12 November"). Upload it to a ChatGPT or Claude project (both offer Projects on their free plans; check the current limits) or to a Gemini Gem (becoming a skill from November 2026), and every job starts from the same words.

ClauseWhat it must pin downWho writes the first version
Scope stepsOrder of work from protection to cleanup, using the quantities from your reportYou; the AI tidies and orders
Materials lineProduct line, colour, underlayment, flashing, ventsPulled from your catalogue, never the AI
ExclusionsEverything a homeowner might assume is included but is notYou and the AI together (see below)
Decking and hidden conditionsAllowance, unit price per sheet, how damage is shown and approvedYou; an adviser reads it
Access and protectionParking, power and water, pets, plants, working hoursYou
Permits and inspectionsWho applies, who pays, who must be presentYou
Change ordersHow extra work is priced, approved and signedYou; an adviser reads it
Workmanship warrantyLength, start date, what is covered, what is not, how to claimYou and an adviser; the AI never edits it
Manufacturer warranty pointerNames the maker's own document and says who registers itYou
Precedence lineWhich document wins if the proposal and contract differYour adviser

Write each clause once, in plain language, in the voice you want customers to hear. The decking, change-order, precedence and warranty clauses are promises, so have a construction lawyer read the library once, and again whenever one of those clauses changes. The AI can help you find gaps by asking what a homeowner might misread, but it is not that second reader. The workmanship warranty tutorial covers which exclusions are worth drafting and what an adviser checks.

The job sheet: eight facts to hand the AI, not ask it to guess

Bad scopes often start with missing inputs. The AI fills any gap with something plausible, such as a ridge vent you aren't installing or a chimney it assumes you will reflash. Give it a job sheet with the same eight fields every time. The figures below are illustrative, for a typical shingle re-roof.

FieldIllustrative entryWhere it comes from
Roof area32 squares (3,200 sq ft), main pitch 6/12, 14 facetsMeasurement report
Existing roofOne layer of asphalt shingles on sheet deckingSite visit
EdgesEaves 142 ft, rakes 96 ftMeasurement report
Ridges, hips, valleysRidge 58 ft, hips 40 ft, valleys 36 ftMeasurement report
Penetrations3 plumbing vents, 2 box vents, 1 chimneyReport plus photos
Condition notesGranule loss on the south slope; soft area beside the chimney; no ridge vent todayYour photos and notes
Chosen systemArchitectural shingle, synthetic underlayment, ice and water membrane on the first 3 ft of eaves and in valleys, new aluminium drip edgeYour catalogue
Decisions agreedRemove both box vents and fit ridge vent; keep and re-seal the chimney counter-flashingThe conversation with the customer

The measurement fields come straight from the report; the takeoff tutorial shows how to turn that same report into squares, waste and a bundle count. Leave the customer's name, address and phone number off the sheet. A scope doesn't need them, and your proposal software already holds them.

Prompt one: the scope, a draft, and the lines that had to change

Save this as the project's standing instruction. The job sheet changes every time; the rules don't.

You are drafting the scope-of-work page of a roofing proposal for [COMPANY NAME].

Source rules
- Use only the attached Clause Library (note its version) and the Job Sheet below.
- If a fact is in neither, write [CHECK: what is missing]. Never guess, round, convert units or add allowances.

Format rules
- Plain text only: no asterisks, hash signs, tables or bold.
- Numbered steps, one action per step, 25 words or fewer each.
- Order: protect the property, tear-off, deck inspection, membrane and underlayment, edge metal, shingles, flashings and penetrations, ventilation, cleanup and disposal.

Content rules
- Do not add steps, inspections, services or promises that are not in the Clause Library or the Job Sheet.
- After the steps, paste the DECKING AND HIDDEN CONDITIONS, EXCLUSIONS and WORKMANSHIP WARRANTY blocks exactly as they appear in the library. Change only the words inside square brackets.
- In the warranty block never use: guarantee, guaranteed, lifetime, leak-proof, waterproof, never.
- End with the line: Clause library version: [VERSION].

JOB SHEET
[paste the eight fields]

A draft for the sheet above typically comes back like this (illustrative; the three fixed blocks would follow it). It reads well, which is the danger. The faults sit in the details.

SCOPE OF WORK
1. Protect plants, shrubs and the driveway edge with tarps along every eave before work starts.
2. Remove one layer of asphalt shingles, underlayment and old drip edge down to the deck on all slopes (32 squares).
3. Inspect the deck and the attic side of the deck for moisture. Replace damaged decking under the DECKING clause below.
4. Install ice and water membrane on the first 3 ft of the eaves and in all valleys (36 ft).
5. Install synthetic underlayment over the remaining deck.
6. Install new aluminium drip edge along 142 ft of eaves and 96 ft of rakes.
7. Install [PRODUCT LINE] shingles in [COLOUR] to the manufacturer's nailing instructions, with starter strip at eaves and rakes.
8. Replace all flashing, including the chimney flashing, and fit new boots to the 3 plumbing vents.
9. Remove both box vents, cover the openings and install ridge vent along the 58 ft ridge.
10. Cap the ridge and 40 ft of hips with matching cap shingles.
11. Remove debris from the roof and grounds and sweep the property with a magnetic roller.

Three lines had to change before it went near a customer.

  • Step 3 quietly added an attic moisture inspection. Nobody asked for it and nobody priced it, so it came out. This is scope creep by autocomplete, and it is a common fault.
  • Step 8 promised new chimney flashing. The sheet said the existing counter-flashing stays and gets re-sealed. A homeowner will hold you to the sentence in the proposal, not the one on your sheet.
  • Step 3 again pointed to "the DECKING clause", but the block is headed DECKING AND HIDDEN CONDITIONS. A cross-reference that matches no heading makes a customer wonder whether a page is missing.

Fixing these takes a few minutes; spotting them is the skill. The pattern repeats across jobs: the AI adds helpful duties and widens words like "all" and "every". That is why the prompt forbids new steps and why a person reads every line against the sheet. How to catch made-up figures in AI-drafted proposals goes further on checking.

Exclusions: the AI plays the homeowner, you write the clause

Asking an AI to "write exclusions" produces a generic list. A better question is what a homeowner would assume is covered, because an exclusion exists to close the gap between what you priced and what they imagined. Paste the finished scope into the same project and use this.

Read the scope above as a homeowner who has never had a roof replaced. List up to ten things I would reasonably assume are included but are not stated. For each one, quote the line in the scope that made me assume it. Do not write any exclusion clause yet.

On the sample scope, the answers came back along these lines (illustrative; it stopped at eight):

  1. Gutters, assumed to be cleaned or re-hung, because the scope mentions protecting the eaves.
  2. Rotten fascia or soffit boards, assumed to be replaced when the drip edge goes on.
  3. The chimney itself, assumed to be checked and repaired because boots and flashing appear nearby.
  4. Interior ceiling stains, assumed to be repaired because the soft area by the chimney suggests a known leak.
  5. A satellite dish or solar panels, assumed to be detached and refitted.
  6. Painting of vents and flashing so they match the shingles.
  7. Trimming branches that overhang the roof.
  8. A warranty on the re-used counter-flashing.

Now you write the clause, in your own words, turning each answer into a sentence you can stand behind:

EXCLUSIONS
This proposal does not include: gutter cleaning, removal or repair; replacement of fascia, soffit or trim boards other than those named above; repair of chimney masonry, crowns or caps; repair of interior ceilings, walls or contents; detaching and refitting satellite dishes or solar panels; painting of vents, flashing or trim; tree or branch work; replacement of the existing chimney counter-flashing, which will be re-used and re-sealed. If we find something that needs one of these, we will quote it separately and do it only on your written approval.

The same exercise fixes vague scope lines. Before: "Install new flashing." After: "Install new step flashing at the three roof-to-wall joins and new boots on the three plumbing vents. Chimney flashing is not replaced; the existing counter-flashing is re-used and re-sealed." The second version costs nothing extra to write, and it is the one that wins an argument at the end of the job.

The decking clause: an allowance, a unit price and a photo

Rot is often invisible from above until the shingles come off, so the proposal has to turn a surprise into arithmetic. A sound decking clause states how many sheets the price includes, what each extra sheet costs, how the customer sees the damage, and how they approve it. Below is a clause with the variables left in square brackets (illustrative; your adviser should read yours).

DECKING AND HIDDEN CONDITIONS
The price includes replacement of up to [4] sheets (4 ft by 8 ft) of damaged or rotted roof decking. Each additional sheet is [$95], supplied and fitted. Before we replace an additional sheet we will photograph it, send you the photo and ask for your approval by [text message or signed change order]. Work on the affected area pauses until we have it. If you decline, [DECLINE CONSEQUENCE, agreed with your adviser].

Now the sum, because this is where proposals go wrong. A 32-square roof is 3,200 sq ft, and a 4 by 8 sheet covers 32 sq ft, so the whole deck is about 100 sheets. An allowance of four sheets is 4 per cent of the deck, a reasonable bet on a roof with a soft area by the chimney. Say the crew finds 11 bad sheets. The seven beyond the allowance cost 7 sheets at $95, which is $665, and that takes a $14,800 job to $15,465. Explain that to the homeowner on day one and it is a line in the contract. Explain it on day three and it is a dispute.

Give the AI the three variables and ask it to fill the clause, then do the sum yourself. Chat tools can slip on arithmetic and on small wording such as "up to" against "at least", and either slip changes what you have promised. Roofr's change orders suit the second half of the clause: they can only be raised from a won proposal, they carry its details across, and they land in the job's activity log, so the photo, the approval and the extra $665 sit in one place. The worked change order for rotten decking shows the paperwork itself.

Photos matter as much as the wording. Take one wide shot and one close shot per damaged area before covering it, and note the sheet count on the photo. Roofr can pull images from CompanyCam into a proposal and add notes to them, which keeps the evidence next to the clause it supports.

Warranty wording: what the AI may fill in and what stays fixed

Two warranties are in play, and customers blur them. Yours covers your workmanship for a period you choose. The manufacturer's covers the product under its own document, with its own conditions and registration steps. The proposal should name the maker's document and point to it. It should not paraphrase it, because a paraphrase becomes your promise.

Treat your own clause as fixed text. The AI can fill the job-specific fields, which are the company name, the roof sections covered and the product line, and it can add one sentence pointing to the manufacturer's document. It must not rewrite the coverage list. This is the structure to show an adviser, with the numbers left as placeholders:

WORKMANSHIP WARRANTY
[COMPANY NAME] warrants its workmanship on [ROOF SECTIONS COVERED] against defects in installation for [5] years from the completion date shown on the final invoice. We will correct a defect in our workmanship, including the labour and materials needed to do so. This warranty does not cover damage from storms, fallen branches or other events outside our control; foot traffic; changes made to the roof by anyone else; work by other trades on or through the roof; standing water caused by the existing structure or drainage; or lack of maintenance. Product defects are covered only by the manufacturer's warranty, supplied separately. To make a claim, tell us in writing within [30] days of noticing the problem and allow us access to inspect the roof.

Rewrites go wrong in a predictable way. Ask a chat tool to "make this friendlier" and it may turn "defects in installation" into "leaks", or "[5] years" into "a 5-year warranty on your whole roof". Both read better and both promise more than you meant. The ban list in the prompt (guarantee, lifetime, leak-proof, waterproof, never) catches the most obvious cases, and a number audit catches the rest.

List every number in the draft below (quantities, dollars, years, days, percentages) as a table: number, the sentence it appears in, and its source (a Job Sheet field, a Clause Library clause, or NONE). Flag every NONE.

Anything flagged NONE is a number the AI made up or changed. In the warranty block, one flagged number is enough to stop the proposal until you have found out why.

Making the proposal, the contract and the warranty page agree

A proposal that says one thing while the contract says another is worse than no proposal, because each side reads the version that suits it. The customer signs both and relies on both, so they need to match on ten points. This prompt compares them without trying to rewrite anything:

I will paste three documents: PROPOSAL, CONTRACT, WARRANTY PAGE. For each of these ten points, quote the exact words from each document and mark MATCH, CONFLICT or MISSING: 1 scope items, 2 materials, 3 total price and payment schedule, 4 permit responsibility, 5 decking allowance and unit price, 6 exclusions, 7 workmanship warranty length and start date, 8 manufacturer warranty reference, 9 start, completion and weather wording, 10 which document wins if they differ. Do not suggest legal fixes. Only report.

A typical report on a template that has drifted looks like this (illustrative):

PointProposal saysContract saysResult
Permit"We obtain the permit""Owner is responsible for permits"CONFLICT
Workmanship warranty5 years from completion2 years from signingCONFLICT
Decking$95 per sheet beyond 4 sheets"At the contractor's current rates"CONFLICT
ExclusionsEight listedNot mentionedMISSING in contract
PrecedenceNot mentioned"This contract is the entire agreement"MISSING: proposal not made part of the contract

The last row matters most. If a contract calls itself the entire agreement and never mentions the signed proposal, the scope and exclusions you worked on may not be part of it. How to fix that is a question for your adviser, who will also decide which document wins when they differ. What you can do alone is run the check and take the answers with you. The roofing contract tutorial lists what a lawyer looks at in the contract itself.

When the check finds a conflict, repair the clause library first, then the template, then the contract. Fixing a single proposal and leaving the library alone means the same conflict returns on the next job.

Putting the text into Roofr or your CRM

Once the wording is settled, loading it is quick. These steps follow Roofr's help centre; in another CRM, use whatever its template editor calls the same things.

  1. Make one template per job type: shingle re-roof, low-slope, metal and repair. Roofr's template steps are Create template, Edit option(s), Adjust estimate settings, Add proposal sections and Edit cover. Items must already exist in your catalogue before a template can use them, so add the materials lines first.
  2. Put the fixed pages (exclusions, decking, warranty, terms) into the template once. Open the "Add proposal sections" step to see which section types your account offers.
  3. For each job, create the proposal from the template. Roofr combines the roof measurements from the report with the material amounts. Then paste the scope text into the page that changes per job.
  4. Paste as plain text and preview the proposal as the customer. Stray asterisks or hash signs mean the AI ignored the format rule; odd line breaks mean it wrapped lines.
  5. Set an expiry date. Roofr shows it on the cover page, and after it passes the link tells the customer the proposal has expired. Pick a date that matches how long your material and decking prices hold.
  6. Check whether you can place an initials box beside the exclusions and the decking text. Roofr's help centre describes in-line signatures or initials for items such as payment schedules or terms and conditions. A customer who has initialled a line has a harder time saying they never saw it.
  7. If the job type is new, use "save as new" from the finished proposal to turn it into a template instead of rebuilding it.

Stamp the library version at the foot of the scope page ("Clause library v4"). When a customer asks a month later what the proposal said about permits, the stamp tells you which wording they received. Never edit a signed proposal to match a newer library; raise a change order, and update the library for the next customer.

The ten-minute check before a proposal goes out

  1. Number audit. Run the number prompt above. Every number needs a source.
  2. Word audit. Search the text for lifetime, guarantee, guaranteed, leak-proof, waterproof and never. Delete or justify each hit.
  3. Fixed blocks unchanged. Compare the decking, exclusions and warranty blocks with the library using your word processor's compare tool. The only differences should be the bracketed fields.
  4. Scope against materials. Every product named in the scope appears in the proposal's line items under the same name.
  5. Cross-references. Each "see the X clause" points to a heading that exists.
  6. Photos. Every condition note on the job sheet has a photo attached to the proposal or the job record.
  7. Phone preview. Open the proposal on a phone, because many customers will.
  8. Read the exclusions aloud. If a line would embarrass you to explain at the kitchen table, rewrite it.

Budget an afternoon to build the library and the first template. After that, my estimate for the AI step plus these checks is around ten minutes per proposal; your own timings will differ, so note them for the first five jobs. Keep a log of every question customers ask about a proposal. Each repeated question points to a missing line in the exclusions or the scope, and the library improves from the log faster than from anything the AI suggests.

Flat, metal and repair jobs need their own clause blocks

One scope template will not fit every roof. Keep a separate block for each type in the library and tell the AI which one to use.

Low-slope roofs need the membrane system and thickness stated from the product data sheet, a drainage assumption ("existing drains and scuppers are re-used and not guaranteed to run clear"), and an exclusion for standing water that comes from the roof's slope rather than from your work. Metal roofs need the panel profile and fastening method named, and an exclusion for cosmetic waviness in flat panel areas, which is often called oil canning. Repairs need the opposite approach to scope: name the exact area, state that nothing else was inspected, and say the warranty covers the repair only, not the rest of the roof.

The same rules apply to each block. Fixed wording lives in the library, the AI fills the fields, and a person reads every line against the job sheet. If you would rather map this against your own software and templates with someone, that is what my AI implementation consultation covers; you can reach it through the contact page.

Questions roofers ask before pasting AI text into a proposal

Does Roofr write proposal scopes with AI?

On the Roofr proposals page and help articles I read for this tutorial, proposals list templates, text or PDF pages, options, change orders and e-signature, with no AI writing tool. Its advertised AI offerings, an AI Receptionist and an AI-built website, do other jobs. Check the feature list again before you pay for anything, because vendors add tools often. Drafting in ChatGPT or Claude and pasting the text in works today.

Can AI write my warranty terms from scratch?

It can produce a first draft, but you shouldn't send one unread. A warranty is a promise you are bound by, and a word such as leaks in place of defects changes what you owe. Write or adopt the clause with a construction lawyer, store it as fixed text, and let the AI fill only the job-specific fields, such as the company name and the roof sections covered.

Should I paste customer names and addresses into the chat?

You don't need to. A scope needs measurements, materials and site notes, not who owns the house. Use placeholders such as [customer], let your proposal software supply the names and addresses, and check your chat tool's data settings and plan terms before pasting anything personal. Photos can carry location data, so describe what they show instead of uploading them.

How often should I re-run the contract alignment check?

Run it when you build a new template and whenever you change a clause in the library, not on every job. Paste the current template text and the matching contract clauses each time, and file the result with the library version. If a conflict turns up, fix the library first, then the template, then the contract, so the three stop drifting apart.

Further reads

Sources: Roofr proposals page, pricing page and help-centre articles on proposals, templates, customising and change orders (read November 2026); OpenAI and Anthropic documentation on Projects.

Want your proposal wording set up properly?

On a 1:1 call we'll look at how your proposals are written today, build the clause library and prompts that fit your software, and decide which checks are worth keeping.

Book a 1:1 call with me