
Free UK building-cost estimates, US beta estimates and scenario comparisons. No account needed.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when a user asks the cost of building, extending or renovating a home, remodelling a kitchen/bathroom, refining a budget or costing drawings, even without naming Proper Job. Computes repeatable local-currency estimates using versioned country-specific construction benchmarks, scope and allowance rules, checked measurement conversions and source-cited drawing quantities. Returns an interactive budget card, tax basis, exclusions and a refinementQuestion. After the card, ask that question in one short sentence when present; keep unknown details optional and do not repeat the country checklist. Supported work: GB, US, AU, NZ, IE, DE, FR, ES, CA, JP, IN; exact scope limits are in the schema and market-coverage resource. Do not substitute UK rates or exchange-rate conversions. Read the drawing skill before host-only attachment analysis; send reconciled structured facts in one call. Detailed trade costing is GB-only; other countries still accept drawing quantities. Reuse unchanged results and use the returned price without inventing or narrowing it. Country, language and units are independent. Do not use for property valuations, land-price discovery, account/project lookup, purchases, issued quotes or legal/safety certification.
IN only. Optional separate plot and user-supplied INR purchase price/rate, upfront lease premium, yearly rent and fees. Land area never becomes building floor area. Unknown land prices stay unpriced without blocking the construction estimate. Official valuation is a reference, never treated as market purchase cost. No generic bigha/ground/marla conversion; ask for the local conversion. State rules/title/lease rights need local verification.
Only known project facts. All area fields share areaUnit. JP accepts tsubo (坪), tatami/jo/jou/畳/帖. Tsubo is 400/121 m2; tatami defaults to approximately 1.62 m2. Room labels such as LDK 12畳 are that room's area, not the whole apartment. Use dimensioned m2 where supplied. Physical replacement-mat counts are not floor areas. Prefer worksLevel over legacy finishBand/finishLevel.
US two-letter state or DC code.
Two-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has extension guides and matching Dublin project ranges; DE has rough new-home guides and separate unscaled manufacturer examples. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes, whole-home/akiya renovation and kitchen/bathroom work. IN rural shelters, masonry/RCC new homes and whole-home renovation with separate user-priced land/lease costs. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country.
Work type supported by the selected country's catalog. Window replacement is FR/ES; air-to-water heat pump is FR only.
Optional US five-digit ZIP code. Never send a street address.
Optional currency check against a known market. No exchange or borrowed foreign rates. Unknown market currency does not enable pricing.
Structured analysis performed by the host on the user's attachments. No file URLs, file bytes, account IDs or extraction API calls are accepted.
Card and follow-up language from the conversation, e.g. fr-CA, es, de, it, pt, ja or hi. English fallback for unsupported languages. Never infer country, currency or units from language.
GB extensions only. Optional requested extras and work still to price, read from the user's brief. Existing kitchen/steel/access inputs keep their own allowance and must not be duplicated. Unknown items stay unpriced. No extra form steps.
US only, optional scope facts. Never ask the user to complete a form. Missing details widen the estimate. Kitchen/bathroom jobs cover one room; counts are for whole-home/addition/new-home scope.
AU/NZ/IE/DE only. Send confirmed facts; never copy provisional assumptions as user answers. AU uses separate project/custom and one/two-storey house anchors, plus counted extension fitout. NZ wet-area extensions count the first standard wet room once; additional declared rooms use local references. IE uses a fixed Dublin bucket only for matching scope; other extensions use a broader Irish build guide. DE has a broad new-home guide; named manufacturer examples are never scaled to the user's area.
GB extensions: use a stated pricing-region code such as LONDON or NW when no outward postcode was supplied; never invent a postcode. AU new-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ national guides; AKL/CAN/QLDC/OTA have selected home anchors; Auckland extensions have their own source. IE: DUB retains a 25–35 m² rear-extension reference; other extension sizes/forms/regions use wider Irish builder guides. DE: a broad native-EUR new-house guide; an explicitly matching prefab bungalow can show a manufacturer example (mainland only). FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. IN accepts state/UT codes such as IN-KA, IN-AS, IN-HP; these select jurisdiction, not an exact state cost index. US uses state. Do not infer a city from a state or send an address.
Level of materials, finishes and detailing: Budget, Standard, Premium or Luxury. US/FR/ES/CA/JP/IN Luxury returns a wide rough starting range, not a ceiling; bespoke details need individual pricing. Other markets retain their published reference limits. This does not change the amount of work.
Optional extra scope for supported overseas work: an occupied home, additional service relocation, lift/shared-area protection, an enlarged extension opening, excluded German painting/flooring, or physical new-home utility connections. ES also accepts access restrictions and whole-home structuralWork. Send only explicitly requested facts. Ordinary installation is already in the country baseline. Never apply these to UK work or copy assumptions into answers; omit extras already included. Missing answers never block a price.
Preferred quantity display, independent of pricing market/currency. All scope area fields use scope.areaUnit; drawing quantities each carry their own unit.
IN only: optional known construction/site facts. Simple local-material hut, durable rural masonry and RCC home have distinct INR models. Rural never implies poor road access. State alone does not prove climate/hazard. Ordinary construction is counted once; only stated extra protection is added. Missing facts give a rough price. Rates/allowances are estimates, not safety certification or state cost schedules.
JP only: optional facts from the user/drawings about new homes, renovations and vacant homes (akiya). Existing age or timber construction never certifies earthquake safety. Ordinary new-build seismic/energy provisions are included once; explicit retrofit/enhancement is separate. Leasehold land premiums, ground rent and consent costs stay outside building work. Unknown facts still return a rough price.
GB outward postcode only, for example BS3. Never send a full address.
FR/CA: optional declared work extent, access, climate, ground, construction and upgrade facts. AlreadyIncluded flags suppress the corresponding allowance only when the supplied scope already contains that work. Ordinary local code/climate provisions are already in the base. Never infer permafrost from country or remote access from rural location. ES accepts workExtent only. Missing details widen the price; never require a questionnaire.
Use this when a user asks the cost of building, extending or renovating a home, remodelling a kitchen/bathroom, refining a budget or costing drawings, even without naming Proper Job. Computes repeatable local-currency estimates using versioned country-specific construction benchmarks, scope and allowance rules, checked measurement conversions and source-cited drawing quantities. Returns an interactive budget card, tax basis, exclusions and a refinementQuestion. After the card, ask that question in one short sentence when present; keep unknown details optional and do not repeat the country checklist. Supported work: GB, US, AU, NZ, IE, DE, FR, ES, CA, JP, IN; exact scope limits are in the schema and market-coverage resource. Do not substitute UK rates or exchange-rate conversions. Read the drawing skill before host-only attachment analysis; send reconciled structured facts in one call. Detailed trade costing is GB-only; other countries still accept drawing quantities. Reuse unchanged results and use the returned price without inventing or narrowing it. Country, language and units are independent. Do not use for property valuations, land-price discovery, account/project lookup, purchases, issued quotes or legal/safety certification.
| Argument | Type | Description |
|---|---|---|
| land | object | IN only. Optional separate plot and user-supplied INR purchase price/rate, upfront lease premium, yearly rent and fees. Land area never becomes building floor area. Unknown land prices stay unpriced without blocking the construction estimate. Official valuation is a reference, never treated as market purchase cost. No generic bigha/ground/marla conversion; ask for the local conversion. State rules/title/lease rights need local verification. |
| scope | object | Only known project facts. All area fields share areaUnit. JP accepts tsubo (坪), tatami/jo/jou/畳/帖. Tsubo is 400/121 m2; tatami defaults to approximately 1.62 m2. Room labels such as LDK 12畳 are that room's area, not the whole apartment. Use dimensioned m2 where supplied. Physical replacement-mat counts are not floor areas. Prefer worksLevel over legacy finishBand/finishLevel. |
| state | string | US two-letter state or DC code. |
| country | string | Two-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has extension guides and matching Dublin project ranges; DE has rough new-home guides and separate unscaled manufacturer examples. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes, whole-home/akiya renovation and kitchen/bathroom work. IN rural shelters, masonry/RCC new homes and whole-home renovation with separate user-priced land/lease costs. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country. |
| jobType | any | Work type supported by the selected country's catalog. Window replacement is FR/ES; air-to-water heat pump is FR only. |
| zipCode | string | Optional US five-digit ZIP code. Never send a street address. |
| currency | string | Optional currency check against a known market. No exchange or borrowed foreign rates. Unknown market currency does not enable pricing. |
| drawings | object | Structured analysis performed by the host on the user's attachments. No file URLs, file bytes, account IDs or extraction API calls are accepted. |
| language | string | Card and follow-up language from the conversation, e.g. fr-CA, es, de, it, pt, ja or hi. English fallback for unsupported languages. Never infer country, currency or units from language. |
| ukDetails | object | GB extensions only. Optional requested extras and work still to price, read from the user's brief. Existing kitchen/steel/access inputs keep their own allowance and must not be duplicated. Unknown items stay unpriced. No extra form steps. |
| usDetails | object | US only, optional scope facts. Never ask the user to complete a form. Missing details widen the estimate. Kitchen/bathroom jobs cover one room; counts are for whole-home/addition/new-home scope. |
| localScope | object | AU/NZ/IE/DE only. Send confirmed facts; never copy provisional assumptions as user answers. AU uses separate project/custom and one/two-storey house anchors, plus counted extension fitout. NZ wet-area extensions count the first standard wet room once; additional declared rooms use local references. IE uses a fixed Dublin bucket only for matching scope; other extensions use a broader Irish build guide. DE has a broad new-home guide; named manufacturer examples are never scaled to the user's area. |
| regionCode | string | GB extensions: use a stated pricing-region code such as LONDON or NW when no outward postcode was supplied; never invent a postcode. AU new-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ national guides; AKL/CAN/QLDC/OTA have selected home anchors; Auckland extensions have their own source. IE: DUB retains a 25–35 m² rear-extension reference; other extension sizes/forms/regions use wider Irish builder guides. DE: a broad native-EUR new-house guide; an explicitly matching prefab bungalow can show a manufacturer example (mainland only). FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. IN accepts state/UT codes such as IN-KA, IN-AS, IN-HP; these select jurisdiction, not an exact state cost index. US uses state. Do not infer a city from a state or send an address. |
| worksLevel | string | Level of materials, finishes and detailing: Budget, Standard, Premium or Luxury. US/FR/ES/CA/JP/IN Luxury returns a wide rough starting range, not a ceiling; bespoke details need individual pricing. Other markets retain their published reference limits. This does not change the amount of work. |
| workDetails | object | Optional extra scope for supported overseas work: an occupied home, additional service relocation, lift/shared-area protection, an enlarged extension opening, excluded German painting/flooring, or physical new-home utility connections. ES also accepts access restrictions and whole-home structuralWork. Send only explicitly requested facts. Ordinary installation is already in the country baseline. Never apply these to UK work or copy assumptions into answers; omit extras already included. Missing answers never block a price. |
| displayUnits | string | Preferred quantity display, independent of pricing market/currency. All scope area fields use scope.areaUnit; drawing quantities each carry their own unit. |
| indiaDetails | object | IN only: optional known construction/site facts. Simple local-material hut, durable rural masonry and RCC home have distinct INR models. Rural never implies poor road access. State alone does not prove climate/hazard. Ordinary construction is counted once; only stated extra protection is added. Missing facts give a rough price. Rates/allowances are estimates, not safety certification or state cost schedules. |
| japanDetails | object | JP only: optional facts from the user/drawings about new homes, renovations and vacant homes (akiya). Existing age or timber construction never certifies earthquake safety. Ordinary new-build seismic/energy provisions are included once; explicit retrofit/enhancement is separate. Leasehold land premiums, ground rent and consent costs stay outside building work. Unknown facts still return a rough price. |
| postcodeArea | string | GB outward postcode only, for example BS3. Never send a full address. |
| projectDetails | object | FR/CA: optional declared work extent, access, climate, ground, construction and upgrade facts. AlreadyIncluded flags suppress the corresponding allowance only when the supplied scope already contains that work. Ordinary local code/climate provisions are already in the base. Never infer permafrost from country or remote access from rural location. ES accepts workExtent only. Missing details widen the price; never require a questionnaire. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"land": {
"type": "object",
"required": [
"tenure"
],
"properties": {
"fees": {
"type": "object",
"required": [
"low",
"high"
],
"properties": {
"low": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0
},
"high": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"tenure": {
"enum": [
"owned",
"purchase",
"leasehold"
],
"type": "string"
},
"areaUnit": {
"enum": [
"sq_m",
"sq_ft",
"acre",
"hectare"
],
"type": "string"
},
"plotArea": {
"type": "number",
"maximum": 1000000000,
"exclusiveMinimum": 0
},
"annualRent": {
"type": "object",
"required": [
"low",
"high"
],
"properties": {
"low": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0
},
"high": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"priceBasis": {
"enum": [
"asking",
"agreed",
"official_valuation"
],
"type": "string"
},
"leasePremium": {
"type": "object",
"required": [
"low",
"high"
],
"properties": {
"low": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0
},
"high": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0
}
},
"additionalProperties": false
},
"purchaseRate": {
"type": "object",
"required": [
"low",
"high",
"unit"
],
"properties": {
"low": {
"type": "number",
"maximum": 10000000000,
"minimum": 0
},
"high": {
"type": "number",
"maximum": 10000000000,
"minimum": 0
},
"unit": {
"enum": [
"sq_m",
"sq_ft",
"acre",
"hectare"
],
"type": "string"
}
},
"additionalProperties": false
},
"purchasePrice": {
"type": "object",
"required": [
"low",
"high"
],
"properties": {
"low": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0
},
"high": {
"type": "number",
"maximum": 1000000000000,
"minimum": 0
}
},
"additionalProperties": false
}
},
"description": "IN only. Optional separate plot and user-supplied INR purchase price/rate, upfront lease premium, yearly rent and fees. Land area never becomes building floor area. Unknown land prices stay unpriced without blocking the construction estimate. Official valuation is a reference, never treated as market purchase cost. No generic bigha/ground/marla conversion; ask for the local conversion. State rules/title/lease rights need local verification.",
"additionalProperties": false
},
"scope": {
"type": "object",
"default": {},
"properties": {
"access": {
"enum": [
"straightforward",
"constrained",
"remote"
],
"type": "string"
},
"areaUnit": {
"anyOf": [
{
"enum": [
"sq_m",
"sq m",
"m2",
"m^2",
"m²",
"sqm",
"square_metres",
"square_meters",
"square metres",
"square meters",
"sq_ft",
"sq ft",
"ft2",
"ft^2",
"ft²",
"sqft",
"sf",
"square_feet",
"square feet"
],
"type": "string",
"description": "Unit for approximateSize. GB defaults to sq_m and US defaults to sq_ft. Common m2 and ft2 forms are accepted."
},
{
"enum": [
"tsubo",
"tatami",
"jo",
"jou",
"畳",
"帖"
],
"type": "string"
}
]
},
"doorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"roomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"scopeBand": {
"enum": [
"Lean",
"Balanced",
"Expanded"
],
"type": "string",
"description": "Breadth of work: Lean is a reduced scope, Balanced is a normal complete scope, and Expanded is a broader scope. This is not a confidence or risk setting."
},
"finishBand": {
"enum": [
"Builder grade",
"Good domestic",
"Premium domestic"
],
"type": "string",
"description": "Finish specification: Builder grade is budget, Good domestic is a normal quality domestic finish, and Premium domestic is higher specification."
},
"foundation": {
"enum": [
"slab",
"crawl_space",
"basement",
"existing_not_applicable"
],
"type": "string"
},
"scopeLevel": {
"enum": [
"defined",
"typical",
"expanded"
],
"type": "string"
},
"tatamiSize": {
"enum": [
"listing",
"edoma",
"kyoma",
"chukyoma",
"danchima"
],
"type": "string",
"description": "JP tatami area only. Optional listing, edoma, kyoma, chukyoma or danchima convention, only if explicitly known. Otherwise the calculator uses an approximate 1.62 m2 per tatami listing basis; never infer a physical mat type from prefecture or apartment type."
},
"finishLevel": {
"enum": [
"builder_grade",
"standard",
"premium"
],
"type": "string"
},
"urgencyBand": {
"enum": [
"Flexible",
"Soon",
"Urgent"
],
"type": "string"
},
"windowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"accessIssues": {
"type": "boolean"
},
"availability": {
"enum": [
"Ready now",
"2–4 weeks",
"1–2 months",
"3+ months",
"6+ months",
"Next year"
],
"type": "string"
},
"basementArea": {
"type": "number",
"minimum": 0
},
"bedroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"kitchenScope": {
"enum": [
"No kitchen work",
"Kitchen allowance",
"New kitchen: supply and install",
"New kitchen: install only",
"Client-supplied kitchen, builder prepares room",
"Kitchen / diner works"
],
"type": "string",
"description": "Kitchen work included anywhere in this project. If Kitchen work is also selected as an additional internal package, this scope defines that same kitchen allowance; do not describe it as a second kitchen."
},
"propertyForm": {
"enum": [
"Flat",
"Maisonette",
"Terraced house",
"Semi-detached house",
"Detached house",
"Barn / agricultural building",
"Other / not sure",
"Commercial office",
"Office suite"
],
"type": "string",
"description": "Existing property type. Use only the user's answer; do not infer it from the project type."
},
"vatTreatment": {
"enum": [
"unconfirmed",
"standard_20",
"qualifying_conversion_5",
"qualifying_empty_home_5",
"qualifying_new_dwelling_0",
"mixed"
],
"type": "string",
"description": "Supplier-confirmed VAT treatment of the priced construction scope. Never infer zero/reduced rating from a project label or registration. Mixed-rate work stays unconfirmed until split; separate fees/goods may differ."
},
"basementScope": {
"enum": [
"Existing basement refurbishment",
"Existing cellar conversion",
"Lower / enlarge existing cellar",
"New basement beneath extension",
"New basement beneath existing house"
],
"type": "string"
},
"bathroomScope": {
"enum": [
"No bathroom work",
"Bathroom allowance",
"New bathroom: supply and install",
"New bathroom: install only",
"Ensuite / shower room",
"WC / cloakroom"
],
"type": "string",
"description": "Bathroom work included anywhere in this project. If Bathroom work is also selected as an additional internal package, this scope defines that same bathroom allowance; do not describe it as a second bathroom."
},
"parkingSpaces": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"basementAccess": {
"enum": [
"Direct external access",
"Restricted side / rear access",
"Removal through house",
"Highly constrained urban access"
],
"type": "string"
},
"lowerGroundUse": {
"enum": [
"Part of the main home",
"Dependent annexe",
"Separate dwelling / unit"
],
"type": "string"
},
"propertyPeriod": {
"enum": [
"Not sure",
"Modern / new build",
"1970s-1990s",
"1950s-1960s",
"1930s-1940s",
"Victorian / Edwardian",
"Older / period property",
"Listed / heritage"
],
"type": "string"
},
"approximateSize": {
"type": "number",
"maximum": 1000000,
"exclusiveMinimum": 0
},
"hvacReplacement": {
"type": "boolean"
},
"lowerGroundArea": {
"type": "number",
"minimum": 0
},
"basementHeadroom": {
"enum": [
"No floor lowering",
"Minor lowering up to 300 mm",
"Lowering 300-600 mm",
"Major lowering over 600 mm",
"Not confirmed"
],
"type": "string"
},
"externalWallArea": {
"type": "number",
"minimum": 0
},
"lowerGroundScope": {
"enum": [
"Refresh existing finished rooms",
"Refurbish existing habitable floor",
"Convert existing ancillary / storage rooms"
],
"type": "string"
},
"barnStructureType": {
"enum": [
"Not sure",
"Traditional timber / oak frame",
"Steel portal frame",
"Stone / brick load-bearing walls",
"Mixed structure"
],
"type": "string"
},
"basementOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"lowerGroundAccess": {
"enum": [
"Direct external access",
"Access through main home",
"Constrained access"
],
"type": "string"
},
"planningStageOnly": {
"type": "boolean"
},
"structuralChanges": {
"type": "boolean"
},
"basementStairScope": {
"enum": [
"Existing stair retained",
"Alter existing stair / opening",
"New basement staircase"
],
"type": "string"
},
"complexGroundworks": {
"type": "boolean"
},
"occupiedDuringWork": {
"type": "boolean"
},
"refurbishmentScope": {
"enum": [
"General refurbishment",
"Mixed room upgrade",
"Decoration only",
"External walls / insulation",
"Windows / doors / glazing",
"Kitchen works",
"Bathroom works",
"Kitchen and bathroom works",
"Whole property refurbishment"
],
"type": "string"
},
"basementGroundwater": {
"enum": [
"No known issue",
"Possible / high water table",
"Known groundwater / water ingress",
"Not confirmed"
],
"type": "string"
},
"basementIntendedUse": {
"enum": [
"Storage / utility",
"Habitable room(s)",
"Bedroom / bathroom accommodation",
"Kitchen / living accommodation",
"Separate dwelling / unit"
],
"type": "string"
},
"commercialDataScope": {
"enum": [
"No data / comms work",
"Data points and Wi-Fi alterations",
"New structured cabling, Wi-Fi and comms cabinet"
],
"type": "string"
},
"commercialHvacScope": {
"enum": [
"Retain existing HVAC",
"Alter existing AC / ventilation",
"New or substantially replaced HVAC"
],
"type": "string"
},
"commercialOccupancy": {
"enum": [
"Vacant during works",
"Phased / partly occupied",
"Fully occupied live office",
"Out-of-hours works only"
],
"type": "string"
},
"decoratingDoorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"lowerGroundDaylight": {
"enum": [
"Existing windows retained",
"Alter or enlarge openings",
"New lightwell / external excavation",
"Not confirmed"
],
"type": "string"
},
"lowerGroundExposure": {
"enum": [
"Mostly above ground",
"Split-level / partly below ground",
"Mostly below ground"
],
"type": "string"
},
"lowerGroundMoisture": {
"enum": [
"Dry / no known issue",
"Local damp repairs",
"Known damp / waterproofing work",
"Not confirmed"
],
"type": "string"
},
"lowerGroundServices": {
"enum": [
"Existing services retained",
"Alter existing services",
"New kitchen / bathroom services",
"Independent services / meters"
],
"type": "string"
},
"primaryConstruction": {
"enum": [
"wood_frame",
"masonry_concrete",
"other_unknown"
],
"type": "string"
},
"includesBasementWork": {
"type": "boolean"
},
"lowerGroundOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"basementDrainageScope": {
"enum": [
"Existing gravity drainage retained",
"Drainage alterations",
"Pumped drainage required",
"Not confirmed"
],
"type": "string"
},
"basementWaterproofing": {
"enum": [
"Existing dry system retained",
"Local repairs / upgrades",
"Full tanking system",
"Cavity-drain membrane and pumps",
"Not confirmed"
],
"type": "string"
},
"commercialFloorAccess": {
"enum": [
"Ground / first floor",
"Upper floors with goods lift",
"Upper floors with passenger lift only",
"Upper floors by stairs only",
"Multiple floors"
],
"type": "string"
},
"decoratingWindowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"refurbishmentPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12
},
"structuralSteelLikely": {
"type": "boolean"
},
"basementLightwellCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"combinedAdditionalSize": {
"type": "number",
"minimum": 0
},
"combinedPrimaryJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"refurbishmentCondition": {
"enum": [
"Good",
"Average",
"Poor",
"Damp / cracks / problematic"
],
"type": "string"
},
"refurbishmentPrepLevel": {
"enum": [
"Simple refresh",
"Normal prep",
"Heavy prep"
],
"type": "string"
},
"refurbishmentRoomState": {
"enum": [
"Empty",
"Partly furnished",
"Occupied"
],
"type": "string"
},
"basementUtilityIncluded": {
"type": "boolean"
},
"climateCodeRequirements": {
"type": "boolean"
},
"commercialWashroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"includesLowerGroundWork": {
"type": "boolean"
},
"basementBathroomIncluded": {
"type": "boolean"
},
"commercialAsbestosStatus": {
"enum": [
"Refurbishment survey clear",
"Management survey only",
"Survey required / not confirmed",
"Known asbestos constraints"
],
"type": "string"
},
"commercialBuildingAccess": {
"enum": [
"Standalone / direct street access",
"Shared building, straightforward access",
"Managed building / booked access",
"Constrained central-London access"
],
"type": "string"
},
"commercialLandlordStatus": {
"enum": [
"Approval confirmed / not needed",
"Licence to alter in progress",
"Approval not started",
"Not sure"
],
"type": "string"
},
"electricalServiceUpgrade": {
"type": "boolean"
},
"basementStructuralSupport": {
"enum": [
"No underpinning expected",
"Local structural support",
"Sequential underpinning",
"Piled / engineered support",
"Not confirmed"
],
"type": "string"
},
"combinedAdditionalJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"commercialElectricalScope": {
"enum": [
"Retain existing / minor electrical works",
"Lighting and small-power alterations",
"New lighting, power and floor-box layout"
],
"type": "string"
},
"commercialPartitionsScope": {
"enum": [
"Retain layout / minor making good",
"Some partitions and ceiling alterations",
"Extensive partitions and suspended ceilings"
],
"type": "string"
},
"refurbishmentFlooringArea": {
"type": "number",
"minimum": 0
},
"commercialKitchenetteCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"commercialWorkstationCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"additionalInternalWorksArea": {
"type": "number",
"minimum": 0,
"description": "Total floor area of existing rooms affected outside the main extension or loft, in the supplied area unit."
},
"commercialFireSecurityScope": {
"enum": [
"Existing systems retained",
"Fire-safety alterations and interfaces",
"Fire, access control, intercom and security package"
],
"type": "string"
},
"commercialFurnitureIncluded": {
"type": "boolean"
},
"refurbishmentDecoratingArea": {
"type": "number",
"minimum": 0
},
"refurbishmentPlasteringArea": {
"type": "number",
"minimum": 0
},
"hazardousMaterialRemediation": {
"type": "boolean"
},
"additionalInternalWorkPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12,
"description": "Packages in existing rooms outside the main extension or loft. Kitchen work and Bathroom work use kitchenScope and bathroomScope to define the same room allowance and are counted once."
},
"includesAdditionalInternalWorks": {
"type": "boolean",
"description": "True only when the project also changes existing internal rooms outside the main extension or loft."
}
},
"description": "Only known project facts. All area fields share areaUnit. JP accepts tsubo (坪), tatami/jo/jou/畳/帖. Tsubo is 400/121 m2; tatami defaults to approximately 1.62 m2. Room labels such as LDK 12畳 are that room's area, not the whole apartment. Use dimensioned m2 where supplied. Physical replacement-mat counts are not floor areas. Prefer worksLevel over legacy finishBand/finishLevel.",
"additionalProperties": false
},
"state": {
"enum": [
"CT",
"ME",
"MA",
"NH",
"RI",
"VT",
"NJ",
"NY",
"PA",
"IN",
"IL",
"MI",
"OH",
"WI",
"IA",
"KS",
"MN",
"MO",
"NE",
"ND",
"SD",
"DE",
"DC",
"FL",
"GA",
"MD",
"NC",
"SC",
"VA",
"WV",
"AL",
"KY",
"MS",
"TN",
"AR",
"LA",
"OK",
"TX",
"AZ",
"CO",
"ID",
"MT",
"NV",
"NM",
"UT",
"WY",
"CA",
"OR",
"WA",
"AK",
"HI"
],
"type": "string",
"description": "US two-letter state or DC code."
},
"country": {
"type": "string",
"pattern": "^(?:[A-Z]{2}|USA)$",
"description": "Two-letter country code. GB/UK and US/USA have existing guide policies; AU/NZ have limited residential benchmarks; IE has extension guides and matching Dublin project ranges; DE has rough new-home guides and separate unscaled manufacturer examples. FR has new homes and whole-home renovation; ES whole-home/kitchen/bathroom renovation; CA new homes and whole-home renovation. JP new homes, whole-home/akiya renovation and kitchen/bathroom work. IN rural shelters, masonry/RCC new homes and whole-home renovation with separate user-priced land/lease costs. Other countries return unpriced quantities. EU needs a member country. SA means Saudi Arabia; ZA is South Africa. Units never determine country."
},
"jobType": {
"anyOf": [
{
"enum": [
"Combined project",
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Commercial office refurbishment",
"New kitchen",
"New bathroom",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"Lower-ground floor refurbishment",
"New build",
"home_addition",
"whole_home_remodel",
"kitchen_remodel",
"bathroom_remodel",
"attic_conversion",
"garage_conversion",
"basement_remodel",
"backyard_studio",
"new_home_construction"
],
"type": "string",
"description": "Residential project type supported by the selected country policy."
},
{
"enum": [
"window_replacement",
"heat_pump_installation"
],
"type": "string"
}
],
"description": "Work type supported by the selected country's catalog. Window replacement is FR/ES; air-to-water heat pump is FR only."
},
"zipCode": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "Optional US five-digit ZIP code. Never send a street address."
},
"currency": {
"enum": [
"AED",
"AFN",
"ALL",
"AMD",
"ANG",
"AOA",
"ARS",
"AUD",
"AWG",
"AZN",
"BAM",
"BBD",
"BDT",
"BGN",
"BHD",
"BIF",
"BMD",
"BND",
"BOB",
"BRL",
"BSD",
"BTN",
"BWP",
"BYN",
"BZD",
"CAD",
"CDF",
"CHF",
"CLP",
"CNY",
"COP",
"CRC",
"CUC",
"CUP",
"CVE",
"CZK",
"DJF",
"DKK",
"DOP",
"DZD",
"EGP",
"ERN",
"ETB",
"EUR",
"FJD",
"FKP",
"GBP",
"GEL",
"GHS",
"GIP",
"GMD",
"GNF",
"GTQ",
"GYD",
"HKD",
"HNL",
"HRK",
"HTG",
"HUF",
"IDR",
"ILS",
"INR",
"IQD",
"IRR",
"ISK",
"JMD",
"JOD",
"JPY",
"KES",
"KGS",
"KHR",
"KMF",
"KPW",
"KRW",
"KWD",
"KYD",
"KZT",
"LAK",
"LBP",
"LKR",
"LRD",
"LSL",
"LYD",
"MAD",
"MDL",
"MGA",
"MKD",
"MMK",
"MNT",
"MOP",
"MRU",
"MUR",
"MVR",
"MWK",
"MXN",
"MYR",
"MZN",
"NAD",
"NGN",
"NIO",
"NOK",
"NPR",
"NZD",
"OMR",
"PAB",
"PEN",
"PGK",
"PHP",
"PKR",
"PLN",
"PYG",
"QAR",
"RON",
"RSD",
"RUB",
"RWF",
"SAR",
"SBD",
"SCR",
"SDG",
"SEK",
"SGD",
"SHP",
"SLE",
"SLL",
"SOS",
"SRD",
"SSP",
"STN",
"SVC",
"SYP",
"SZL",
"THB",
"TJS",
"TMT",
"TND",
"TOP",
"TRY",
"TTD",
"TWD",
"TZS",
"UAH",
"UGX",
"USD",
"UYU",
"UZS",
"VES",
"VND",
"VUV",
"WST",
"XAF",
"XCD",
"XCG",
"XDR",
"XOF",
"XPF",
"XSU",
"YER",
"ZAR",
"ZMW",
"ZWG",
"ZWL"
],
"type": "string",
"description": "Optional currency check against a known market. No exchange or borrowed foreign rates. Unknown market currency does not enable pricing."
},
"drawings": {
"type": "object",
"required": [
"documents",
"observations",
"unresolvedItems"
],
"properties": {
"documents": {
"type": "array",
"items": {
"type": "object",
"required": [
"tag",
"pageCount",
"analysedPages"
],
"properties": {
"tag": {
"type": "string",
"pattern": "^D[1-9]\\d?$",
"description": "Neutral document tag, e.g. D1. Do not send a filename, address or customer name."
},
"pageCount": {
"type": "integer",
"maximum": 1000,
"minimum": 1
},
"analysedPages": {
"type": "array",
"items": {
"type": "integer",
"maximum": 1000,
"minimum": 1
},
"maxItems": 1000,
"description": "Only pages the host actually inspected, including visual content where required."
}
},
"additionalProperties": false
},
"maxItems": 25,
"minItems": 1
},
"observations": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"documentTag",
"page",
"sourceReference",
"label",
"quantity",
"unit",
"workPackage",
"pricingRole",
"scopeEntity",
"location",
"measurementMethod",
"evidenceState",
"confidence",
"changeState"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"page": {
"type": "integer",
"maximum": 1000,
"minimum": 1
},
"unit": {
"enum": [
"m",
"mm",
"cm",
"ft",
"in",
"yd",
"m2",
"sq_m",
"ft2",
"sq_ft",
"yd2",
"tsubo",
"m3",
"ft3",
"yd3",
"number",
"item",
"set",
"unknown",
"tatami",
"jo",
"jou",
"畳",
"帖"
],
"type": "string"
},
"label": {
"type": "string",
"maxLength": 180,
"minLength": 1,
"description": "Human-readable work label in the conversation language. Keep literal drawing wording in sourceReference."
},
"location": {
"type": "string",
"maxLength": 180,
"minLength": 1
},
"quantity": {
"type": "number",
"maximum": 1000000,
"exclusiveMinimum": 0
},
"elementId": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$",
"description": "Stable neutral ID for the same physical element across pages/views, e.g. window_W1. One priced observation per element/role/change stage; cite other views in its reference."
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"tatamiSize": {
"enum": [
"listing",
"edoma",
"kyoma",
"chukyoma",
"danchima"
],
"type": "string",
"description": "For tatami area only: use a supplied mat convention; otherwise use the approximate listing convention. Physical mat counts use item/number, not an area unit."
},
"changeState": {
"enum": [
"existing_to_remain",
"demolish",
"modify",
"new",
"temporary",
"unknown"
],
"type": "string"
},
"documentTag": {
"type": "string",
"pattern": "^D[1-9]\\d?$",
"description": "Neutral document tag, e.g. D1. Do not send a filename, address or customer name."
},
"pricingRole": {
"enum": [
"project_external_footprint_area",
"building_external_footprint_area",
"internal_floor_area",
"project_floor_area",
"building_floor_area",
"demolition_area",
"gross_external_wall_area",
"external_wall_area",
"facing_brickwork_area",
"common_brickwork_area",
"dense_concrete_blockwork_area",
"lightweight_thermal_blockwork_area",
"render_area",
"internal_wall_area",
"roof_area",
"rooflight_area",
"window_area",
"coloured_upvc_window_area",
"specialist_window_area",
"aluminium_sliding_door_area",
"oversized_aluminium_sliding_door_area",
"premium_aluminium_sliding_door_area",
"opening_area",
"plaster_surface_area",
"decoration_surface_area",
"screed_area",
"ground_floor_build_up_area",
"floor_covering_area",
"patio_area",
"paving_area",
"landscaping_area",
"scaffold_area",
"timber_frame_wall_area",
"cladding_area",
"project_perimeter",
"building_perimeter",
"building_height",
"foundation_length",
"drainage_length",
"data_cable_length",
"refrigerant_route_length",
"dropped_kerb_length",
"front_wall_length",
"excavation_volume",
"foundation_concrete_volume",
"demolition_item_count",
"structural_steel_count",
"rooflight_count",
"window_count",
"opening_count",
"external_door_count",
"internal_door_count",
"carpentry_item_count",
"plumbing_point_count",
"boiler_count",
"hot_water_cylinder_count",
"radiator_count",
"electrical_point_count",
"data_security_point_count",
"consumer_unit_count",
"ev_charger_count",
"hvac_unit_count",
"kitchen_count",
"bathroom_wc_count",
"gate_count",
"welfare_unit_count",
"site_office_count",
"skip_count",
"lifting_equipment_count",
"excavation_plant_count",
"cutting_equipment_count",
"none"
],
"type": "string"
},
"scopeEntity": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$",
"description": "Stable separate building/scope ID. For main residential pricing use whole_home for whole-home renovation, new_home for a new house, home_addition/rear_extension for an addition, kitchen or bathroom for a single-room remodel. Keep garages, annexes and separate buildings separate; do not invent a primary-scope label or merge areas."
},
"workPackage": {
"enum": [
"preliminaries",
"site_setup_hire",
"demolition",
"groundworks",
"foundations",
"drainage_utilities",
"brick_blockwork",
"structural",
"roofing",
"windows_doors",
"carpentry",
"plumbing",
"mechanical_hvac",
"electrical",
"data_security",
"plastering",
"decoration",
"flooring",
"kitchen",
"bathroom_wc",
"external_works",
"landscaping",
"other"
],
"type": "string"
},
"conflictGroup": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"evidenceState": {
"enum": [
"confirmed",
"partial"
],
"type": "string"
},
"sourceReference": {
"type": "string",
"maxLength": 240,
"minLength": 1,
"description": "Drawing detail, dimension string or schedule row supporting this item; omit personal information."
},
"scaleCalibration": {
"type": "object",
"required": [
"referenceLengthM",
"referenceLengthPixels",
"sourceReference"
],
"properties": {
"sourceReference": {
"type": "string",
"maxLength": 240,
"minLength": 1
},
"referenceLengthM": {
"type": "number",
"maximum": 10000,
"exclusiveMinimum": 0
},
"referenceLengthPixels": {
"type": "number",
"maximum": 100000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"calculationInputs": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"unit",
"sourceReference"
],
"properties": {
"key": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"unit": {
"enum": [
"m",
"mm",
"cm",
"ft",
"in",
"yd",
"m2",
"sq_m",
"ft2",
"sq_ft",
"yd2",
"tsubo",
"m3",
"ft3",
"yd3",
"number",
"item",
"set",
"unknown",
"tatami",
"jo",
"jou",
"畳",
"帖"
],
"type": "string"
},
"label": {
"type": "string",
"maxLength": 180,
"minLength": 1
},
"value": {
"type": "number",
"maximum": 1000000,
"minimum": 0
},
"factor": {
"type": "number",
"maximum": 1,
"minimum": -1
},
"feetInches": {
"type": "object",
"required": [
"feet",
"inches"
],
"properties": {
"feet": {
"type": "integer",
"maximum": 100000,
"minimum": 0
},
"inches": {
"type": "number",
"minimum": 0,
"exclusiveMaximum": 12
}
},
"additionalProperties": false
},
"sourceReference": {
"type": "string",
"maxLength": 240,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 20
},
"calculationRecipe": {
"enum": [
"none",
"rectangle_area",
"rectangular_prism_volume",
"linear_sum",
"count_length",
"net_area",
"count_area"
],
"type": "string"
},
"constructionStage": {
"enum": [
"first_fix",
"second_fix",
"whole_trade",
"unknown"
],
"type": "string"
},
"measurementMethod": {
"enum": [
"stated",
"dimensioned",
"counted",
"calculated",
"scaled",
"estimated"
],
"type": "string"
},
"parentScopeEntity": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$",
"description": "Optional explicitly evidenced containing scope, e.g. kitchen inside whole_home. Supply only when the drawing/brief establishes containment. Keep separate buildings unparented. Never use this to force unrelated floor areas into the main project."
}
},
"additionalProperties": false
},
"maxItems": 200
},
"unresolvedItems": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"sourceReference",
"description",
"scopeEntity",
"workPackage",
"kind",
"inferenceBasis",
"blocking"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"kind": {
"enum": [
"missing_information",
"scope_conflict",
"possible_omission",
"possible_exclusion",
"knock_on",
"conditional_requirement",
"unmeasurable_scope",
"brief_requirement",
"unpriced_scope"
],
"type": "string"
},
"page": {
"type": "integer",
"maximum": 1000,
"minimum": 1
},
"blocking": {
"type": "boolean"
},
"sourceKind": {
"enum": [
"drawing",
"user_brief"
],
"type": "string",
"default": "drawing"
},
"description": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Human-readable issue in the conversation language; preserve literal evidence in sourceReference."
},
"documentTag": {
"type": "string",
"pattern": "^D[1-9]\\d?$",
"description": "Neutral document tag, e.g. D1. Do not send a filename, address or customer name."
},
"scopeEntity": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"workPackage": {
"enum": [
"preliminaries",
"site_setup_hire",
"demolition",
"groundworks",
"foundations",
"drainage_utilities",
"brick_blockwork",
"structural",
"roofing",
"windows_doors",
"carpentry",
"plumbing",
"mechanical_hvac",
"electrical",
"data_security",
"plastering",
"decoration",
"flooring",
"kitchen",
"bathroom_wc",
"external_works",
"landscaping",
"other"
],
"type": "string"
},
"conflictGroup": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"inferenceBasis": {
"type": "string",
"maxLength": 500,
"minLength": 1
},
"sourceReference": {
"type": "string",
"maxLength": 240,
"minLength": 1,
"description": "Drawing detail, dimension string or schedule row supporting this item; omit personal information."
},
"relatedObservationIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"maxItems": 30
}
},
"additionalProperties": false
},
"maxItems": 100
},
"reviewedObservationIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{1,80}$"
},
"maxItems": 200,
"description": "Only IDs the user explicitly checked against the source; never mark an AI reading as user reviewed."
}
},
"description": "Structured analysis performed by the host on the user's attachments. No file URLs, file bytes, account IDs or extraction API calls are accepted.",
"additionalProperties": false
},
"language": {
"type": "string",
"pattern": "^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$",
"maxLength": 35,
"description": "Card and follow-up language from the conversation, e.g. fr-CA, es, de, it, pt, ja or hi. English fallback for unsupported languages. Never infer country, currency or units from language."
},
"ukDetails": {
"type": "object",
"properties": {
"extras": {
"type": "array",
"items": {
"enum": [
"underfloor-heating",
"glazing-upgrade",
"level-access-sliders",
"rooflights"
],
"type": "string"
},
"default": [],
"maxItems": 8,
"description": "Only explicitly requested extension extras. Where a researched local construction benchmark already covers an item, it is included once without an extra charge. Otherwise existing provisional app allowances apply. Choose one glazing upgrade. UFH excludes the heat pump. Do not substitute whole-house heating, fencing or landscaping packages for a small requested item."
},
"unpricedWork": {
"type": "array",
"items": {
"enum": [
"heat-pump",
"air-conditioning",
"drainage-alterations",
"reclaimed-brickwork",
"tree-removal",
"external-tap",
"patio",
"side-paving",
"side-gate",
"outside-lighting-data",
"asbestos-survey",
"professional-fees",
"leasehold-consent",
"conservation-conditions",
"utility-supply",
"consumer-unit-check"
],
"type": "string"
},
"default": [],
"maxItems": 20,
"description": "Requested or conditional work outside these allowances. Retain these items without inventing a price. Internal kitchen service connections do not establish a new utility-provider connection."
},
"rooflightCount": {
"type": "integer",
"maximum": 8,
"minimum": 1,
"description": "Known rooflight count only. Do not guess; the local construction benchmark includes one standard unit."
}
},
"description": "GB extensions only. Optional requested extras and work still to price, read from the user's brief. Existing kitchen/steel/access inputs keep their own allowance and must not be duplicated. Unknown items stay unpriced. No extra form steps.",
"additionalProperties": false
},
"usDetails": {
"type": "object",
"properties": {
"storeys": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"kitchens": {
"type": "integer",
"maximum": 5,
"minimum": 0
},
"bathrooms": {
"type": "integer",
"maximum": 12,
"minimum": 0
},
"workExtent": {
"enum": [
"refresh",
"replace",
"reconfigure"
],
"type": "string",
"description": "Optional US amount of work, separate from finish quality: refresh keeps main fitout; replace is full replacement; reconfigure changes layout/services. Send only facts stated in the conversation."
},
"locationCost": {
"enum": [
"typical",
"high_cost_metro",
"rural"
],
"type": "string",
"description": "Optional explicit US setting. Never infer rural or typical from a state/ZIP alone. Adjustments are broad model assumptions, not city quotes."
}
},
"description": "US only, optional scope facts. Never ask the user to complete a form. Missing details widen the estimate. Kitchen/bathroom jobs cover one room; counts are for whole-home/addition/new-home scope.",
"additionalProperties": false
},
"localScope": {
"type": "object",
"properties": {
"access": {
"enum": [
"straightforward",
"constrained",
"remote"
],
"type": "string"
},
"storeys": {
"type": "integer",
"maximum": 8,
"minimum": 1
},
"bedrooms": {
"type": "integer",
"maximum": 12,
"minimum": 1
},
"kitchens": {
"type": "integer",
"maximum": 5,
"minimum": 0
},
"roomSize": {
"enum": [
"compact",
"typical",
"large"
],
"type": "string"
},
"areaBasis": {
"enum": [
"gross_floor_area",
"internal_floor_area",
"living_floor_area"
],
"type": "string",
"description": "AU uses gross floor area including covered unenclosed space; known internal/living area retains its measurement and widens an inferred GFA allowance. DE uses living floor area (Wohnfläche); gross area uses a wider guide and is never asserted equivalent. Manufacturer examples require the stated living area."
},
"bathrooms": {
"type": "integer",
"maximum": 10,
"minimum": 0
},
"laundries": {
"type": "integer",
"maximum": 5,
"minimum": 0
},
"roomCount": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "AU/NZ/IE kitchen or bathroom work only: actual rooms being renovated, never inferred from floor area or combined bathroom/WC counts."
},
"foundation": {
"enum": [
"slab",
"basement",
"timber_piles",
"engineered_piles"
],
"type": "string",
"description": "DE slab/basement; NZ slab/timber piles/engineered piles. Ordinary baseline included once; foundation and adverse-ground allowances overlap. DE basement fitting out is separate."
},
"roomExtent": {
"enum": [
"refresh",
"replace"
],
"type": "string",
"description": "AU/NZ/IE room work: cosmetic refresh or replacement of fittings and finishes. Layout/service changes use workDetails.serviceRelocation; do not count ordinary installation twice."
},
"houseDesign": {
"enum": [
"project_home",
"custom_home",
"prefabricated_home"
],
"type": "string"
},
"extensionUse": {
"enum": [
"dry_room",
"family_living",
"wet_area"
],
"type": "string",
"description": "Work scope, not finish level. wet_area includes kitchen/bathroom work."
},
"propertyType": {
"enum": [
"detached_house",
"apartment"
],
"type": "string"
},
"energyUpgrade": {
"type": "boolean"
},
"extensionForm": {
"enum": [
"rear",
"side",
"wraparound"
],
"type": "string",
"description": "IE: rear, side or wraparound; affects the guide. Send total floor area across all storeys, not the footprint."
},
"siteConditions": {
"enum": [
"ordinary",
"sloping",
"difficult_ground",
"liquefaction"
],
"type": "string"
},
"hazardProtection": {
"enum": [
"ordinary",
"bushfire",
"cyclone",
"seismic"
],
"type": "string"
},
"wallConstruction": {
"enum": [
"weatherboard",
"brick_veneer",
"full_brick"
],
"type": "string",
"description": "AU new homes only: select the actual wall construction, matched to BMT house type/storeys/finish. Unknown uses the existing construction envelope."
},
"primaryConstruction": {
"enum": [
"masonry",
"timber_frame"
],
"type": "string",
"description": "DE only: masonry or timber-frame house; timber comparison widens a provisional native-EUR guide, not a calibrated quote."
},
"accessAlreadyIncluded": {
"type": "boolean"
},
"siteCostsAlreadyIncluded": {
"type": "boolean"
},
"protectionAlreadyIncluded": {
"type": "boolean"
}
},
"description": "AU/NZ/IE/DE only. Send confirmed facts; never copy provisional assumptions as user answers. AU uses separate project/custom and one/two-storey house anchors, plus counted extension fitout. NZ wet-area extensions count the first standard wet room once; additional declared rooms use local references. IE uses a fixed Dublin bucket only for matching scope; other extensions use a broader Irish build guide. DE has a broad new-home guide; named manufacturer examples are never scaled to the user's area.",
"additionalProperties": false
},
"regionCode": {
"type": "string",
"pattern": "^[A-Z0-9-]{1,12}$",
"description": "GB extensions: use a stated pricing-region code such as LONDON or NW when no outward postcode was supplied; never invent a postcode. AU new-home city: SYD/MEL/BNE/CBR/ADL/PER/HBA/CNS/DRW. AU extensions are national. NZ national guides; AKL/CAN/QLDC/OTA have selected home anchors; Auckland extensions have their own source. IE: DUB retains a 25–35 m² rear-extension reference; other extension sizes/forms/regions use wider Irish builder guides. DE: a broad native-EUR new-house guide; an explicitly matching prefab bungalow can show a manufacturer example (mainland only). FR new homes: ARA/BFC/BRE/CVL/COR/GES/HDF/IDF/NOR/NAQ/OCC/PDL/PAC, FR- prefix accepted; renovation has no city factors. ES broad region. JP: JP-01 through JP-47 or CAPITAL/KINKI/TOKAI/OTHER. CA: province/territory code, e.g. ON/BC/QC. Ontario custom-home anchors extrapolate broadly elsewhere. IN accepts state/UT codes such as IN-KA, IN-AS, IN-HP; these select jurisdiction, not an exact state cost index. US uses state. Do not infer a city from a state or send an address."
},
"worksLevel": {
"enum": [
"budget",
"standard",
"premium",
"luxury"
],
"type": "string",
"description": "Level of materials, finishes and detailing: Budget, Standard, Premium or Luxury. US/FR/ES/CA/JP/IN Luxury returns a wide rough starting range, not a ceiling; bespoke details need individual pricing. Other markets retain their published reference limits. This does not change the amount of work."
},
"workDetails": {
"type": "object",
"properties": {
"access": {
"enum": [
"straightforward",
"constrained",
"stairs_only"
],
"type": "string"
},
"occupied": {
"type": "boolean"
},
"liftProtection": {
"type": "boolean"
},
"structuralWork": {
"type": "boolean"
},
"finalDecoration": {
"type": "boolean"
},
"serviceRelocation": {
"type": "boolean"
},
"structuralOpening": {
"type": "boolean"
},
"utilityConnections": {
"type": "boolean"
}
},
"description": "Optional extra scope for supported overseas work: an occupied home, additional service relocation, lift/shared-area protection, an enlarged extension opening, excluded German painting/flooring, or physical new-home utility connections. ES also accepts access restrictions and whole-home structuralWork. Send only explicitly requested facts. Ordinary installation is already in the country baseline. Never apply these to UK work or copy assumptions into answers; omit extras already included. Missing answers never block a price.",
"additionalProperties": false
},
"displayUnits": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"description": "Preferred quantity display, independent of pricing market/currency. All scope area fields use scope.areaUnit; drawing quantities each carry their own unit."
},
"indiaDetails": {
"type": "object",
"properties": {
"city": {
"enum": [
"bengaluru",
"delhi"
],
"type": "string",
"description": "IN new RCC home only: own local builder package anchors. City and supplied state must agree. Rural masonry/shelters use their own local-method model, never a metro package."
},
"access": {
"enum": [
"normal",
"remote_road",
"no_vehicle_access",
"seasonal_or_island"
],
"type": "string"
},
"hazard": {
"enum": [
"ordinary",
"enhanced_seismic",
"cyclone_exposed",
"flood_exposed"
],
"type": "string"
},
"climate": {
"enum": [
"ordinary",
"hot_dry",
"humid_monsoon",
"cold_snow"
],
"type": "string"
},
"landUse": {
"enum": [
"residential",
"agricultural",
"protected_or_tribal",
"unknown"
],
"type": "string"
},
"setting": {
"enum": [
"rural",
"town",
"metro",
"high_cost_metro"
],
"type": "string"
},
"workExtent": {
"enum": [
"refresh",
"partial",
"full"
],
"type": "string"
},
"construction": {
"enum": [
"vernacular_hut",
"rural_masonry",
"rcc_home"
],
"type": "string"
},
"siteConditions": {
"enum": [
"ordinary",
"difficult_ground"
],
"type": "string"
},
"hazardAlreadyIncluded": {
"type": "boolean"
},
"climateAlreadyIncluded": {
"type": "boolean"
}
},
"description": "IN only: optional known construction/site facts. Simple local-material hut, durable rural masonry and RCC home have distinct INR models. Rural never implies poor road access. State alone does not prove climate/hazard. Ordinary construction is counted once; only stated extra protection is added. Missing facts give a rough price. Rates/allowances are estimates, not safety certification or state cost schedules.",
"additionalProperties": false
},
"japanDetails": {
"type": "object",
"properties": {
"access": {
"enum": [
"normal",
"remote_road",
"island_ferry",
"air_or_seasonal"
],
"type": "string"
},
"layout": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Stated Japanese layout, e.g. 1R, 1K, 1DK, 1LDK, 2LDK, 2SLDK or 2LDK+S. Optional; unfamiliar labels do not block the estimate. The number counts habitable rooms excluding K/DK/LDK; S/N denotes service/storage rooms, not certified bedrooms. Never derive floor area, bathrooms, replacement mat counts or the number of rooms being renovated from layout alone."
},
"climate": {
"enum": [
"temperate",
"cold",
"heavy_snow",
"hot_humid"
],
"type": "string"
},
"kitchens": {
"type": "integer",
"maximum": 5,
"minimum": 0,
"description": "JP selected work: complete kitchens supplied and fitted, counted once instead of a whole-home area-rate allowance."
},
"condition": {
"enum": [
"fair",
"poor"
],
"type": "string"
},
"roomCount": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Kitchen/bathroom renovation only: number of rooms the user wants worked on. Default one if unknown. Do not infer bathrooms from a combined bathroom/WC drawing count or building floor area."
},
"structure": {
"enum": [
"timber",
"steel",
"reinforced_concrete"
],
"type": "string"
},
"landTenure": {
"enum": [
"owned",
"leasehold"
],
"type": "string"
},
"lightCount": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "JP selected work: fitting installation at existing power points. User-supplied ordinary fitting; new wiring or luxury chandelier work excluded."
},
"vacantHome": {
"type": "boolean"
},
"workExtent": {
"enum": [
"refresh",
"partial",
"full",
"skeleton",
"selected"
],
"type": "string"
},
"airconCount": {
"type": "integer",
"maximum": 20,
"minimum": 0,
"description": "JP selected work: wall-mounted indoor/outdoor pairs supplied and fitted; existing balcony or ground-level outdoor location. Central systems, crane/high-access work and new circuits are separate."
},
"seismicWork": {
"enum": [
"assess",
"retrofit",
"enhanced_new_build"
],
"type": "string"
},
"tatamiCount": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "JP selected work only: actual full-size mats being replaced, not room-area tatami. Never derive this count from layout or floor area."
},
"bathroomType": {
"enum": [
"unit_bath",
"conventional_bath"
],
"type": "string",
"description": "Existing bathroom type; conventional tiled-bath conversion differs from replacing a unit bath. Unknown stays optional."
},
"flooringArea": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "JP selected work: wooden floor area in m2. Exclude the area receiving new tatami."
},
"propertyType": {
"enum": [
"detached_house",
"apartment"
],
"type": "string"
},
"wallpaperArea": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "JP selected work: wall/ceiling surface area in m2 being repapered; never substitute floor area."
},
"constructionEra": {
"enum": [
"before_1981",
"1981_to_2000",
"after_2000"
],
"type": "string"
},
"climateAlreadyIncluded": {
"type": "boolean"
},
"seismicAlreadyIncluded": {
"type": "boolean"
}
},
"description": "JP only: optional facts from the user/drawings about new homes, renovations and vacant homes (akiya). Existing age or timber construction never certifies earthquake safety. Ordinary new-build seismic/energy provisions are included once; explicit retrofit/enhancement is separate. Leasehold land premiums, ground rent and consent costs stay outside building work. Unknown facts still return a rough price.",
"additionalProperties": false
},
"postcodeArea": {
"type": "string",
"pattern": "^[A-Z]{1,2}\\d[A-Z\\d]?$",
"description": "GB outward postcode only, for example BS3. Never send a full address."
},
"projectDetails": {
"type": "object",
"properties": {
"city": {
"enum": [
"toronto_gta",
"vancouver"
],
"type": "string",
"description": "CA cosmetic work only: explicit Toronto/GTA (ON) or Vancouver (BC) reference, never a province-wide multiplier."
},
"access": {
"enum": [
"straightforward",
"constrained",
"remote_road",
"seasonal_or_air"
],
"type": "string"
},
"climate": {
"enum": [
"ordinary",
"cold_exposed",
"hot_exposed",
"severe"
],
"type": "string"
},
"hotWater": {
"type": "boolean",
"description": "FR air-to-water heat pump only: also supplies domestic hot water? Unknown retains both source possibilities."
},
"foundation": {
"enum": [
"standard",
"basement",
"engineered"
],
"type": "string"
},
"workExtent": {
"enum": [
"refresh",
"partial",
"full"
],
"type": "string"
},
"windowCount": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "FR/ES PVC window replacement only: actual windows replaced in existing openings. Never derive the count from floor area."
},
"floorRemoval": {
"type": "boolean",
"description": "Vancouver cosmetic flooring only: remove existing flooring? Unknown widens the removal allowance; stairs and major subfloor repair remain separate."
},
"propertyType": {
"enum": [
"detached_house",
"apartment"
],
"type": "string",
"description": "FR/ES/CA renovation: apartment/private interior versus detached home. Changes relevant questions and scope boundaries; common-building exterior/structure is separate."
},
"refreshScope": {
"enum": [
"paint",
"flooring",
"paint_and_flooring"
],
"type": "string",
"description": "CA cosmetic refresh only: installed painting, flooring, or both. Unknown assumes both; full/partial renovations use their own scope."
},
"siteConditions": {
"enum": [
"ordinary",
"difficult_ground",
"permafrost"
],
"type": "string"
},
"envelopeUpgrade": {
"type": "boolean"
},
"heatPumpCapacity": {
"enum": [
"under_5",
"from_5_to_7",
"over_7"
],
"type": "string",
"description": "FR air-to-water heat pump only: installer-confirmed kW band. Do not infer capacity from floor area."
},
"structuralRetrofit": {
"type": "boolean"
},
"primaryConstruction": {
"enum": [
"timber",
"masonry",
"concrete",
"other_unknown"
],
"type": "string"
},
"accessAlreadyIncluded": {
"type": "boolean"
},
"envelopeAlreadyIncluded": {
"type": "boolean"
},
"siteCostsAlreadyIncluded": {
"type": "boolean"
},
"structureAlreadyIncluded": {
"type": "boolean"
}
},
"description": "FR/CA: optional declared work extent, access, climate, ground, construction and upgrade facts. AlreadyIncluded flags suppress the corresponding allowance only when the supplied scope already contains that work. Ordinary local code/climate provisions are already in the base. Never infer permafrost from country or remote access from rural location. ES accepts workExtent only. Missing details widen the price; never require a questionnaire.",
"additionalProperties": false
}
},
"additionalProperties": false
}Calculate the established GB/US Guide Price contract with its required project inputs, when explicitly requested or used with guide comparisons. For the conversational building budget, other countries or drawings, use calculate_building_work. Returns the original guide card and does not read files, save projects or issue quotes.
| Argument | Type | Description |
|---|---|---|
| scope | object | Country-specific project scope. Use UK fields for GB and US fields for US; do not invent unanswered values. |
| state | string | US two-letter state or DC code. |
| country | string | Country pricing policy. Use GB for Great Britain or US for the United States. If omitted, GB is used for backwards compatibility. |
| jobType | string | Residential project type supported by the selected country policy. |
| zipCode | string | Optional US five-digit ZIP code. Never send a street address. |
| postcodeArea | string | GB outward postcode only, for example BS3. Never send a full address. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"scope": {
"type": "object",
"default": {},
"properties": {
"access": {
"enum": [
"straightforward",
"constrained",
"remote"
],
"type": "string"
},
"areaUnit": {
"enum": [
"sq_m",
"sq m",
"m2",
"m^2",
"m²",
"sqm",
"square_metres",
"square_meters",
"square metres",
"square meters",
"sq_ft",
"sq ft",
"ft2",
"ft^2",
"ft²",
"sqft",
"sf",
"square_feet",
"square feet"
],
"type": "string",
"description": "Unit for approximateSize. GB defaults to sq_m and US defaults to sq_ft. Common m2 and ft2 forms are accepted."
},
"doorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"roomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"scopeBand": {
"enum": [
"Lean",
"Balanced",
"Expanded"
],
"type": "string",
"description": "Breadth of work: Lean is a reduced scope, Balanced is a normal complete scope, and Expanded is a broader scope. This is not a confidence or risk setting."
},
"finishBand": {
"enum": [
"Builder grade",
"Good domestic",
"Premium domestic"
],
"type": "string",
"description": "Finish specification: Builder grade is budget, Good domestic is a normal quality domestic finish, and Premium domestic is higher specification."
},
"foundation": {
"enum": [
"slab",
"crawl_space",
"basement",
"existing_not_applicable"
],
"type": "string"
},
"scopeLevel": {
"enum": [
"defined",
"typical",
"expanded"
],
"type": "string"
},
"finishLevel": {
"enum": [
"builder_grade",
"standard",
"premium"
],
"type": "string"
},
"urgencyBand": {
"enum": [
"Flexible",
"Soon",
"Urgent"
],
"type": "string"
},
"windowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"accessIssues": {
"type": "boolean"
},
"availability": {
"enum": [
"Ready now",
"2–4 weeks",
"1–2 months",
"3+ months",
"6+ months",
"Next year"
],
"type": "string"
},
"basementArea": {
"type": "number",
"minimum": 0
},
"bedroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"kitchenScope": {
"enum": [
"No kitchen work",
"Kitchen allowance",
"New kitchen: supply and install",
"New kitchen: install only",
"Client-supplied kitchen, builder prepares room",
"Kitchen / diner works"
],
"type": "string",
"description": "Kitchen work included anywhere in this project. If Kitchen work is also selected as an additional internal package, this scope defines that same kitchen allowance; do not describe it as a second kitchen."
},
"propertyForm": {
"enum": [
"Flat",
"Maisonette",
"Terraced house",
"Semi-detached house",
"Detached house",
"Barn / agricultural building",
"Other / not sure",
"Commercial office",
"Office suite"
],
"type": "string",
"description": "Existing property type. Use only the user's answer; do not infer it from the project type."
},
"vatTreatment": {
"enum": [
"unconfirmed",
"standard_20",
"qualifying_conversion_5",
"qualifying_empty_home_5",
"qualifying_new_dwelling_0",
"mixed"
],
"type": "string",
"description": "Supplier-confirmed VAT treatment of the priced construction scope. Never infer zero/reduced rating from a project label or registration. Mixed-rate work stays unconfirmed until split; separate fees/goods may differ."
},
"basementScope": {
"enum": [
"Existing basement refurbishment",
"Existing cellar conversion",
"Lower / enlarge existing cellar",
"New basement beneath extension",
"New basement beneath existing house"
],
"type": "string"
},
"bathroomScope": {
"enum": [
"No bathroom work",
"Bathroom allowance",
"New bathroom: supply and install",
"New bathroom: install only",
"Ensuite / shower room",
"WC / cloakroom"
],
"type": "string",
"description": "Bathroom work included anywhere in this project. If Bathroom work is also selected as an additional internal package, this scope defines that same bathroom allowance; do not describe it as a second bathroom."
},
"parkingSpaces": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"basementAccess": {
"enum": [
"Direct external access",
"Restricted side / rear access",
"Removal through house",
"Highly constrained urban access"
],
"type": "string"
},
"lowerGroundUse": {
"enum": [
"Part of the main home",
"Dependent annexe",
"Separate dwelling / unit"
],
"type": "string"
},
"propertyPeriod": {
"enum": [
"Not sure",
"Modern / new build",
"1970s-1990s",
"1950s-1960s",
"1930s-1940s",
"Victorian / Edwardian",
"Older / period property",
"Listed / heritage"
],
"type": "string"
},
"approximateSize": {
"type": "number",
"maximum": 15000,
"description": "Project floor area. Defaults to square feet for US work; set areaUnit when the user supplied square metres.",
"exclusiveMinimum": 0
},
"hvacReplacement": {
"type": "boolean"
},
"lowerGroundArea": {
"type": "number",
"minimum": 0
},
"basementHeadroom": {
"enum": [
"No floor lowering",
"Minor lowering up to 300 mm",
"Lowering 300-600 mm",
"Major lowering over 600 mm",
"Not confirmed"
],
"type": "string"
},
"externalWallArea": {
"type": "number",
"minimum": 0
},
"lowerGroundScope": {
"enum": [
"Refresh existing finished rooms",
"Refurbish existing habitable floor",
"Convert existing ancillary / storage rooms"
],
"type": "string"
},
"barnStructureType": {
"enum": [
"Not sure",
"Traditional timber / oak frame",
"Steel portal frame",
"Stone / brick load-bearing walls",
"Mixed structure"
],
"type": "string"
},
"basementOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"lowerGroundAccess": {
"enum": [
"Direct external access",
"Access through main home",
"Constrained access"
],
"type": "string"
},
"planningStageOnly": {
"type": "boolean"
},
"structuralChanges": {
"type": "boolean"
},
"basementStairScope": {
"enum": [
"Existing stair retained",
"Alter existing stair / opening",
"New basement staircase"
],
"type": "string"
},
"complexGroundworks": {
"type": "boolean"
},
"occupiedDuringWork": {
"type": "boolean"
},
"refurbishmentScope": {
"enum": [
"General refurbishment",
"Mixed room upgrade",
"Decoration only",
"External walls / insulation",
"Windows / doors / glazing",
"Kitchen works",
"Bathroom works",
"Kitchen and bathroom works",
"Whole property refurbishment"
],
"type": "string"
},
"basementGroundwater": {
"enum": [
"No known issue",
"Possible / high water table",
"Known groundwater / water ingress",
"Not confirmed"
],
"type": "string"
},
"basementIntendedUse": {
"enum": [
"Storage / utility",
"Habitable room(s)",
"Bedroom / bathroom accommodation",
"Kitchen / living accommodation",
"Separate dwelling / unit"
],
"type": "string"
},
"commercialDataScope": {
"enum": [
"No data / comms work",
"Data points and Wi-Fi alterations",
"New structured cabling, Wi-Fi and comms cabinet"
],
"type": "string"
},
"commercialHvacScope": {
"enum": [
"Retain existing HVAC",
"Alter existing AC / ventilation",
"New or substantially replaced HVAC"
],
"type": "string"
},
"commercialOccupancy": {
"enum": [
"Vacant during works",
"Phased / partly occupied",
"Fully occupied live office",
"Out-of-hours works only"
],
"type": "string"
},
"decoratingDoorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"lowerGroundDaylight": {
"enum": [
"Existing windows retained",
"Alter or enlarge openings",
"New lightwell / external excavation",
"Not confirmed"
],
"type": "string"
},
"lowerGroundExposure": {
"enum": [
"Mostly above ground",
"Split-level / partly below ground",
"Mostly below ground"
],
"type": "string"
},
"lowerGroundMoisture": {
"enum": [
"Dry / no known issue",
"Local damp repairs",
"Known damp / waterproofing work",
"Not confirmed"
],
"type": "string"
},
"lowerGroundServices": {
"enum": [
"Existing services retained",
"Alter existing services",
"New kitchen / bathroom services",
"Independent services / meters"
],
"type": "string"
},
"primaryConstruction": {
"enum": [
"wood_frame",
"masonry_concrete",
"other_unknown"
],
"type": "string"
},
"includesBasementWork": {
"type": "boolean"
},
"lowerGroundOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"basementDrainageScope": {
"enum": [
"Existing gravity drainage retained",
"Drainage alterations",
"Pumped drainage required",
"Not confirmed"
],
"type": "string"
},
"basementWaterproofing": {
"enum": [
"Existing dry system retained",
"Local repairs / upgrades",
"Full tanking system",
"Cavity-drain membrane and pumps",
"Not confirmed"
],
"type": "string"
},
"commercialFloorAccess": {
"enum": [
"Ground / first floor",
"Upper floors with goods lift",
"Upper floors with passenger lift only",
"Upper floors by stairs only",
"Multiple floors"
],
"type": "string"
},
"decoratingWindowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"refurbishmentPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12
},
"structuralSteelLikely": {
"type": "boolean"
},
"basementLightwellCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"combinedAdditionalSize": {
"type": "number",
"minimum": 0
},
"combinedPrimaryJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"refurbishmentCondition": {
"enum": [
"Good",
"Average",
"Poor",
"Damp / cracks / problematic"
],
"type": "string"
},
"refurbishmentPrepLevel": {
"enum": [
"Simple refresh",
"Normal prep",
"Heavy prep"
],
"type": "string"
},
"refurbishmentRoomState": {
"enum": [
"Empty",
"Partly furnished",
"Occupied"
],
"type": "string"
},
"basementUtilityIncluded": {
"type": "boolean"
},
"climateCodeRequirements": {
"type": "boolean"
},
"commercialWashroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"includesLowerGroundWork": {
"type": "boolean"
},
"basementBathroomIncluded": {
"type": "boolean"
},
"commercialAsbestosStatus": {
"enum": [
"Refurbishment survey clear",
"Management survey only",
"Survey required / not confirmed",
"Known asbestos constraints"
],
"type": "string"
},
"commercialBuildingAccess": {
"enum": [
"Standalone / direct street access",
"Shared building, straightforward access",
"Managed building / booked access",
"Constrained central-London access"
],
"type": "string"
},
"commercialLandlordStatus": {
"enum": [
"Approval confirmed / not needed",
"Licence to alter in progress",
"Approval not started",
"Not sure"
],
"type": "string"
},
"electricalServiceUpgrade": {
"type": "boolean"
},
"basementStructuralSupport": {
"enum": [
"No underpinning expected",
"Local structural support",
"Sequential underpinning",
"Piled / engineered support",
"Not confirmed"
],
"type": "string"
},
"combinedAdditionalJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"commercialElectricalScope": {
"enum": [
"Retain existing / minor electrical works",
"Lighting and small-power alterations",
"New lighting, power and floor-box layout"
],
"type": "string"
},
"commercialPartitionsScope": {
"enum": [
"Retain layout / minor making good",
"Some partitions and ceiling alterations",
"Extensive partitions and suspended ceilings"
],
"type": "string"
},
"refurbishmentFlooringArea": {
"type": "number",
"minimum": 0
},
"commercialKitchenetteCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"commercialWorkstationCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"additionalInternalWorksArea": {
"type": "number",
"minimum": 0,
"description": "Total floor area of existing rooms affected outside the main extension or loft, in the supplied area unit."
},
"commercialFireSecurityScope": {
"enum": [
"Existing systems retained",
"Fire-safety alterations and interfaces",
"Fire, access control, intercom and security package"
],
"type": "string"
},
"commercialFurnitureIncluded": {
"type": "boolean"
},
"refurbishmentDecoratingArea": {
"type": "number",
"minimum": 0
},
"refurbishmentPlasteringArea": {
"type": "number",
"minimum": 0
},
"hazardousMaterialRemediation": {
"type": "boolean"
},
"additionalInternalWorkPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12,
"description": "Packages in existing rooms outside the main extension or loft. Kitchen work and Bathroom work use kitchenScope and bathroomScope to define the same room allowance and are counted once."
},
"includesAdditionalInternalWorks": {
"type": "boolean",
"description": "True only when the project also changes existing internal rooms outside the main extension or loft."
}
},
"description": "Country-specific project scope. Use UK fields for GB and US fields for US; do not invent unanswered values.",
"additionalProperties": false
},
"state": {
"enum": [
"CT",
"ME",
"MA",
"NH",
"RI",
"VT",
"NJ",
"NY",
"PA",
"IN",
"IL",
"MI",
"OH",
"WI",
"IA",
"KS",
"MN",
"MO",
"NE",
"ND",
"SD",
"DE",
"DC",
"FL",
"GA",
"MD",
"NC",
"SC",
"VA",
"WV",
"AL",
"KY",
"MS",
"TN",
"AR",
"LA",
"OK",
"TX",
"AZ",
"CO",
"ID",
"MT",
"NV",
"NM",
"UT",
"WY",
"CA",
"OR",
"WA",
"AK",
"HI"
],
"type": "string",
"description": "US two-letter state or DC code."
},
"country": {
"enum": [
"GB",
"US"
],
"type": "string",
"description": "Country pricing policy. Use GB for Great Britain or US for the United States. If omitted, GB is used for backwards compatibility."
},
"jobType": {
"enum": [
"Combined project",
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Commercial office refurbishment",
"New kitchen",
"New bathroom",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"Lower-ground floor refurbishment",
"New build",
"home_addition",
"whole_home_remodel",
"kitchen_remodel",
"bathroom_remodel",
"attic_conversion",
"garage_conversion",
"basement_remodel",
"backyard_studio",
"new_home_construction"
],
"type": "string",
"description": "Residential project type supported by the selected country policy."
},
"zipCode": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "Optional US five-digit ZIP code. Never send a street address."
},
"postcodeArea": {
"type": "string",
"pattern": "^[A-Z]{1,2}\\d[A-Z\\d]?$",
"description": "GB outward postcode only, for example BS3. Never send a full address."
}
},
"additionalProperties": false
}Compare GB/US Guide Price scenarios when the user explicitly asks to compare alternatives within those existing policies. Returns the original comparison card and deltas. For other countries or drawing-based refinements, use calculate_building_work with each requested scenario. No foreign-rate conversion or saved-project access.
| Argument | Type | Description |
|---|---|---|
| baseline* | object | |
| scenarios* | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"baseline",
"scenarios"
],
"properties": {
"baseline": {
"type": "object",
"properties": {
"scope": {
"type": "object",
"default": {},
"properties": {
"access": {
"enum": [
"straightforward",
"constrained",
"remote"
],
"type": "string"
},
"areaUnit": {
"enum": [
"sq_m",
"sq m",
"m2",
"m^2",
"m²",
"sqm",
"square_metres",
"square_meters",
"square metres",
"square meters",
"sq_ft",
"sq ft",
"ft2",
"ft^2",
"ft²",
"sqft",
"sf",
"square_feet",
"square feet"
],
"type": "string",
"description": "Unit for approximateSize. GB defaults to sq_m and US defaults to sq_ft. Common m2 and ft2 forms are accepted."
},
"doorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"roomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"scopeBand": {
"enum": [
"Lean",
"Balanced",
"Expanded"
],
"type": "string",
"description": "Breadth of work: Lean is a reduced scope, Balanced is a normal complete scope, and Expanded is a broader scope. This is not a confidence or risk setting."
},
"finishBand": {
"enum": [
"Builder grade",
"Good domestic",
"Premium domestic"
],
"type": "string",
"description": "Finish specification: Builder grade is budget, Good domestic is a normal quality domestic finish, and Premium domestic is higher specification."
},
"foundation": {
"enum": [
"slab",
"crawl_space",
"basement",
"existing_not_applicable"
],
"type": "string"
},
"scopeLevel": {
"enum": [
"defined",
"typical",
"expanded"
],
"type": "string"
},
"finishLevel": {
"enum": [
"builder_grade",
"standard",
"premium"
],
"type": "string"
},
"urgencyBand": {
"enum": [
"Flexible",
"Soon",
"Urgent"
],
"type": "string"
},
"windowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"accessIssues": {
"type": "boolean"
},
"availability": {
"enum": [
"Ready now",
"2–4 weeks",
"1–2 months",
"3+ months",
"6+ months",
"Next year"
],
"type": "string"
},
"basementArea": {
"type": "number",
"minimum": 0
},
"bedroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"kitchenScope": {
"enum": [
"No kitchen work",
"Kitchen allowance",
"New kitchen: supply and install",
"New kitchen: install only",
"Client-supplied kitchen, builder prepares room",
"Kitchen / diner works"
],
"type": "string",
"description": "Kitchen work included anywhere in this project. If Kitchen work is also selected as an additional internal package, this scope defines that same kitchen allowance; do not describe it as a second kitchen."
},
"propertyForm": {
"enum": [
"Flat",
"Maisonette",
"Terraced house",
"Semi-detached house",
"Detached house",
"Barn / agricultural building",
"Other / not sure",
"Commercial office",
"Office suite"
],
"type": "string",
"description": "Existing property type. Use only the user's answer; do not infer it from the project type."
},
"vatTreatment": {
"enum": [
"unconfirmed",
"standard_20",
"qualifying_conversion_5",
"qualifying_empty_home_5",
"qualifying_new_dwelling_0",
"mixed"
],
"type": "string",
"description": "Supplier-confirmed VAT treatment of the priced construction scope. Never infer zero/reduced rating from a project label or registration. Mixed-rate work stays unconfirmed until split; separate fees/goods may differ."
},
"basementScope": {
"enum": [
"Existing basement refurbishment",
"Existing cellar conversion",
"Lower / enlarge existing cellar",
"New basement beneath extension",
"New basement beneath existing house"
],
"type": "string"
},
"bathroomScope": {
"enum": [
"No bathroom work",
"Bathroom allowance",
"New bathroom: supply and install",
"New bathroom: install only",
"Ensuite / shower room",
"WC / cloakroom"
],
"type": "string",
"description": "Bathroom work included anywhere in this project. If Bathroom work is also selected as an additional internal package, this scope defines that same bathroom allowance; do not describe it as a second bathroom."
},
"parkingSpaces": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"basementAccess": {
"enum": [
"Direct external access",
"Restricted side / rear access",
"Removal through house",
"Highly constrained urban access"
],
"type": "string"
},
"lowerGroundUse": {
"enum": [
"Part of the main home",
"Dependent annexe",
"Separate dwelling / unit"
],
"type": "string"
},
"propertyPeriod": {
"enum": [
"Not sure",
"Modern / new build",
"1970s-1990s",
"1950s-1960s",
"1930s-1940s",
"Victorian / Edwardian",
"Older / period property",
"Listed / heritage"
],
"type": "string"
},
"approximateSize": {
"type": "number",
"maximum": 15000,
"description": "Project floor area. Defaults to square feet for US work; set areaUnit when the user supplied square metres.",
"exclusiveMinimum": 0
},
"hvacReplacement": {
"type": "boolean"
},
"lowerGroundArea": {
"type": "number",
"minimum": 0
},
"basementHeadroom": {
"enum": [
"No floor lowering",
"Minor lowering up to 300 mm",
"Lowering 300-600 mm",
"Major lowering over 600 mm",
"Not confirmed"
],
"type": "string"
},
"externalWallArea": {
"type": "number",
"minimum": 0
},
"lowerGroundScope": {
"enum": [
"Refresh existing finished rooms",
"Refurbish existing habitable floor",
"Convert existing ancillary / storage rooms"
],
"type": "string"
},
"barnStructureType": {
"enum": [
"Not sure",
"Traditional timber / oak frame",
"Steel portal frame",
"Stone / brick load-bearing walls",
"Mixed structure"
],
"type": "string"
},
"basementOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"lowerGroundAccess": {
"enum": [
"Direct external access",
"Access through main home",
"Constrained access"
],
"type": "string"
},
"planningStageOnly": {
"type": "boolean"
},
"structuralChanges": {
"type": "boolean"
},
"basementStairScope": {
"enum": [
"Existing stair retained",
"Alter existing stair / opening",
"New basement staircase"
],
"type": "string"
},
"complexGroundworks": {
"type": "boolean"
},
"occupiedDuringWork": {
"type": "boolean"
},
"refurbishmentScope": {
"enum": [
"General refurbishment",
"Mixed room upgrade",
"Decoration only",
"External walls / insulation",
"Windows / doors / glazing",
"Kitchen works",
"Bathroom works",
"Kitchen and bathroom works",
"Whole property refurbishment"
],
"type": "string"
},
"basementGroundwater": {
"enum": [
"No known issue",
"Possible / high water table",
"Known groundwater / water ingress",
"Not confirmed"
],
"type": "string"
},
"basementIntendedUse": {
"enum": [
"Storage / utility",
"Habitable room(s)",
"Bedroom / bathroom accommodation",
"Kitchen / living accommodation",
"Separate dwelling / unit"
],
"type": "string"
},
"commercialDataScope": {
"enum": [
"No data / comms work",
"Data points and Wi-Fi alterations",
"New structured cabling, Wi-Fi and comms cabinet"
],
"type": "string"
},
"commercialHvacScope": {
"enum": [
"Retain existing HVAC",
"Alter existing AC / ventilation",
"New or substantially replaced HVAC"
],
"type": "string"
},
"commercialOccupancy": {
"enum": [
"Vacant during works",
"Phased / partly occupied",
"Fully occupied live office",
"Out-of-hours works only"
],
"type": "string"
},
"decoratingDoorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"lowerGroundDaylight": {
"enum": [
"Existing windows retained",
"Alter or enlarge openings",
"New lightwell / external excavation",
"Not confirmed"
],
"type": "string"
},
"lowerGroundExposure": {
"enum": [
"Mostly above ground",
"Split-level / partly below ground",
"Mostly below ground"
],
"type": "string"
},
"lowerGroundMoisture": {
"enum": [
"Dry / no known issue",
"Local damp repairs",
"Known damp / waterproofing work",
"Not confirmed"
],
"type": "string"
},
"lowerGroundServices": {
"enum": [
"Existing services retained",
"Alter existing services",
"New kitchen / bathroom services",
"Independent services / meters"
],
"type": "string"
},
"primaryConstruction": {
"enum": [
"wood_frame",
"masonry_concrete",
"other_unknown"
],
"type": "string"
},
"includesBasementWork": {
"type": "boolean"
},
"lowerGroundOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"basementDrainageScope": {
"enum": [
"Existing gravity drainage retained",
"Drainage alterations",
"Pumped drainage required",
"Not confirmed"
],
"type": "string"
},
"basementWaterproofing": {
"enum": [
"Existing dry system retained",
"Local repairs / upgrades",
"Full tanking system",
"Cavity-drain membrane and pumps",
"Not confirmed"
],
"type": "string"
},
"commercialFloorAccess": {
"enum": [
"Ground / first floor",
"Upper floors with goods lift",
"Upper floors with passenger lift only",
"Upper floors by stairs only",
"Multiple floors"
],
"type": "string"
},
"decoratingWindowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"refurbishmentPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12
},
"structuralSteelLikely": {
"type": "boolean"
},
"basementLightwellCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"combinedAdditionalSize": {
"type": "number",
"minimum": 0
},
"combinedPrimaryJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"refurbishmentCondition": {
"enum": [
"Good",
"Average",
"Poor",
"Damp / cracks / problematic"
],
"type": "string"
},
"refurbishmentPrepLevel": {
"enum": [
"Simple refresh",
"Normal prep",
"Heavy prep"
],
"type": "string"
},
"refurbishmentRoomState": {
"enum": [
"Empty",
"Partly furnished",
"Occupied"
],
"type": "string"
},
"basementUtilityIncluded": {
"type": "boolean"
},
"climateCodeRequirements": {
"type": "boolean"
},
"commercialWashroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"includesLowerGroundWork": {
"type": "boolean"
},
"basementBathroomIncluded": {
"type": "boolean"
},
"commercialAsbestosStatus": {
"enum": [
"Refurbishment survey clear",
"Management survey only",
"Survey required / not confirmed",
"Known asbestos constraints"
],
"type": "string"
},
"commercialBuildingAccess": {
"enum": [
"Standalone / direct street access",
"Shared building, straightforward access",
"Managed building / booked access",
"Constrained central-London access"
],
"type": "string"
},
"commercialLandlordStatus": {
"enum": [
"Approval confirmed / not needed",
"Licence to alter in progress",
"Approval not started",
"Not sure"
],
"type": "string"
},
"electricalServiceUpgrade": {
"type": "boolean"
},
"basementStructuralSupport": {
"enum": [
"No underpinning expected",
"Local structural support",
"Sequential underpinning",
"Piled / engineered support",
"Not confirmed"
],
"type": "string"
},
"combinedAdditionalJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"commercialElectricalScope": {
"enum": [
"Retain existing / minor electrical works",
"Lighting and small-power alterations",
"New lighting, power and floor-box layout"
],
"type": "string"
},
"commercialPartitionsScope": {
"enum": [
"Retain layout / minor making good",
"Some partitions and ceiling alterations",
"Extensive partitions and suspended ceilings"
],
"type": "string"
},
"refurbishmentFlooringArea": {
"type": "number",
"minimum": 0
},
"commercialKitchenetteCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"commercialWorkstationCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"additionalInternalWorksArea": {
"type": "number",
"minimum": 0,
"description": "Total floor area of existing rooms affected outside the main extension or loft, in the supplied area unit."
},
"commercialFireSecurityScope": {
"enum": [
"Existing systems retained",
"Fire-safety alterations and interfaces",
"Fire, access control, intercom and security package"
],
"type": "string"
},
"commercialFurnitureIncluded": {
"type": "boolean"
},
"refurbishmentDecoratingArea": {
"type": "number",
"minimum": 0
},
"refurbishmentPlasteringArea": {
"type": "number",
"minimum": 0
},
"hazardousMaterialRemediation": {
"type": "boolean"
},
"additionalInternalWorkPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12,
"description": "Packages in existing rooms outside the main extension or loft. Kitchen work and Bathroom work use kitchenScope and bathroomScope to define the same room allowance and are counted once."
},
"includesAdditionalInternalWorks": {
"type": "boolean",
"description": "True only when the project also changes existing internal rooms outside the main extension or loft."
}
},
"description": "Country-specific project scope. Use UK fields for GB and US fields for US; do not invent unanswered values.",
"additionalProperties": false
},
"state": {
"enum": [
"CT",
"ME",
"MA",
"NH",
"RI",
"VT",
"NJ",
"NY",
"PA",
"IN",
"IL",
"MI",
"OH",
"WI",
"IA",
"KS",
"MN",
"MO",
"NE",
"ND",
"SD",
"DE",
"DC",
"FL",
"GA",
"MD",
"NC",
"SC",
"VA",
"WV",
"AL",
"KY",
"MS",
"TN",
"AR",
"LA",
"OK",
"TX",
"AZ",
"CO",
"ID",
"MT",
"NV",
"NM",
"UT",
"WY",
"CA",
"OR",
"WA",
"AK",
"HI"
],
"type": "string",
"description": "US two-letter state or DC code."
},
"country": {
"enum": [
"GB",
"US"
],
"type": "string",
"description": "Country pricing policy. Use GB for Great Britain or US for the United States. If omitted, GB is used for backwards compatibility."
},
"jobType": {
"enum": [
"Combined project",
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Commercial office refurbishment",
"New kitchen",
"New bathroom",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"Lower-ground floor refurbishment",
"New build",
"home_addition",
"whole_home_remodel",
"kitchen_remodel",
"bathroom_remodel",
"attic_conversion",
"garage_conversion",
"basement_remodel",
"backyard_studio",
"new_home_construction"
],
"type": "string",
"description": "Residential project type supported by the selected country policy."
},
"zipCode": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "Optional US five-digit ZIP code. Never send a street address."
},
"postcodeArea": {
"type": "string",
"pattern": "^[A-Z]{1,2}\\d[A-Z\\d]?$",
"description": "GB outward postcode only, for example BS3. Never send a full address."
}
},
"additionalProperties": false
},
"scenarios": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"changes"
],
"properties": {
"label": {
"enum": [
"Option 1",
"Option 2",
"Option 3"
],
"type": "string"
},
"changes": {
"type": "object",
"properties": {
"access": {
"enum": [
"straightforward",
"constrained",
"remote"
],
"type": "string"
},
"areaUnit": {
"enum": [
"sq_m",
"sq m",
"m2",
"m^2",
"m²",
"sqm",
"square_metres",
"square_meters",
"square metres",
"square meters",
"sq_ft",
"sq ft",
"ft2",
"ft^2",
"ft²",
"sqft",
"sf",
"square_feet",
"square feet"
],
"type": "string",
"description": "Unit for approximateSize. GB defaults to sq_m and US defaults to sq_ft. Common m2 and ft2 forms are accepted."
},
"doorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"roomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"scopeBand": {
"enum": [
"Lean",
"Balanced",
"Expanded"
],
"type": "string",
"description": "Breadth of work: Lean is a reduced scope, Balanced is a normal complete scope, and Expanded is a broader scope. This is not a confidence or risk setting."
},
"finishBand": {
"enum": [
"Builder grade",
"Good domestic",
"Premium domestic"
],
"type": "string",
"description": "Finish specification: Builder grade is budget, Good domestic is a normal quality domestic finish, and Premium domestic is higher specification."
},
"foundation": {
"enum": [
"slab",
"crawl_space",
"basement",
"existing_not_applicable"
],
"type": "string"
},
"scopeLevel": {
"enum": [
"defined",
"typical",
"expanded"
],
"type": "string"
},
"finishLevel": {
"enum": [
"builder_grade",
"standard",
"premium"
],
"type": "string"
},
"urgencyBand": {
"enum": [
"Flexible",
"Soon",
"Urgent"
],
"type": "string"
},
"windowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"accessIssues": {
"type": "boolean"
},
"availability": {
"enum": [
"Ready now",
"2–4 weeks",
"1–2 months",
"3+ months",
"6+ months",
"Next year"
],
"type": "string"
},
"basementArea": {
"type": "number",
"minimum": 0
},
"bedroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"kitchenScope": {
"enum": [
"No kitchen work",
"Kitchen allowance",
"New kitchen: supply and install",
"New kitchen: install only",
"Client-supplied kitchen, builder prepares room",
"Kitchen / diner works"
],
"type": "string",
"description": "Kitchen work included anywhere in this project. If Kitchen work is also selected as an additional internal package, this scope defines that same kitchen allowance; do not describe it as a second kitchen."
},
"propertyForm": {
"enum": [
"Flat",
"Maisonette",
"Terraced house",
"Semi-detached house",
"Detached house",
"Barn / agricultural building",
"Other / not sure",
"Commercial office",
"Office suite"
],
"type": "string",
"description": "Existing property type. Use only the user's answer; do not infer it from the project type."
},
"vatTreatment": {
"enum": [
"unconfirmed",
"standard_20",
"qualifying_conversion_5",
"qualifying_empty_home_5",
"qualifying_new_dwelling_0",
"mixed"
],
"type": "string",
"description": "Supplier-confirmed VAT treatment of the priced construction scope. Never infer zero/reduced rating from a project label or registration. Mixed-rate work stays unconfirmed until split; separate fees/goods may differ."
},
"basementScope": {
"enum": [
"Existing basement refurbishment",
"Existing cellar conversion",
"Lower / enlarge existing cellar",
"New basement beneath extension",
"New basement beneath existing house"
],
"type": "string"
},
"bathroomScope": {
"enum": [
"No bathroom work",
"Bathroom allowance",
"New bathroom: supply and install",
"New bathroom: install only",
"Ensuite / shower room",
"WC / cloakroom"
],
"type": "string",
"description": "Bathroom work included anywhere in this project. If Bathroom work is also selected as an additional internal package, this scope defines that same bathroom allowance; do not describe it as a second bathroom."
},
"parkingSpaces": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"basementAccess": {
"enum": [
"Direct external access",
"Restricted side / rear access",
"Removal through house",
"Highly constrained urban access"
],
"type": "string"
},
"lowerGroundUse": {
"enum": [
"Part of the main home",
"Dependent annexe",
"Separate dwelling / unit"
],
"type": "string"
},
"propertyPeriod": {
"enum": [
"Not sure",
"Modern / new build",
"1970s-1990s",
"1950s-1960s",
"1930s-1940s",
"Victorian / Edwardian",
"Older / period property",
"Listed / heritage"
],
"type": "string"
},
"approximateSize": {
"type": "number",
"maximum": 15000,
"description": "Project floor area. Defaults to square feet for US work; set areaUnit when the user supplied square metres.",
"exclusiveMinimum": 0
},
"hvacReplacement": {
"type": "boolean"
},
"lowerGroundArea": {
"type": "number",
"minimum": 0
},
"basementHeadroom": {
"enum": [
"No floor lowering",
"Minor lowering up to 300 mm",
"Lowering 300-600 mm",
"Major lowering over 600 mm",
"Not confirmed"
],
"type": "string"
},
"externalWallArea": {
"type": "number",
"minimum": 0
},
"lowerGroundScope": {
"enum": [
"Refresh existing finished rooms",
"Refurbish existing habitable floor",
"Convert existing ancillary / storage rooms"
],
"type": "string"
},
"barnStructureType": {
"enum": [
"Not sure",
"Traditional timber / oak frame",
"Steel portal frame",
"Stone / brick load-bearing walls",
"Mixed structure"
],
"type": "string"
},
"basementOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"lowerGroundAccess": {
"enum": [
"Direct external access",
"Access through main home",
"Constrained access"
],
"type": "string"
},
"planningStageOnly": {
"type": "boolean"
},
"structuralChanges": {
"type": "boolean"
},
"basementStairScope": {
"enum": [
"Existing stair retained",
"Alter existing stair / opening",
"New basement staircase"
],
"type": "string"
},
"complexGroundworks": {
"type": "boolean"
},
"occupiedDuringWork": {
"type": "boolean"
},
"refurbishmentScope": {
"enum": [
"General refurbishment",
"Mixed room upgrade",
"Decoration only",
"External walls / insulation",
"Windows / doors / glazing",
"Kitchen works",
"Bathroom works",
"Kitchen and bathroom works",
"Whole property refurbishment"
],
"type": "string"
},
"basementGroundwater": {
"enum": [
"No known issue",
"Possible / high water table",
"Known groundwater / water ingress",
"Not confirmed"
],
"type": "string"
},
"basementIntendedUse": {
"enum": [
"Storage / utility",
"Habitable room(s)",
"Bedroom / bathroom accommodation",
"Kitchen / living accommodation",
"Separate dwelling / unit"
],
"type": "string"
},
"commercialDataScope": {
"enum": [
"No data / comms work",
"Data points and Wi-Fi alterations",
"New structured cabling, Wi-Fi and comms cabinet"
],
"type": "string"
},
"commercialHvacScope": {
"enum": [
"Retain existing HVAC",
"Alter existing AC / ventilation",
"New or substantially replaced HVAC"
],
"type": "string"
},
"commercialOccupancy": {
"enum": [
"Vacant during works",
"Phased / partly occupied",
"Fully occupied live office",
"Out-of-hours works only"
],
"type": "string"
},
"decoratingDoorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"lowerGroundDaylight": {
"enum": [
"Existing windows retained",
"Alter or enlarge openings",
"New lightwell / external excavation",
"Not confirmed"
],
"type": "string"
},
"lowerGroundExposure": {
"enum": [
"Mostly above ground",
"Split-level / partly below ground",
"Mostly below ground"
],
"type": "string"
},
"lowerGroundMoisture": {
"enum": [
"Dry / no known issue",
"Local damp repairs",
"Known damp / waterproofing work",
"Not confirmed"
],
"type": "string"
},
"lowerGroundServices": {
"enum": [
"Existing services retained",
"Alter existing services",
"New kitchen / bathroom services",
"Independent services / meters"
],
"type": "string"
},
"primaryConstruction": {
"enum": [
"wood_frame",
"masonry_concrete",
"other_unknown"
],
"type": "string"
},
"includesBasementWork": {
"type": "boolean"
},
"lowerGroundOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"basementDrainageScope": {
"enum": [
"Existing gravity drainage retained",
"Drainage alterations",
"Pumped drainage required",
"Not confirmed"
],
"type": "string"
},
"basementWaterproofing": {
"enum": [
"Existing dry system retained",
"Local repairs / upgrades",
"Full tanking system",
"Cavity-drain membrane and pumps",
"Not confirmed"
],
"type": "string"
},
"commercialFloorAccess": {
"enum": [
"Ground / first floor",
"Upper floors with goods lift",
"Upper floors with passenger lift only",
"Upper floors by stairs only",
"Multiple floors"
],
"type": "string"
},
"decoratingWindowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"refurbishmentPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12
},
"structuralSteelLikely": {
"type": "boolean"
},
"basementLightwellCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"combinedAdditionalSize": {
"type": "number",
"minimum": 0
},
"combinedPrimaryJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"refurbishmentCondition": {
"enum": [
"Good",
"Average",
"Poor",
"Damp / cracks / problematic"
],
"type": "string"
},
"refurbishmentPrepLevel": {
"enum": [
"Simple refresh",
"Normal prep",
"Heavy prep"
],
"type": "string"
},
"refurbishmentRoomState": {
"enum": [
"Empty",
"Partly furnished",
"Occupied"
],
"type": "string"
},
"basementUtilityIncluded": {
"type": "boolean"
},
"climateCodeRequirements": {
"type": "boolean"
},
"commercialWashroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"includesLowerGroundWork": {
"type": "boolean"
},
"basementBathroomIncluded": {
"type": "boolean"
},
"commercialAsbestosStatus": {
"enum": [
"Refurbishment survey clear",
"Management survey only",
"Survey required / not confirmed",
"Known asbestos constraints"
],
"type": "string"
},
"commercialBuildingAccess": {
"enum": [
"Standalone / direct street access",
"Shared building, straightforward access",
"Managed building / booked access",
"Constrained central-London access"
],
"type": "string"
},
"commercialLandlordStatus": {
"enum": [
"Approval confirmed / not needed",
"Licence to alter in progress",
"Approval not started",
"Not sure"
],
"type": "string"
},
"electricalServiceUpgrade": {
"type": "boolean"
},
"basementStructuralSupport": {
"enum": [
"No underpinning expected",
"Local structural support",
"Sequential underpinning",
"Piled / engineered support",
"Not confirmed"
],
"type": "string"
},
"combinedAdditionalJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"commercialElectricalScope": {
"enum": [
"Retain existing / minor electrical works",
"Lighting and small-power alterations",
"New lighting, power and floor-box layout"
],
"type": "string"
},
"commercialPartitionsScope": {
"enum": [
"Retain layout / minor making good",
"Some partitions and ceiling alterations",
"Extensive partitions and suspended ceilings"
],
"type": "string"
},
"refurbishmentFlooringArea": {
"type": "number",
"minimum": 0
},
"commercialKitchenetteCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"commercialWorkstationCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"additionalInternalWorksArea": {
"type": "number",
"minimum": 0,
"description": "Total floor area of existing rooms affected outside the main extension or loft, in the supplied area unit."
},
"commercialFireSecurityScope": {
"enum": [
"Existing systems retained",
"Fire-safety alterations and interfaces",
"Fire, access control, intercom and security package"
],
"type": "string"
},
"commercialFurnitureIncluded": {
"type": "boolean"
},
"refurbishmentDecoratingArea": {
"type": "number",
"minimum": 0
},
"refurbishmentPlasteringArea": {
"type": "number",
"minimum": 0
},
"hazardousMaterialRemediation": {
"type": "boolean"
},
"additionalInternalWorkPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12,
"description": "Packages in existing rooms outside the main extension or loft. Kitchen work and Bathroom work use kitchenScope and bathroomScope to define the same room allowance and are counted once."
},
"includesAdditionalInternalWorks": {
"type": "boolean",
"description": "True only when the project also changes existing internal rooms outside the main extension or loft."
}
},
"description": "Country-specific project scope. Use UK fields for GB and US fields for US; do not invent unanswered values.",
"additionalProperties": false
}
},
"additionalProperties": false
},
"maxItems": 3,
"minItems": 1
}
},
"additionalProperties": false
}Retrieve UK/US input requirements or labelled reference examples when specifically requested. For a project budget, vague cost question or drawings, use calculate_building_work. Reference examples are not the user's project price. No account or drawing-file access.
| Argument | Type | Description |
|---|---|---|
| scope | object | Country-specific project scope. Use UK fields for GB and US fields for US; do not invent unanswered values. |
| state | string | US two-letter state or DC code. |
| country | string | Country pricing policy. Use GB for Great Britain or US for the United States. If omitted, GB is used for backwards compatibility. |
| jobType | string | Residential project type supported by the selected country policy. |
| zipCode | string | Optional US five-digit ZIP code. Never send a street address. |
| postcodeArea | string | GB outward postcode only, for example BS3. Never send a full address. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"scope": {
"type": "object",
"default": {},
"properties": {
"access": {
"enum": [
"straightforward",
"constrained",
"remote"
],
"type": "string"
},
"areaUnit": {
"enum": [
"sq_m",
"sq m",
"m2",
"m^2",
"m²",
"sqm",
"square_metres",
"square_meters",
"square metres",
"square meters",
"sq_ft",
"sq ft",
"ft2",
"ft^2",
"ft²",
"sqft",
"sf",
"square_feet",
"square feet"
],
"type": "string",
"description": "Unit for approximateSize. GB defaults to sq_m and US defaults to sq_ft. Common m2 and ft2 forms are accepted."
},
"doorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"roomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"scopeBand": {
"enum": [
"Lean",
"Balanced",
"Expanded"
],
"type": "string",
"description": "Breadth of work: Lean is a reduced scope, Balanced is a normal complete scope, and Expanded is a broader scope. This is not a confidence or risk setting."
},
"finishBand": {
"enum": [
"Builder grade",
"Good domestic",
"Premium domestic"
],
"type": "string",
"description": "Finish specification: Builder grade is budget, Good domestic is a normal quality domestic finish, and Premium domestic is higher specification."
},
"foundation": {
"enum": [
"slab",
"crawl_space",
"basement",
"existing_not_applicable"
],
"type": "string"
},
"scopeLevel": {
"enum": [
"defined",
"typical",
"expanded"
],
"type": "string"
},
"finishLevel": {
"enum": [
"builder_grade",
"standard",
"premium"
],
"type": "string"
},
"urgencyBand": {
"enum": [
"Flexible",
"Soon",
"Urgent"
],
"type": "string"
},
"windowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"accessIssues": {
"type": "boolean"
},
"availability": {
"enum": [
"Ready now",
"2–4 weeks",
"1–2 months",
"3+ months",
"6+ months",
"Next year"
],
"type": "string"
},
"basementArea": {
"type": "number",
"minimum": 0
},
"bedroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"kitchenScope": {
"enum": [
"No kitchen work",
"Kitchen allowance",
"New kitchen: supply and install",
"New kitchen: install only",
"Client-supplied kitchen, builder prepares room",
"Kitchen / diner works"
],
"type": "string",
"description": "Kitchen work included anywhere in this project. If Kitchen work is also selected as an additional internal package, this scope defines that same kitchen allowance; do not describe it as a second kitchen."
},
"propertyForm": {
"enum": [
"Flat",
"Maisonette",
"Terraced house",
"Semi-detached house",
"Detached house",
"Barn / agricultural building",
"Other / not sure",
"Commercial office",
"Office suite"
],
"type": "string",
"description": "Existing property type. Use only the user's answer; do not infer it from the project type."
},
"vatTreatment": {
"enum": [
"unconfirmed",
"standard_20",
"qualifying_conversion_5",
"qualifying_empty_home_5",
"qualifying_new_dwelling_0",
"mixed"
],
"type": "string",
"description": "Supplier-confirmed VAT treatment of the priced construction scope. Never infer zero/reduced rating from a project label or registration. Mixed-rate work stays unconfirmed until split; separate fees/goods may differ."
},
"basementScope": {
"enum": [
"Existing basement refurbishment",
"Existing cellar conversion",
"Lower / enlarge existing cellar",
"New basement beneath extension",
"New basement beneath existing house"
],
"type": "string"
},
"bathroomScope": {
"enum": [
"No bathroom work",
"Bathroom allowance",
"New bathroom: supply and install",
"New bathroom: install only",
"Ensuite / shower room",
"WC / cloakroom"
],
"type": "string",
"description": "Bathroom work included anywhere in this project. If Bathroom work is also selected as an additional internal package, this scope defines that same bathroom allowance; do not describe it as a second bathroom."
},
"parkingSpaces": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"basementAccess": {
"enum": [
"Direct external access",
"Restricted side / rear access",
"Removal through house",
"Highly constrained urban access"
],
"type": "string"
},
"lowerGroundUse": {
"enum": [
"Part of the main home",
"Dependent annexe",
"Separate dwelling / unit"
],
"type": "string"
},
"propertyPeriod": {
"enum": [
"Not sure",
"Modern / new build",
"1970s-1990s",
"1950s-1960s",
"1930s-1940s",
"Victorian / Edwardian",
"Older / period property",
"Listed / heritage"
],
"type": "string"
},
"approximateSize": {
"type": "number",
"maximum": 15000,
"description": "Project floor area. Defaults to square feet for US work; set areaUnit when the user supplied square metres.",
"exclusiveMinimum": 0
},
"hvacReplacement": {
"type": "boolean"
},
"lowerGroundArea": {
"type": "number",
"minimum": 0
},
"basementHeadroom": {
"enum": [
"No floor lowering",
"Minor lowering up to 300 mm",
"Lowering 300-600 mm",
"Major lowering over 600 mm",
"Not confirmed"
],
"type": "string"
},
"externalWallArea": {
"type": "number",
"minimum": 0
},
"lowerGroundScope": {
"enum": [
"Refresh existing finished rooms",
"Refurbish existing habitable floor",
"Convert existing ancillary / storage rooms"
],
"type": "string"
},
"barnStructureType": {
"enum": [
"Not sure",
"Traditional timber / oak frame",
"Steel portal frame",
"Stone / brick load-bearing walls",
"Mixed structure"
],
"type": "string"
},
"basementOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"lowerGroundAccess": {
"enum": [
"Direct external access",
"Access through main home",
"Constrained access"
],
"type": "string"
},
"planningStageOnly": {
"type": "boolean"
},
"structuralChanges": {
"type": "boolean"
},
"basementStairScope": {
"enum": [
"Existing stair retained",
"Alter existing stair / opening",
"New basement staircase"
],
"type": "string"
},
"complexGroundworks": {
"type": "boolean"
},
"occupiedDuringWork": {
"type": "boolean"
},
"refurbishmentScope": {
"enum": [
"General refurbishment",
"Mixed room upgrade",
"Decoration only",
"External walls / insulation",
"Windows / doors / glazing",
"Kitchen works",
"Bathroom works",
"Kitchen and bathroom works",
"Whole property refurbishment"
],
"type": "string"
},
"basementGroundwater": {
"enum": [
"No known issue",
"Possible / high water table",
"Known groundwater / water ingress",
"Not confirmed"
],
"type": "string"
},
"basementIntendedUse": {
"enum": [
"Storage / utility",
"Habitable room(s)",
"Bedroom / bathroom accommodation",
"Kitchen / living accommodation",
"Separate dwelling / unit"
],
"type": "string"
},
"commercialDataScope": {
"enum": [
"No data / comms work",
"Data points and Wi-Fi alterations",
"New structured cabling, Wi-Fi and comms cabinet"
],
"type": "string"
},
"commercialHvacScope": {
"enum": [
"Retain existing HVAC",
"Alter existing AC / ventilation",
"New or substantially replaced HVAC"
],
"type": "string"
},
"commercialOccupancy": {
"enum": [
"Vacant during works",
"Phased / partly occupied",
"Fully occupied live office",
"Out-of-hours works only"
],
"type": "string"
},
"decoratingDoorCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"lowerGroundDaylight": {
"enum": [
"Existing windows retained",
"Alter or enlarge openings",
"New lightwell / external excavation",
"Not confirmed"
],
"type": "string"
},
"lowerGroundExposure": {
"enum": [
"Mostly above ground",
"Split-level / partly below ground",
"Mostly below ground"
],
"type": "string"
},
"lowerGroundMoisture": {
"enum": [
"Dry / no known issue",
"Local damp repairs",
"Known damp / waterproofing work",
"Not confirmed"
],
"type": "string"
},
"lowerGroundServices": {
"enum": [
"Existing services retained",
"Alter existing services",
"New kitchen / bathroom services",
"Independent services / meters"
],
"type": "string"
},
"primaryConstruction": {
"enum": [
"wood_frame",
"masonry_concrete",
"other_unknown"
],
"type": "string"
},
"includesBasementWork": {
"type": "boolean"
},
"lowerGroundOccupancy": {
"enum": [
"Vacant during works",
"House occupied during works"
],
"type": "string"
},
"basementDrainageScope": {
"enum": [
"Existing gravity drainage retained",
"Drainage alterations",
"Pumped drainage required",
"Not confirmed"
],
"type": "string"
},
"basementWaterproofing": {
"enum": [
"Existing dry system retained",
"Local repairs / upgrades",
"Full tanking system",
"Cavity-drain membrane and pumps",
"Not confirmed"
],
"type": "string"
},
"commercialFloorAccess": {
"enum": [
"Ground / first floor",
"Upper floors with goods lift",
"Upper floors with passenger lift only",
"Upper floors by stairs only",
"Multiple floors"
],
"type": "string"
},
"decoratingWindowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"refurbishmentPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12
},
"structuralSteelLikely": {
"type": "boolean"
},
"basementLightwellCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"combinedAdditionalSize": {
"type": "number",
"minimum": 0
},
"combinedPrimaryJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"refurbishmentCondition": {
"enum": [
"Good",
"Average",
"Poor",
"Damp / cracks / problematic"
],
"type": "string"
},
"refurbishmentPrepLevel": {
"enum": [
"Simple refresh",
"Normal prep",
"Heavy prep"
],
"type": "string"
},
"refurbishmentRoomState": {
"enum": [
"Empty",
"Partly furnished",
"Occupied"
],
"type": "string"
},
"basementUtilityIncluded": {
"type": "boolean"
},
"climateCodeRequirements": {
"type": "boolean"
},
"commercialWashroomCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"includesLowerGroundWork": {
"type": "boolean"
},
"basementBathroomIncluded": {
"type": "boolean"
},
"commercialAsbestosStatus": {
"enum": [
"Refurbishment survey clear",
"Management survey only",
"Survey required / not confirmed",
"Known asbestos constraints"
],
"type": "string"
},
"commercialBuildingAccess": {
"enum": [
"Standalone / direct street access",
"Shared building, straightforward access",
"Managed building / booked access",
"Constrained central-London access"
],
"type": "string"
},
"commercialLandlordStatus": {
"enum": [
"Approval confirmed / not needed",
"Licence to alter in progress",
"Approval not started",
"Not sure"
],
"type": "string"
},
"electricalServiceUpgrade": {
"type": "boolean"
},
"basementStructuralSupport": {
"enum": [
"No underpinning expected",
"Local structural support",
"Sequential underpinning",
"Piled / engineered support",
"Not confirmed"
],
"type": "string"
},
"combinedAdditionalJobType": {
"enum": [
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"New build"
],
"type": "string"
},
"commercialElectricalScope": {
"enum": [
"Retain existing / minor electrical works",
"Lighting and small-power alterations",
"New lighting, power and floor-box layout"
],
"type": "string"
},
"commercialPartitionsScope": {
"enum": [
"Retain layout / minor making good",
"Some partitions and ceiling alterations",
"Extensive partitions and suspended ceilings"
],
"type": "string"
},
"refurbishmentFlooringArea": {
"type": "number",
"minimum": 0
},
"commercialKitchenetteCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"commercialWorkstationCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"additionalInternalWorksArea": {
"type": "number",
"minimum": 0,
"description": "Total floor area of existing rooms affected outside the main extension or loft, in the supplied area unit."
},
"commercialFireSecurityScope": {
"enum": [
"Existing systems retained",
"Fire-safety alterations and interfaces",
"Fire, access control, intercom and security package"
],
"type": "string"
},
"commercialFurnitureIncluded": {
"type": "boolean"
},
"refurbishmentDecoratingArea": {
"type": "number",
"minimum": 0
},
"refurbishmentPlasteringArea": {
"type": "number",
"minimum": 0
},
"hazardousMaterialRemediation": {
"type": "boolean"
},
"additionalInternalWorkPackages": {
"type": "array",
"items": {
"enum": [
"Plastering",
"Painting & decorating",
"Wood / laminate flooring",
"Kitchen work",
"Bathroom work",
"Windows / doors / glazing",
"External walls / insulation",
"General building / making good"
],
"type": "string"
},
"maxItems": 12,
"description": "Packages in existing rooms outside the main extension or loft. Kitchen work and Bathroom work use kitchenScope and bathroomScope to define the same room allowance and are counted once."
},
"includesAdditionalInternalWorks": {
"type": "boolean",
"description": "True only when the project also changes existing internal rooms outside the main extension or loft."
}
},
"description": "Country-specific project scope. Use UK fields for GB and US fields for US; do not invent unanswered values.",
"additionalProperties": false
},
"state": {
"enum": [
"CT",
"ME",
"MA",
"NH",
"RI",
"VT",
"NJ",
"NY",
"PA",
"IN",
"IL",
"MI",
"OH",
"WI",
"IA",
"KS",
"MN",
"MO",
"NE",
"ND",
"SD",
"DE",
"DC",
"FL",
"GA",
"MD",
"NC",
"SC",
"VA",
"WV",
"AL",
"KY",
"MS",
"TN",
"AR",
"LA",
"OK",
"TX",
"AZ",
"CO",
"ID",
"MT",
"NV",
"NM",
"UT",
"WY",
"CA",
"OR",
"WA",
"AK",
"HI"
],
"type": "string",
"description": "US two-letter state or DC code."
},
"country": {
"enum": [
"GB",
"US"
],
"type": "string",
"description": "Country pricing policy. Use GB for Great Britain or US for the United States. If omitted, GB is used for backwards compatibility."
},
"jobType": {
"enum": [
"Combined project",
"Rear extension",
"Kitchen extension",
"Side extension",
"Wraparound extension",
"Loft conversion",
"Barn conversion",
"Refurbishment",
"Commercial office refurbishment",
"New kitchen",
"New bathroom",
"Office / summerhouse",
"Garage conversion",
"Basement work / conversion",
"Lower-ground floor refurbishment",
"New build",
"home_addition",
"whole_home_remodel",
"kitchen_remodel",
"bathroom_remodel",
"attic_conversion",
"garage_conversion",
"basement_remodel",
"backyard_studio",
"new_home_construction"
],
"type": "string",
"description": "Residential project type supported by the selected country policy."
},
"zipCode": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "Optional US five-digit ZIP code. Never send a street address."
},
"postcodeArea": {
"type": "string",
"pattern": "^[A-Z]{1,2}\\d[A-Z\\d]?$",
"description": "GB outward postcode only, for example BS3. Never send a full address."
}
},
"additionalProperties": false
}