Roofing Takeoff With AI: Squares, Waste and Bundles From a Report

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Roofing Takeoff With AI: Squares, Waste and Bundles From a Report.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Roofing Takeoff With AI: Squares, Waste and Bundles From a Report.

Copy the report's totals into a sheet, let AI map each field to a material line and write the formulas, and let the sheet do the arithmetic: squares are area divided by 100, add waste for the roof's complexity, multiply by the bundles per square, round up. Then run two cross-checks before the supplier sees the order.

Vendors talk about accuracy, and it is worth reading what they claim. Roofr's measurements page, for example, carries the heading "Because accuracy matters" and describes a multi-check system, up-to-date imagery and a calculation formula, but it publishes no accuracy percentage. That speaks to the measurement. It says nothing about your waste decision, your unit conversions or a chat tool's habit of slipping on sums, which is where orders go wrong. Roof area is the vendor's number; the order is yours.

Follow me on Instagram@sagnikteaches

What the report gives you, and what it leaves for you to find

Roof measurement reports typically include a total roof area, a predominant pitch, a facet count, running lengths for eaves, rakes, ridges, hips and valleys, flashing lengths, and sometimes a suggested waste figure. Labels differ from vendor to vendor, so read yours before you trust a prompt written for someone else's. The tutorial on quoting from satellite images explains how those measurements are produced, and the five-roof accuracy test shows how far to trust them.

Connect on LinkedInSagnik Bhattacharya

Three things on a Roofr report change what you should do next. First, the PDF is not the whole report. Roofr's help centre says the dashboard shows detailed, un-rounded measurements that may not be visible on the PDF, and that some values may not appear on the PDF's length page, even though every measurement is included in the totals. Take your numbers from the dashboard where you can, and add them up the same way every time.

Subscribe on YouTube@sagnikteaches

Second, check for pitch. Roofr will issue a report without pitch when the data isn't available. The report is labelled "No Pitch", certain measurements are missing, and the help centre warns that the resulting square footage will not be 100% accurate. You can add the pitch yourself, but until you have, treat the report as a draft. Third, a report is cheap, so a doubtful roof can be re-measured: the pricing page I read in November 2026 lists $13 a report on the paid plans and $19 on the free Starter plan.

The report can't see what you saw on site. Add these from your notes and photos before you order:

  • Plumbing vents, pipe boots, box vents, chimneys and skylights, which a report rarely counts.
  • Extensions or porches built since the imagery was taken.
  • Tree cover that hides part of a slope from the aerial image.
  • The number of existing layers, which affects disposal more than materials.
  • Decking you expect to replace, which belongs in the proposal's decking clause, not the shingle count. The change order for rotten decking deals with what happens when you find more.
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

Field to material: which report line drives which order line

Most takeoff errors start with a field sent to the wrong line, such as ridge length driving the hip cap, or area driving the drip edge. A mapping table fixes the logic once, so the AI and the sheet follow the same rules every time.

Report fieldDrives these order linesOrdered in
Total areaShingles, underlayment, nailsBundles, rolls, boxes
EavesDrip edge, starter, ice and water membranePieces, bundles, rolls
RakesDrip edge, starterPieces, bundles
RidgesRidge cap, ridge ventBundles, lengths
HipsHip capBundles
ValleysValley metal or membraneLengths, rolls
Step and wall flashing lengthsStep flashing, counter-flashingPieces, boxes
Pitch and facet countArea check and the waste judgementNothing; they inform other lines
Not on the report: vents, boots, chimneys, skylightsBoots, vents, flashing kitsEach, from your site notes

If you quote in Roofr, the catalogue does part of this mapping: its help centre says an item can be mapped to square feet or squares, and that items imported from roofing systems arrive with a measurement, coverage and unit. The checks below still matter, because you should know what quantity to expect before the software tells you. The same report fields feed the scope text, as the proposal tutorial shows.

Prompt one: extract the fields and flag the gaps

Start by making the AI read, not calculate. Paste the text of the report, with the customer's name and address removed, and use this instruction.

Below is text copied from a roof measurement report. Return a table with three columns: field, value, unit, exactly as printed. Do not calculate, round or convert anything. If no pitch is printed, write NO PITCH. Then list any field a shingle takeoff needs that is missing from the text: total area, pitch, eaves, rakes, ridges, hips, valleys, step flashing. If two numbers could belong to the same field, show both and say which page each came from.

