Your own prices for the deterministic estimate, as JSON: materials [{name, packSize, perUnit, appliesTo, priceUsd}] where perUnit is packs per unit of the repair action named in appliesTo (shingle-zone-repair, cap-repair, flashing-repair, boot-or-vent-replacement…), rounded up to whole packs per building; laborBundles [{hours, priceUsd}] (the largest bundle whose hours do not exceed the estimated hours, never below the smallest is used); heightCharges [{stories, priceUsd}]; laborRounding 'down' (default: largest bundle at or below the estimated hours, as in the reference report) or 'up' (smallest bundle that covers them); hoursPerZone (default 0.4); zoneSf (repair zone size in square feet, default 25); currency. Leave empty to use the built-in EXAMPLE price list, which is a placeholder and not market pricing: replace it with yours before quoting. All quantities are photo estimates and are field-verified on the roof.