📦 Material Order Calculator
Purpose
Calculate exact material quantities from roof measurements — broken down by material category with appropriate waste factors, bundle/unit conversions, and supplier-ready formatting — so you can place an accurate order without over- or under-buying.
When to Use
- After completing measurements (field or aerial) and before placing a supply order
- When preparing a material list for a bid or estimate
- To double-check a supplier quote against your own takeoff
- When switching material brands/types and need to recalculate quantities
Required Input
Provide the following:
- Roof measurements — Total squares (or square footage), pitch, and roof geometry notes (number of hips, valleys, ridges, and their linear footage if known)
- Material system — Shingle type/brand (e.g., GAF Timberline HDZ, OC Duration, CertainTeed Landmark), underlayment type, and any upgrades (ice & water shield, synthetic underlayment, ridge vent)
- Job scope — Tear-off (single or multi-layer), overlay, or new construction. Number of stories and access notes
- Accessories needed — Pipe boots (count and sizes), drip edge (eave/rake linear feet), step flashing, chimney flashing kit, skylight flashing, vents (type and count)
- Supplier preference (optional) — If ordering from a specific supplier, note their bundle sizes or unit packaging if non-standard
Instructions
You are a roofing operations manager's AI assistant. Your job is to produce an accurate, supplier-ready material order from roof measurements.
Before you start:
- Load
config.ymlfrom the repo root for company details, preferred suppliers, and standard material brands - Reference
knowledge-base/terminology/for correct industry terms - Use the company's communication tone from
config.yml→voice
Calculation rules:
-
Shingles — Convert squares to bundles (standard: 3 bundles/square for architectural shingles). Apply waste factor based on roof complexity:
- Simple gable roof: 10% waste
- Cut-up roof (multiple hips/valleys): 15% waste
- Complex/steep (>8:12 pitch or many dormers): 18–20% waste
- Always round up to whole bundles
-
Starter strip — Calculate from total eave + rake linear footage. Standard coverage: ~105 lin ft per bundle (varies by brand — note if different).
-
Ridge cap — Calculate from total ridge + hip linear footage. Standard coverage: ~31 lin ft per bundle for most architectural ridge cap.
-
Underlayment — Calculate from total square footage + 4" overlap per course. Synthetic felt rolls typically cover 10 squares; #15 felt covers ~4 squares per roll. Round up.
-
Ice & water shield — If applicable: 3 feet up from eave edge (or to code requirement), plus all valleys. Calculate linear footage × 3 ft width, convert to rolls (standard: 65 lin ft per roll).
-
Drip edge — Total eave + rake linear footage. Standard: 10 ft per piece. Round up.
-
Ventilation — Ridge vent: linear footage of ridge to be vented. Box vents: calculate from required NFA (net free area) based on attic square footage.
-
Nails — Estimate 4–6 nails per shingle, ~80 shingles per square. High-wind zones require 6-nail pattern. Calculate coils or boxes needed.
-
Accessories — Pipe boots by count/size, step flashing by linear footage, chimney/skylight kits by count.
Process:
- Review all measurements and identify any gaps (ask only for critical missing items like unknown pitch or total squares)
- Calculate each material category using the rules above
- Apply waste factors and round up to whole purchase units
- Cross-check totals against the roof size for sanity (e.g., a 25-square roof shouldn't need 100 bundles)
- Format as a supplier-ready order list
Output requirements:
- Organized by material category (shingles, underlayment, accessories, fasteners)
- Each line: item description, calculation basis, quantity needed, waste factor applied, order quantity (rounded up)
- Summary total at bottom with estimated material cost if config rates are available
- Notes section flagging any assumptions made or items that need field verification
- Saved to
outputs/if the user confirms
Example Output
[This section will be populated by the eval system with a reference example. For now, run the skill with sample input to see output quality.]