For the job used through the rest of this tutorial (illustrative), the answer looks like this:

FieldValueUnit
Total area3,240sq ft
Predominant pitch7/12rise over run
Facets16count
Ridges52ft
Hips64ft
Valleys48ft
Rakes118ft
Eaves164ft
Step flashing38ft

The AI's reading is the step most worth a human check, because PDFs built from tables sometimes hand over numbers in the wrong order. Compare three lines against the report yourself: the area, the eaves against the rakes, and the pitch. Swapped eaves and rakes are the sneakiest slip, since the totals of the two still look sensible.

The worked job: 3,240 square feet to 112 bundles

This is a hip roof with 16 facets, valleys and a wall to step-flash, re-covered in an architectural shingle. For the shingle itself the figures come from a manufacturer's data sheet: GAF's page for Timberline HDZ lists 3 bundles per square, 64 pieces per square, 256 nails per square and a 5 5/8 inch exposure. Every other coverage figure below (bundle lengths, roll sizes) is an assumption I made for the example, so swap in the numbers on your own products' data sheets.

LineWorkingResult
Net squares3,240 sq ft ÷ 10032.4 squares
Squares to order, 15% waste32.4 × 1.1537.26 squares
Shingle bundles37.26 × 3 = 111.78, rounded up112 bundles
Starter (assumed 120 ft a bundle)eaves 164 + rakes 118 = 282 ft; 282 ÷ 120 = 2.353 bundles
Hip and ridge cap (assumed 25 ft a bundle, 10% extra)ridge 52 + hips 64 = 116 ft; × 1.10 = 127.6; ÷ 25 = 5.16 bundles
Ice and water (assumed 200 sq ft a roll, 10% laps)eaves 164 ft × 3 ft + valleys 48 ft × 3 ft = 636 sq ft; × 1.10 = 699.6; ÷ 200 = 3.54 rolls
Synthetic underlayment (assumed 1,000 sq ft a roll, 10% laps)3,240 − 636 = 2,604 sq ft; × 1.10 = 2,864.4; ÷ 1,000 = 2.863 rolls
Drip edge (10 ft pieces, 5% laps)282 ft × 1.05 = 296.1; ÷ 10 = 29.630 pieces
Step flashing (one piece per course)38 ft × 12 ÷ 5.625 in exposure = 81.0782 pieces

The chain to notice is the first three lines. Area becomes squares, squares gain waste, squares become bundles, and the bundle count is the only step that rounds up. Rounding earlier, say by calling 37.26 squares "37", compounds with the later steps and can drop an order a bundle or two short. Counts such as boots, vents and the chimney kit come from your site notes rather than the report, so they are not in this table.

Choosing the waste figure for this roof, not for roofs in general

I looked for an authoritative waste table and didn't find one. The figures below come from contractor guides and training sites, they differ from source to source, and none is a manufacturer specification. Treat them as a starting range.

RoofCommonly quoted wasteWhy it runs higher
Simple gable, few penetrationsAbout 10%, with a few sources lowerFew cuts, few offcuts
Hip roof12% to 15%Diagonal cuts at each hip leave offcuts that rarely get reused
Cut-up roof: dormers, many valleys, chimneys, skylights15% to 20%, sometimes moreEvery valley, dormer and penetration adds cuts

If your report prints a suggested waste percentage, use it as one input. Roofr's help centre, for instance, says a proposal line item can take the recommended waste from the report. Then apply your own judgement. The worked roof has 16 facets, 64 feet of hips and 48 feet of valleys, so 15% is a fair midpoint, and the choice matters less than people fear. At 12% the order is 109 bundles, at 15% it is 112 and at 20% it is 117, a spread of eight bundles. Those eight bundles are the cost of being wrong about waste, and they are smaller than the cost of a wrong area or a doubled waste factor.

Waste isn't only offcuts. It also covers damaged bundles, wind and weather on a pallet left out overnight, and the crew's habits. That is why your own history beats any table, a point the last section turns into a routine.

Build the sheet so the arithmetic isn't the AI's

Ask the AI to write the formulas, not the answers. A formula in a cell gives the same result every time and can be inspected, while a number typed into a chat reply can't. The prompt is short, and the same instruction works for Excel and Google Sheets:

