{
  "schema_version": 1,
  "kind": "construction_material_reference_library",
  "generated_at": "2026-09-25T18:42:09.910Z",
  "as_of": "2026-09-25T18:42:09.473Z",
  "canonical_url": "https://takeofffieldtools.com/material-costs/",
  "publisher": {
    "name": "Takeoff Field Tools",
    "url": "https://takeofffieldtools.com/"
  },
  "price_data_included": false,
  "location_data_included": false,
  "supplier_data_included": false,
  "observation_data_included": false,
  "material_count": 13,
  "specification_source_count": 13,
  "materials": [
    {
      "id": "lumber-2x4x8-spf-no2",
      "trade": "lumber",
      "name": "2 x 4 x 8 ft SPF stud or dimensional lumber, No. 2 or better",
      "canonical_unit": "each",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/lumber-2x4x8-spf-no2.html",
      "specification": {
        "nominal_thickness_in": 2,
        "nominal_width_in": 4,
        "length_ft": 8,
        "species_group": "spruce-pine-fir",
        "minimum_grade": "No. 2 or better",
        "treatment": "untreated",
        "moisture_condition": "kiln-dried or surfaced-dry; disclose variance"
      },
      "comparison_rules": [
        "Do not combine treated and untreated lumber.",
        "Do not combine Stud-grade lumber with No. 2-or-better lumber; verify the grade stamp and disclose any species substitution.",
        "Reject bundles unless the price and count can be normalized to one piece."
      ],
      "knowledge": {
        "why_track": "A common framing input whose shelf price can move quickly and whose grade, species, moisture condition, and treatment materially affect comparability.",
        "buyer_check": "Confirm grade stamp, species group, actual length, treatment, straightness requirements, stock status, and whether the displayed price is per piece or per bundle.",
        "estimator": {
          "purchase_unit": "one 8 ft piece",
          "gross_basis": "8 linear ft of this exact member per piece; do not treat linear footage alone as a complete framing count",
          "quantity_method": "Count members from the reviewed layout. Use length division only for continuous runs where stock length, splices, cuts, and reuse are explicit, then round purchase pieces up.",
          "cost_method": "Multiply purchase pieces by the observed per-piece price, then carry tax, delivery, treatment, waste, and any bundle condition as separate estimate inputs.",
          "scope_checks": [
            "Separate studs, plates, blocking, corners, openings, backing, and temporary work instead of applying one hidden factor.",
            "Confirm that cut strategy and permitted splices make an 8 ft stock length usable before converting linear footage to pieces."
          ]
        },
        "specification_sources": [
          {
            "name": "Standard Grading Rules for Canadian Lumber (2025)",
            "publisher": "National Lumber Grades Authority",
            "source_kind": "standards_body",
            "url": "https://nlga.org/wp-content/uploads/2025/11/NLGA-ENG-Grading-Rules-2025-small.pdf",
            "scope": "Grade-rule reference for SPF species-group and No. 2-or-better terminology. Verify the actual grade stamp, moisture condition, dimensions, and treatment; this is not a price or availability source."
          }
        ]
      }
    },
    {
      "id": "lumber-2x6x8-spf-no2",
      "trade": "lumber",
      "name": "2 x 6 x 8 ft SPF dimensional lumber, No. 2 or better",
      "canonical_unit": "each",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/lumber-2x6x8-spf-no2.html",
      "specification": {
        "nominal_thickness_in": 2,
        "nominal_width_in": 6,
        "length_ft": 8,
        "species_group": "spruce-pine-fir",
        "minimum_grade": "No. 2 or better",
        "treatment": "untreated"
      },
      "comparison_rules": [
        "Do not combine treated and untreated lumber.",
        "Disclose species or grade substitutions.",
        "Reject engineered, finger-jointed, or appearance-grade products."
      ],
      "knowledge": {
        "why_track": "This provides a second dimensional-lumber signal while retaining a strict specification instead of treating every nominal 2 x 6 as interchangeable.",
        "buyer_check": "Confirm structural requirements, grade, species, treatment, moisture condition, available lengths, and delivery minimums with the project documents and supplier.",
        "estimator": {
          "purchase_unit": "one 8 ft piece",
          "gross_basis": "8 linear ft of this exact member per piece; member count still depends on the reviewed framing layout",
          "quantity_method": "Count identical members from the layout. For continuous stock, divide usable required length by 8 ft only after declaring cuts and splices, then round purchase pieces up.",
          "cost_method": "Multiply purchase pieces by the observed per-piece price and keep tax, delivery, grade or species substitutions, waste, and minimum-order effects separate.",
          "scope_checks": [
            "Keep plates, joists, rafters, blocking, headers, and miscellaneous stock in separately reviewable quantity groups.",
            "Do not substitute another species, grade, treatment, or engineered product merely because the nominal dimensions match."
          ]
        },
        "specification_sources": [
          {
            "name": "Standard Grading Rules for Canadian Lumber (2025)",
            "publisher": "National Lumber Grades Authority",
            "source_kind": "standards_body",
            "url": "https://nlga.org/wp-content/uploads/2025/11/NLGA-ENG-Grading-Rules-2025-small.pdf",
            "scope": "Grade-rule reference for SPF species-group and No. 2-or-better terminology. Verify the actual grade stamp, moisture condition, dimensions, and treatment; this is not a price or availability source."
          }
        ]
      }
    },
    {
      "id": "sheet-osb-7-16-4x8",
      "trade": "sheet-goods",
      "name": "7/16 in OSB sheathing, 4 x 8 ft panel",
      "canonical_unit": "sheet",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/sheet-osb-7-16-4x8.html",
      "specification": {
        "material": "oriented strand board",
        "thickness_in": 0.4375,
        "width_ft": 4,
        "length_ft": 8,
        "edge": "square edge unless separately identified",
        "rating": "sheathing; disclose span rating"
      },
      "comparison_rules": [
        "Do not combine radiant-barrier, premium subfloor, or tongue-and-groove panels.",
        "Record span rating and exposure classification when shown.",
        "Normalize pallet pricing only when the panel count is explicit."
      ],
      "knowledge": {
        "why_track": "Panel prices are useful only when thickness, dimensions, edge profile, rating, and package quantity remain explicit.",
        "buyer_check": "Verify the required panel rating, span rating, exposure classification, fastening schedule, edge support, and local stock before ordering.",
        "estimator": {
          "purchase_unit": "one 4 x 8 ft sheet",
          "gross_basis": "32 gross square ft per sheet before layout, cuts, openings, edge support, damage, and waste",
          "quantity_method": "Lay out panel orientation and joints by surface. Gross area divided by 32 is only a lower-bound check; round the reviewed sheet count up after cuts and waste.",
          "cost_method": "Multiply purchase sheets by the observed per-sheet price. Keep pallet breaks, delivery, tax, clips, blocking, fasteners, and waste as explicit separate inputs.",
          "scope_checks": [
            "Separate wall, roof, floor, shear, and specialty panel conditions when their ratings or edge requirements differ.",
            "Review openings and offcut reuse by surface rather than assuming every square foot can be pooled."
          ]
        },
        "specification_sources": [
          {
            "name": "APA Rated Sheathing specification guide",
            "publisher": "APA – The Engineered Wood Association",
            "source_kind": "trade_association",
            "url": "https://www.apawood.org/guides-tools-training/technical-document-library/specification-guides/apa-rated-sheathing/",
            "scope": "Reference for performance category, span rating, bond classification, product marks, and installation fields. It is not a price or supplier-availability source."
          }
        ]
      }
    },
    {
      "id": "drywall-regular-1-2-4x8",
      "trade": "drywall",
      "name": "1/2 in regular drywall, 4 x 8 ft sheet",
      "canonical_unit": "sheet",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/drywall-regular-1-2-4x8.html",
      "specification": {
        "material": "gypsum wallboard",
        "thickness_in": 0.5,
        "width_ft": 4,
        "length_ft": 8,
        "type": "regular",
        "edge": "tapered"
      },
      "comparison_rules": [
        "Exclude fire-rated Type X, mold-resistant, abuse-resistant, cement, and specialty boards.",
        "Do not normalize a different sheet length without publishing it as a different material.",
        "Disclose minimum-order, lift, and delivery pricing."
      ],
      "knowledge": {
        "why_track": "A common interior material with meaningful differences between regular and specialty panels and between carry-out and delivered pricing.",
        "buyer_check": "Confirm board type, assembly requirements, sheet length, edge, lift quantities, boom or placement charges, stocking access, and damage policy.",
        "estimator": {
          "purchase_unit": "one 4 x 8 ft sheet",
          "gross_basis": "32 gross square ft per sheet before layout, cuts, openings, breakage, and waste",
          "quantity_method": "Lay out walls and ceilings as separate groups. Divide gross surface area by 32 only as a check, then round each reviewed sheet category up after orientation, openings, cuts, and waste.",
          "cost_method": "Multiply each sheet category by its observed per-sheet price; keep specialty board, tax, delivery, lift, stocking, trim, compound, fasteners, labor, and waste separate.",
          "scope_checks": [
            "Do not pool regular, Type X, moisture-resistant, abuse-resistant, shaft, or cementitious panels.",
            "Review wall and ceiling sheet counts separately because pooled rounding can understate the order."
          ]
        },
        "specification_sources": [
          {
            "name": "Sheetrock Brand UltraLight Panels product specification",
            "publisher": "USG",
            "source_kind": "manufacturer",
            "url": "https://www.usg.com/en-US/p/product/sheetrock-brand-ultralight-panels-141134",
            "scope": "Manufacturer example for a regular-type, non-moisture-resistant 1/2 in panel in 48 in widths. Verify actual brand, length, edge, weight, and product class; this is not a price or availability source."
          }
        ]
      }
    },
    {
      "id": "masonry-concrete-mix-80lb-general",
      "trade": "masonry",
      "name": "80 lb general-purpose concrete mix",
      "canonical_unit": "bag",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/masonry-concrete-mix-80lb-general.html",
      "specification": {
        "material": "preblended concrete mix",
        "package_weight_lb": 80,
        "use": "general purpose",
        "strength": "record manufacturer stated strength and cure basis"
      },
      "comparison_rules": [
        "Exclude fast-setting, high-early-strength, crack-resistant, countertop, mortar, and sand mixes.",
        "Record package weight; do not compare a 60 lb bag as an 80 lb bag.",
        "Keep bulk and pallet discounts separate from single-bag open-market prices."
      ],
      "knowledge": {
        "why_track": "Bag price alone is not yield; a useful observation preserves package weight and product class so quantity calculations can use the selected manufacturer's current yield.",
        "buyer_check": "Confirm required strength, placement, temperature limits, water demand, yield, cure requirements, pallet deposit, delivery, and applicable project specifications.",
        "estimator": {
          "purchase_unit": "one 80 lb bag",
          "gross_basis": "one manufacturer-labeled 80 lb package; volumetric yield is product-specific and must come from the current product data",
          "quantity_method": "Calculate placed volume from reviewed geometry, convert it to the unit used by the selected manufacturer's yield, divide by that current yield, include declared waste, and round bags up.",
          "cost_method": "Multiply purchase bags by the observed per-bag price. Keep pallet terms, deposit, water, reinforcement, forms, placement, equipment, curing, delivery, tax, and waste separate.",
          "scope_checks": [
            "Do not infer yield from package weight alone or reuse a yield from a different mix.",
            "Separate slabs, footings, posts, repairs, and other placements when geometry, mix, access, or waste differs."
          ]
        },
        "specification_sources": [
          {
            "name": "QUIKRETE Concrete Mix No. 1101 product data",
            "publisher": "QUIKRETE",
            "source_kind": "manufacturer",
            "url": "https://www.quikrete.com/productlines/concretemixpro.asp",
            "scope": "Manufacturer example showing why bag weight, mix class, labeled yield, and cure-basis strength remain product-specific. It is not a universal yield, price, or availability source."
          }
        ]
      }
    },
    {
      "id": "plumbing-pex-b-red-1-2-100ft",
      "trade": "plumbing",
      "name": "1/2 in red PEX-B tubing, 100 ft coil",
      "canonical_unit": "coil",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/plumbing-pex-b-red-1-2-100ft.html",
      "specification": {
        "material": "PEX-B",
        "nominal_size_in": 0.5,
        "length_ft": 100,
        "color": "red",
        "barrier": "non-oxygen-barrier unless separately identified"
      },
      "comparison_rules": [
        "Do not combine PEX-A, PEX-C, oxygen-barrier, or different coil lengths.",
        "Record listing and standard markings when available.",
        "Keep connection-system tools and fittings out of the tubing price."
      ],
      "knowledge": {
        "why_track": "PEX type, barrier, size, color, length, and listing matter; a generic per-foot figure can hide a non-equivalent product.",
        "buyer_check": "Confirm approved PEX type, joining system, listings, local code, pressure and temperature ratings, UV exposure limits, supports, fittings, and installer requirements.",
        "estimator": {
          "purchase_unit": "one 100 ft coil",
          "gross_basis": "100 linear ft of this exact tubing per coil before routing, tails, connections, damaged ends, and waste",
          "quantity_method": "Measure reviewed routes by size and system, add declared connection tails and waste, divide the total by 100 ft, and round whole coils up while tracking usable remnants.",
          "cost_method": "Multiply purchase coils by the observed per-coil price. Price fittings, manifolds, valves, supports, sleeves, tools, testing, delivery, tax, and waste separately.",
          "scope_checks": [
            "Keep PEX type, barrier class, size, color, listing, and joining system visible in every quantity group.",
            "Do not assume a leftover coil is usable without recording its verified remaining length and condition."
          ]
        },
        "specification_sources": [
          {
            "name": "SharkBite PEX-b tubing specification sheet",
            "publisher": "SharkBite / RWC",
            "source_kind": "manufacturer",
            "url": "https://www.sharkbite.com/sites/default/files/resources/SharkBite-PEX-b-Spec-Sheet.pdf",
            "scope": "Manufacturer reference for PEX-B size, color, coil length, and listing fields. Verify the supplier SKU and complete joining system; this is not a price, availability, or code-approval source."
          }
        ]
      }
    },
    {
      "id": "plumbing-pvc-sch40-3-4-10ft",
      "trade": "plumbing",
      "name": "3/4 in Schedule 40 PVC pipe, 10 ft length",
      "canonical_unit": "length",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/plumbing-pvc-sch40-3-4-10ft.html",
      "specification": {
        "material": "PVC",
        "nominal_size_in": 0.75,
        "schedule": "40",
        "length_ft": 10,
        "end": "plain end",
        "pressure_or_dwv": "record intended listing; do not assume"
      },
      "comparison_rules": [
        "Do not combine CPVC, conduit, foam-core DWV, Schedule 80, or different lengths.",
        "Record pressure or DWV markings and intended use.",
        "Exclude cut-length surcharges and fittings unless separately itemized."
      ],
      "knowledge": {
        "why_track": "The same nominal size appears in products with different materials, schedules, listings, and uses, so those attributes must stay attached to the observation.",
        "buyer_check": "Confirm system type, listing, pressure class, temperature, joining method, local code, supports, burial or exposure conditions, and required fittings.",
        "estimator": {
          "purchase_unit": "one 10 ft straight length",
          "gross_basis": "10 linear ft of this exact pipe per length before cuts, socket engagement, damaged ends, and waste",
          "quantity_method": "Measure reviewed routes by size and intended system, account for fitting geometry and required cut lengths, divide stock footage by 10 ft, and round whole lengths up with reusable offcuts tracked.",
          "cost_method": "Multiply purchase lengths by the observed per-length price. Keep fittings, valves, hangers, primer, cement, sleeves, testing, delivery, tax, and waste separate.",
          "scope_checks": [
            "Separate pressure, DWV, conduit, Schedule 80, CPVC, foam-core, and other non-equivalent systems.",
            "Count fittings by type and size instead of hiding them in a pipe-footage allowance."
          ]
        },
        "specification_sources": [
          {
            "name": "PVC Schedule 40 pressure pipe submittal",
            "publisher": "Charlotte Pipe and Foundry",
            "source_kind": "manufacturer",
            "url": "https://www.charlottepipe.com/uploads/documents/technical/FO-SUB-PVC-40-PIPE.pdf",
            "scope": "Manufacturer reference for Schedule 40 material, standards, available nominal sizes, and installation warnings. Verify pressure versus DWV use and plain versus bell end; this is not a price, availability, or code-approval source."
          }
        ]
      }
    },
    {
      "id": "plumbing-copper-type-l-1-2-10ft",
      "trade": "plumbing",
      "name": "1/2 in Type L copper tube, 10 ft straight length",
      "canonical_unit": "length",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/plumbing-copper-type-l-1-2-10ft.html",
      "specification": {
        "material": "copper tube",
        "nominal_size_in": 0.5,
        "type": "L",
        "length_ft": 10,
        "form": "straight length"
      },
      "comparison_rules": [
        "Do not combine Type M, Type K, refrigeration tube, coils, or different lengths.",
        "Record manufacturer and applicable standard when shown.",
        "Separate contract metal multipliers and negotiated quotes from open-market prices."
      ],
      "knowledge": {
        "why_track": "Copper is volatile and frequently contract-priced, making timestamp, source, price class, and exact tube type especially important.",
        "buyer_check": "Confirm tube type, standard, temper, joining method, fittings, supports, protection, local code, contract multiplier, delivery, and quote validity.",
        "estimator": {
          "purchase_unit": "one 10 ft straight length",
          "gross_basis": "10 linear ft of Type L straight tube per length before cuts, fitting take-up, damaged ends, and waste",
          "quantity_method": "Measure reviewed routes by tube type and size, account for fitting take-up and cut lengths, divide stock footage by 10 ft, and round whole lengths up while tracking reusable remnants.",
          "cost_method": "Multiply purchase lengths by the observed per-length price. Preserve quote or contract class and separately price fittings, valves, supports, protection, joining consumables, delivery, tax, and waste.",
          "scope_checks": [
            "Do not combine Type L with Type M, Type K, refrigeration tube, coils, or another temper.",
            "Keep quote validity and metal-pricing terms attached to the estimate rather than treating the observation as a standing supplier offer."
          ]
        },
        "specification_sources": [
          {
            "name": "Copper Tube Handbook",
            "publisher": "Copper Development Association",
            "source_kind": "trade_association",
            "url": "https://copper.org/wp-content/uploads/2026/04/copper_tube_handbook.pdf",
            "scope": "Reference for Type L dimensions, physical characteristics, and temper distinctions. Verify stock length and the exact supplier product; this is not a price, availability, or project-design source."
          }
        ]
      }
    },
    {
      "id": "electrical-nmb-12-2-cu-250ft",
      "trade": "electrical",
      "name": "12/2 copper NM-B cable with ground, 250 ft coil",
      "canonical_unit": "coil",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/electrical-nmb-12-2-cu-250ft.html",
      "specification": {
        "wiring_method": "NM-B",
        "conductor_material": "copper",
        "awg": 12,
        "insulated_conductors": 2,
        "equipment_ground": true,
        "length_ft": 250
      },
      "comparison_rules": [
        "Do not combine aluminum, UF-B, MC, individual conductors, or different coil lengths.",
        "Record conductor count, ground, gauge, and package length.",
        "Separate contract pricing and quantity breaks from open-market prices."
      ],
      "knowledge": {
        "why_track": "Cable is metal-sensitive, but a trustworthy comparison must preserve wiring method, conductor material, gauge, conductor count, ground, and coil length.",
        "buyer_check": "Confirm wiring method, conductor sizing, ampacity rules, derating, installation environment, code, listing, circuit design, and permitted substitutions with the qualified electrical team.",
        "estimator": {
          "purchase_unit": "one 250 ft coil",
          "gross_basis": "250 linear ft of this exact cable per coil before routing, vertical travel, tails, slack, damaged ends, and waste",
          "quantity_method": "Measure reviewed circuit routes by wiring method and gauge, add declared vertical travel, tails, slack, and waste, divide by 250 ft, and round coils up while tracking verified remnants.",
          "cost_method": "Multiply purchase coils by the observed per-coil price. Keep boxes, devices, connectors, staples, protection, testing, labor, delivery, tax, and waste separate.",
          "scope_checks": [
            "Do not use this quantity record to decide conductor size, protection, ampacity, derating, or permitted installation location.",
            "Separate home runs and branch groups when route assumptions or required cable type differ."
          ]
        },
        "specification_sources": [
          {
            "name": "12/2 copper NM-B with ground, 250 ft manufacturer record",
            "publisher": "Southwire",
            "source_kind": "manufacturer",
            "url": "https://www.southwire.com/wire-cable/building-wire/romex-sup-sup-brand-simpull-sup-sup-copper-type-nm-b-cable/p/28828269",
            "scope": "Exact manufacturer example for wiring method, copper gauge, conductor count, ground, and package length. It is not circuit-design advice or a price and availability source."
          }
        ]
      }
    },
    {
      "id": "electrical-nmb-14-2-cu-250ft",
      "trade": "electrical",
      "name": "14/2 copper NM-B cable with ground, 250 ft coil",
      "canonical_unit": "coil",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/electrical-nmb-14-2-cu-250ft.html",
      "specification": {
        "wiring_method": "NM-B",
        "conductor_material": "copper",
        "awg": 14,
        "insulated_conductors": 2,
        "equipment_ground": true,
        "length_ft": 250
      },
      "comparison_rules": [
        "Do not combine aluminum, UF-B, MC, individual conductors, or different coil lengths.",
        "Record conductor count, ground, gauge, and package length.",
        "Do not present this price as evidence that 14 AWG is suitable for a specific circuit."
      ],
      "knowledge": {
        "why_track": "A second exact cable specification helps show metal-price movement without collapsing different gauges or wiring methods into one number.",
        "buyer_check": "Circuit design, protection, conductor sizing, derating, installation environment, listing, code, and permitted substitutions require qualified project-specific review.",
        "estimator": {
          "purchase_unit": "one 250 ft coil",
          "gross_basis": "250 linear ft of this exact cable per coil before routing, vertical travel, tails, slack, damaged ends, and waste",
          "quantity_method": "Measure reviewed circuit routes by wiring method and gauge, add declared vertical travel, tails, slack, and waste, divide by 250 ft, and round coils up while tracking verified remnants.",
          "cost_method": "Multiply purchase coils by the observed per-coil price. Keep boxes, devices, connectors, staples, protection, testing, labor, delivery, tax, and waste separate.",
          "scope_checks": [
            "Do not use this quantity record as evidence that 14 AWG is suitable for a specific circuit or installation.",
            "Keep 14/2, 12/2, multiwire, switched, low-voltage, outdoor, armored, and other wiring groups separate."
          ]
        },
        "specification_sources": [
          {
            "name": "14/2 copper NM-B with ground, 250 ft manufacturer record",
            "publisher": "Southwire",
            "source_kind": "manufacturer",
            "url": "https://www.southwire.com/wire-cable/building-wire/romex-sup-sup-brand-simpull-sup-sup-copper-type-nm-b-cable/p/28827455",
            "scope": "Exact manufacturer example for wiring method, copper gauge, conductor count, ground, and package length. It is not circuit-design advice or a price and availability source."
          }
        ]
      }
    },
    {
      "id": "electrical-emt-1-2-10ft",
      "trade": "electrical",
      "name": "1/2 in EMT conduit, 10 ft length",
      "canonical_unit": "length",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/electrical-emt-1-2-10ft.html",
      "specification": {
        "material": "electrical metallic tubing",
        "trade_size_in": 0.5,
        "length_ft": 10,
        "finish": "standard galvanized or corrosion-protected finish; disclose variance"
      },
      "comparison_rules": [
        "Do not combine rigid metal conduit, intermediate metal conduit, PVC conduit, or flexible raceway.",
        "Record trade size, length, finish, and listing.",
        "Exclude couplings and fittings unless separately itemized."
      ],
      "knowledge": {
        "why_track": "Raceway comparisons fail when trade size, type, finish, length, or included couplings are omitted.",
        "buyer_check": "Confirm raceway type, fill, bends, supports, grounding and bonding, corrosion environment, fittings, listing, code, and design requirements.",
        "estimator": {
          "purchase_unit": "one 10 ft straight length",
          "gross_basis": "10 linear ft of this exact raceway per length before bends, cuts, damaged ends, and waste",
          "quantity_method": "Measure reviewed raceway routes by type and trade size, account for bends and cut lengths, divide straight stock footage by 10 ft, and round whole lengths up while tracking usable offcuts.",
          "cost_method": "Multiply purchase lengths by the observed per-length price. Keep couplings, connectors, elbows, boxes, supports, grounding or bonding components, delivery, tax, and waste separate.",
          "scope_checks": [
            "Do not combine EMT with rigid, intermediate, flexible, or nonmetallic raceway.",
            "Raceway fill, bends, supports, grounding, bonding, and permitted environments require project-specific electrical review."
          ]
        },
        "specification_sources": [
          {
            "name": "Steel electrical metallic tubing product reference",
            "publisher": "Wheatland Tube",
            "source_kind": "manufacturer",
            "url": "https://www.wheatland.com/products/electrical-conduit/emt/",
            "scope": "Manufacturer reference for steel EMT trade sizes, stock lengths, finish, and product distinctions. Verify the exact listing, coating, and included fittings; this is not a price, availability, or design source."
          }
        ]
      }
    },
    {
      "id": "electrical-receptacle-15a-tr-white",
      "trade": "electrical",
      "name": "15 A tamper-resistant duplex receptacle, white",
      "canonical_unit": "each",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/electrical-receptacle-15a-tr-white.html",
      "specification": {
        "device": "duplex receptacle",
        "amperage_a": 15,
        "voltage_v": 125,
        "tamper_resistant": true,
        "color": "white",
        "grade": "residential or commercial grade must be disclosed"
      },
      "comparison_rules": [
        "Do not combine GFCI, AFCI, USB, smart, weather-resistant, or hospital-grade devices.",
        "Record grade, pack count, wiring method, and listing.",
        "Normalize multipacks only when the device count is explicit."
      ],
      "knowledge": {
        "why_track": "Device prices are only comparable when function, rating, grade, color, listing, and pack count remain visible.",
        "buyer_check": "Confirm device rating, grade, tamper or weather resistance, circuit and box conditions, required protection, listing, code, and project specification.",
        "estimator": {
          "purchase_unit": "one duplex receptacle device",
          "gross_basis": "one device; box, cover plate, protection, connectors, conductors, and labor are not included",
          "quantity_method": "Count reviewed device symbols by exact type, rating, grade, color, and required protection. Round multipack purchases up without changing the device count.",
          "cost_method": "Multiply required devices by the normalized per-device observation or calculate whole packs explicitly. Keep boxes, plates, GFCI or AFCI protection, wiring, connectors, labor, delivery, tax, and spares separate.",
          "scope_checks": [
            "Separate standard, GFCI, weather-resistant, USB, smart, hospital-grade, and other non-equivalent devices.",
            "Do not infer code-required placement, protection, circuiting, or box suitability from this price record."
          ]
        },
        "specification_sources": [
          {
            "name": "T5320-W 15 A tamper-resistant duplex receptacle",
            "publisher": "Leviton",
            "source_kind": "manufacturer",
            "url": "https://leviton.com/products/t5320-w",
            "scope": "Exact manufacturer example for rating, configuration, tamper resistance, color, wiring method, and listing. Verify grade and pack count; this is not a price, availability, or project-approval source."
          }
        ]
      }
    },
    {
      "id": "glass-clear-float-1-4",
      "trade": "glass",
      "name": "1/4 in (6 mm) clear annealed float glass",
      "canonical_unit": "square_foot",
      "canonical_url": "https://takeofffieldtools.com/material-costs/materials/glass-clear-float-1-4.html",
      "specification": {
        "glass_type": "clear float glass",
        "nominal_thickness_in": 0.25,
        "nominal_thickness_mm": 6,
        "heat_treatment": "annealed",
        "laminated": false,
        "coating": "none",
        "tint": "clear or neutral"
      },
      "comparison_rules": [
        "Do not combine annealed, heat-strengthened, tempered, laminated, wired, patterned, mirror, acrylic, or polycarbonate products.",
        "Keep thickness, tint or low-iron designation, coating, cut size, edgework, holes, notches, fabrication, and minimum-charge basis visible.",
        "Normalize a cut-piece or stock-sheet quote to square feet only when the priced area, yield, waste, and minimum charge are explicit."
      ],
      "knowledge": {
        "why_track": "A glass area is not a comparable cost until thickness, heat treatment, make-up, coating, fabrication, cut size, yield, and minimum-charge basis remain attached.",
        "buyer_check": "Confirm the reviewed glazing schedule, exact pane make-up, thickness, treatment, safety-glazing and structural requirements, tint or low-iron designation, coating, edgework, holes, cut sizes, stock yield, breakage allowance, handling, and supplier minimums.",
        "estimator": {
          "purchase_unit": "one square foot of 1/4 in (6 mm) clear annealed float glass at the quoted cut-piece or stock-sheet basis",
          "gross_basis": "reviewed net pane area before stock-sheet yield, cutting waste, breakage, minimum charges, fabrication, edgework, handling, and delivery",
          "quantity_method": "Read each reviewed lite width and height, preserve lite counts and make-up, calculate net square feet by exact glass type, then add explicit stock-sheet yield, cutting waste, breakage, and supplier minimums without inferring safety or structural requirements.",
          "cost_method": "Apply an observed square-foot rate only when it uses the same thickness, treatment, make-up, fabrication, and area basis; otherwise price whole stock sheets or cut pieces explicitly. Keep tempering, lamination, coatings, edgework, holes, notches, hardware, glazing materials, labor, handling, delivery, tax, waste, and minimum charges separate.",
          "scope_checks": [
            "Separate annealed monolithic glass from heat-strengthened, tempered, laminated, insulated, coated, tinted, low-iron, mirrored, patterned, wired, fire-rated, and plastic glazing.",
            "Do not infer safety-glazing locations, structural thickness, wind or impact performance, edge clearances, supports, fabrication tolerances, or code compliance from this cost reference."
          ]
        },
        "specification_sources": [
          {
            "name": "Guardian Clear Glass, North America, 1/4 in (6 mm)",
            "publisher": "Guardian Glass",
            "source_kind": "manufacturer",
            "url": "https://www.guardianglass.com/us/en/our-glass/guardian-clear/clear",
            "scope": "Manufacturer reference for North American 1/4 in (6 mm) clear float glass, available fabrication options, and product distinctions. It is not a local price, stock, project-design, safety-glazing, structural, or code-approval source."
          }
        ]
      }
    }
  ],
  "use_notice": [
    "These authored references define exact comparison and estimating methods; they are not quotes, bids, purchase orders, code advice, or claims about current price or availability.",
    "Verify the exact product, project scope, local requirements, current price, tax, delivery, and field conditions before ordering."
  ]
}