I have these inputs in a sheet: total area in B2, waste as a decimal in B3, bundles per square in B4, eaves in B10, rakes in B11, ridges in B12, hips in B13. Write one formula per line, and put each in the cell I name, for: net squares (B5), squares to order (B6), shingle bundles rounded up (B7), effective waste (B8), bundles per net square (B9), starter bundles at [COVERAGE] feet a bundle rounded up, and cap bundles at [COVERAGE] feet a bundle with [EXTRA] extra, rounded up. Give me the formulas only. Do not calculate any results.

What comes back should look like this (check each cell reference against your layout before you trust it):

B5  Net squares:              =B2/100
B6  Squares to order:         =B5*(1+B3)
B7  Shingle bundles:          =ROUNDUP(B6*B4,0)
B8  Effective waste:          =B7/B4/B5-1
B9  Bundles per net square:   =B7/B5
    Starter bundles:          =ROUNDUP((B10+B11)/120,0)
    Cap bundles:              =ROUNDUP((B12+B13)*1.10/25,0)

Two habits keep the sheet honest. Put every assumption (waste, coverage, extra percentages) in its own labelled input cell so that nothing is buried inside a formula, and colour the inputs so you can see at a glance what is typed and what is calculated. For more on getting Excel and ChatGPT to cooperate on formulas, the ChatGPT and Excel guide goes into more depth.

Four checks before anything goes to the supplier

Run these on the finished sheet. Each takes a minute, and each uses numbers you already have.

  1. Footprint from the pitch. Roof area is the building's plan area multiplied by a pitch factor, so you can run it backwards. The factor for a rise of r over 12 is the square root of (1 + (r ÷ 12) × (r ÷ 12)): 1.054 for 4/12, 1.118 for 6/12, 1.158 for 7/12, 1.202 for 8/12, 1.250 for 9/12 and 1.414 for 12/12. For the worked roof, 3,240 ÷ 1.158 = 2,798 sq ft. Measure the building footprint with its overhangs on a map or with a tape. If your figure is within about 3% of 2,798, the area is plausible. A porch at a lower pitch shifts the answer, so this is a smell test, not proof.
  2. Effective waste. Take the bundles you ended with, divide by the bundles per square and by the net squares, and subtract 1. Here: 112 ÷ 3 ÷ 32.4 − 1 = 15.2%. It should land within a point or two of the waste you chose, and the small excess is the rounding up. Far above your choice means waste was applied twice.
  3. Your own history. Divide bundles ordered by net squares on your last three similar roofs. If those came to 3.4 to 3.5 bundles per net square, this job's 3.46 (112 ÷ 32.4) fits. A figure of 4.0 on a similar roof needs an explanation.
  4. The perimeter floor. For a building with square corners, the roof's edges (eaves, rakes and wall flashing lengths together) can't total less than four times the square root of the footprint. For 2,798 sq ft that floor is about 212 ft, and the report shows 164 + 118 + 38 = 320 ft, which is plausible for a roof with 16 facets. A total below the floor means the report, or your reading of it, has dropped a section.

None of these proves the order is right, but together they catch the slips that cost the most, and they don't need the AI. If you do want a second reading, paste the inputs and formulas into a fresh chat and ask it to find mistakes without calculating anything; a reviewer looking for errors tends to find different ones from the writer. For more on keeping figures honest in AI-assisted estimates, ChatGPT for construction estimating: check a quote, don't write it applies the same principle across trades.

Three mistakes that come out of a draft, and which check catches them

MistakeHow it shows upWhat catches it
Waste applied twice, once to the area and again to the bundles32.4 × 1.15 × 1.15 × 3 = 128.5, so 129 bundles instead of 112: 17 extraCheck 2 shows 32.7% effective waste; check 3 shows 3.98 bundles per net square
Digits transposed: 3,420 read for 3,24034.2 net squares and 118 bundles instead of 112: six extraCheck 1: 3,420 ÷ 1.158 = 2,953 sq ft, which is 5.5% above a measured 2,800
Eaves and rakes swapped (118 and 164 instead of 164 and 118)Drip edge and starter stay the same, but ice and water membrane drops from 4 rolls to 3 (and underlayment rises from 3 rolls to 4), so the crew runs short of membrane at the eavesNone of the four sums; only reading the extraction table against the report

The third row is the reason the extraction step has a human check. Sums can verify arithmetic; they can't verify that a number was read from the right line. Spend your attention accordingly: a minute on the three lines at the start saves the awkward trip back to the supplier.

The supplier order: units, rounding and what to ask

The sheet's last job is to speak the supplier's language: whole bundles, rolls, boxes and lengths, with the product and colour named exactly as they appear on the label. Rounding up is built in, because you can't buy part of a bundle. Check also that the order contains every component the warranty you are offering needs. GAF's Timberline HDZ page, for example, notes that its 15-year wind warranty requires the use of its starter strips, roof deck protection, ridge cap shingles, and a leak barrier or attic ventilation. A takeoff that prices a cheaper starter or a different cap can quietly void what the proposal promises, which is why the manufacturer warranty pointer belongs in your proposal.

Let the AI format the message, and tell it not to touch a number:

Turn these sheet lines into an order message for the supplier. List each line as item, quantity, unit. Do not change, round or combine any quantity. Add the delivery date, time window and drop point I give you. Then list any line where the unit is not bundles, rolls, boxes or pieces, so I can confirm it.

Before you send it, tick each quantity against the sheet. Then put four questions to the supplier, since the answers change how much safety margin is sensible:

  • Can the whole order come from one production run? Shingle shading can vary between runs, so it is worth asking.
  • Can unopened bundles go back after the job, and is there a restocking fee? A cheap return policy justifies a slightly generous order.
  • Where will the pallets be staged, and how will they be covered if work slips by a day?
  • How long does the quoted price hold?

If you order through Roofr, its help centre says material orders made from proposals with supplier pricing are locked to that supplier, and an order created from a proposal can carry a purchase order number for your own records. The checks above still apply: the software's quantities should land near the sheet's, and a gap of more than a bundle or two is a prompt to find out why.

Teaching the sheet from your own jobs

The sharpest improvement comes from a simple log. After each job, note the net squares, the bundles you ordered and the bundles you used, then work out the waste you really had: bundles used ÷ 3 ÷ net squares − 1. Four jobs (illustrative) show the idea:

JobRoof typeNet squaresOrderedUsedWaste actually used
1Simple gable28.5100949.9%
2Hip with two valleys35.012311812.4%
3Cut-up, two dormers31.211010815.4%
4Simple gable24.083799.7%

Two gables came in just under 10%, the hip near 12%, and the cut-up roof at 15%. After a dozen jobs those numbers, not a guide's, belong in your waste cell. The log also shows what your order margin buys: jobs 1 to 4 finished with 6, 5, 2 and 4 bundles left over, which tells you whether you are over-ordering and whether the returns policy matters.

Keep the log in the same workbook as the sheet, with one row per job and a column for the roof type, so the next takeoff can look up the nearest match. The AI can help draft the lookup, but, as with everything here, the sheet's own formulas should do the sums and a person should confirm the first few results against real jobs.

Roofing takeoff questions about AI and the arithmetic

Can ChatGPT or Claude do the roofing takeoff arithmetic?

They can read the report and write the formulas, but let a spreadsheet do the sums. Chat tools can slip on arithmetic, rounding and units, and one slip changes the whole order. Ask the AI for formulas, paste them into a sheet, and run the cross-checks in this tutorial on the results before anything goes to the supplier.

How many bundles are in a roofing square?

For many architectural asphalt shingles it is three, and one major manufacturer's data sheet for its most popular line lists three bundles per square. Some products differ, so read the data sheet for the exact product you are ordering instead of relying on a rule of thumb.

What waste percentage should I use for shingles?

There is no single authoritative table. Contractor guides commonly quote about 10 per cent for a simple gable, 12 to 15 for a hip roof and 15 to 20 or more for a cut-up roof. Start there, use any recommended figure printed on your report, then tune the numbers from your own jobs by comparing bundles ordered with bundles used.

What if my measurement report has no pitch?

Treat it as a draft. Roofr's help centre says a pitchless report is labelled No Pitch, some measurements are unavailable and the square footage will not be 100% accurate. Add the pitch yourself or order a corrected report before you calculate anything, because pitch changes both the area and the waste you should expect.

Further reads

Sources: Roofr pricing page, measurements page and help-centre articles on pitchless reports, PDF and dashboard views, the catalogue, material orders and proposal customisation; a manufacturer data sheet for a best-selling architectural shingle (bundles, pieces, nails per square and exposure); contractor guides for waste ranges (rules of thumb, not manufacturer figures).

Want your takeoff sheet built and checked once?

On a 1:1 call we'll look at how you turn measurements into orders today, build the sheet and prompts around your own suppliers and products, and decide which checks are worth keeping.

Book a 1:1 call with me