Check a document against ScopeSpec 0.1
Checker version 1.0.0 · First published 2026-09-23 · Rules extracted from ScopeSpec 0.1 · Maintained by Ben Davis, ben.davis@bidbro.com · Licensed CC BY 4.0
In short
ScopeSpec 0.1 states 86 structural rules — 71 for a project brief (58 required) and 15 for a quote (13 required). This page lists every one of them and checks a document you paste against them in your own browser. Nothing is uploaded. It reports shape, not truth: a conforming brief can still describe the wrong project.
Run the check
Paste a ScopeSpec project brief or quote. The rules below are the ones it applies — the same file you can download and run yourself.
This runs in your browser. Nothing you paste is uploaded, stored or sent to BidBro.
No JavaScript? Every rule is in the tables below and in the downloads — the check is the only part of this page that needs it.
What it checks, and what it does not
Three rule kinds, because these are the three the published schema states unambiguously enough to extract without interpretation:
- required field present
- JSON type
- allowed values (enum)
It does not check the following draft-07 keywords, which the schema uses and this checker does not implement: format, minLength, minimum, pattern. A document this page calls conforming may still fail one of them in a full schema validator.
And it does not check whether the document is right. Structural conformance says a brief is shaped the way the standard specifies. It says nothing about whether the measurements are accurate, the assumptions reasonable, or the project described the one you mean. No score is produced, no contractor is judged, and no price is predicted or validated.
Download the rule set
The rules are extracted from the published JSON Schema by a build step, so they cannot describe a version of the standard that does not exist. Take them and implement the check yourself — that is the point of publishing a standard.
- Conformance rules (JSON) — every rule, plus the declared limits of the check.
- Conformance rules (CSV) — the same table for a spreadsheet.
- The JSON Schema itself — the source these are derived from, and the authority if they ever disagree.
Project brief — 71 rules (58 required)
The document a homeowner sends to every bidder. A field left out here is a question every bidder answers privately and differently, which is exactly how two quotes for “the same job” stop being comparable.
| Field | Required | Type | Allowed values |
|---|---|---|---|
spec | Yes | object | — |
spec.specVersion | Yes | string | — |
spec.briefId | Yes | string | — |
spec.created | Yes | string | — |
spec.revision | Yes | integer | — |
spec.locale | Optional | string | — |
project | Yes | object | — |
project.tradeProfile | Yes | string | roofing-replacement, bathroom-remodel, kitchen-remodel, hvac-replacement, exterior-painting, other |
project.summary | Yes | string | — |
project.motivation | Optional | string | — |
project.desiredStart | Optional | string | — |
project.schedulingFlexibility | Yes | string | urgent, firm-date, flexible, seasonal |
project.budgetStated | Yes | boolean | — |
property | Yes | object | — |
property.propertyType | Yes | string | single-family-detached, townhouse, condominium, duplex, manufactured, other |
property.postalCode | Yes | string | — |
property.locality | Yes | string | — |
property.region | Yes | string | — |
property.yearBuilt | Optional | integer | — |
property.stories | Optional | integer | — |
property.occupiedDuringWork | Yes | boolean | — |
property.petsOnSite | Optional | boolean | — |
scope | Yes | object | — |
scope.inclusions | Yes | array | — |
scope.exclusions | Yes | array | — |
scope.allowances | Yes | array | — |
scope.allowances[].item | Yes | string | — |
scope.allowances[].amount | Yes | number | — |
scope.allowances[].currency | Yes | string | — |
scope.allowances[].covers | Yes | string | — |
scope.siteConditions | Yes | array | — |
scope.accessConstraints | Yes | array | — |
scope.debrisHandling | Yes | string | homeowner, contractor, shared, undecided |
scope.cleanupStandard | Optional | string | broom-clean, vacuumed, as-found, unstated |
measurements | Yes | object | — |
measurements.quantities | Yes | array | — |
measurements.quantities[].name | Yes | string | — |
measurements.quantities[].value | Yes | number | — |
measurements.quantities[].unit | Yes | string | — |
measurements.quantities[].measurementMethod | Yes | string | tape-measured, laser-measured, aerial-report, from-drawings, estimated, unknown |
measurements.quantities[].confidence | Yes | string | measured, approximate, rough |
measurements.quantitiesVerifiedBy | Yes | string | homeowner, contractor, shared, undecided |
materials | Yes | object | — |
materials.selectionsComplete | Yes | boolean | — |
materials.specifiedItems | Yes | array | — |
materials.specifiedItems[].item | Yes | string | — |
materials.specifiedItems[].specification | Yes | string | — |
materials.specifiedItems[].suppliedBy | Yes | string | homeowner, contractor, shared, undecided |
materials.ownerSuppliedItems | Yes | array | — |
permits | Yes | object | — |
permits.permitAssumedRequired | Yes | string | yes, no, unknown |
permits.permitPulledBy | Yes | string | homeowner, contractor, shared, undecided |
permits.jurisdiction | Optional | string | — |
permits.hoaApprovalRequired | Yes | string | yes, no, unknown |
permits.inspectionsExpected | Optional | array | — |
documents | Yes | object | — |
documents.photos | Yes | array | — |
documents.photos[].documentType | Yes | string | photo, drawing, report, prior-estimate, other |
documents.photos[].describes | Yes | string | — |
documents.photos[].url | Optional | string | — |
documents.drawings | Yes | array | — |
documents.drawings[].documentType | Yes | string | photo, drawing, report, prior-estimate, other |
documents.drawings[].describes | Yes | string | — |
documents.drawings[].url | Optional | string | — |
documents.reports | Yes | array | — |
documents.reports[].documentType | Yes | string | photo, drawing, report, prior-estimate, other |
documents.reports[].describes | Yes | string | — |
documents.reports[].url | Optional | string | — |
assumptions | Yes | object | — |
assumptions.assumptions | Yes | array | — |
x-extensions | Optional | object | — |
Quote — 15 rules (13 required)
The document one bidder sends back. These are the fields the quote comparison worksheet sets side by side, and a blank in any of them is where two apparently identical prices stop being identical.
| Field | Required | Type | Allowed values |
|---|---|---|---|
priceBasis | Yes | string | fixed-price, cost-plus, time-and-materials, not-to-exceed, allowance-based |
priceTotal | Yes | number | — |
currency | Yes | string | — |
allowancesCarried | Yes | array | — |
assumptionsAccepted | Yes | array | — |
assumptionsRestated | Yes | array | — |
exclusionsAdded | Yes | array | — |
validUntil | Yes | string | — |
startWindow | Yes | string | — |
durationEstimate | Yes | string | — |
paymentSchedule | Yes | array | — |
warranty | Yes | string | — |
changeOrderPolicy | Yes | string | — |
licenseNumber | Optional | string | — |
insuranceOnFile | Optional | boolean | — |
Using and citing this
This page and the rule set are licensed CC BY 4.0. You may reuse, adapt and redistribute them, including commercially, with attribution. Nothing is conditioned on linking to BidBro: attribution has never required a followed link, and a citation that had to be bought would not be worth having.
Suggested citation. BidBro, Inc. “ScopeSpec 0.1 conformance check”, version 1.0.0, 2026-09-23. https://www.bidbro.com/tools/scopespec-conformance-check
Corrections
If the checker accepts a document the standard rejects, or rejects one it accepts, that is a defect and we want to hear about it: Ben Davis, ben.davis@bidbro.com. The schema is the authority; a disagreement between it and this page is this page’s bug.
Elsewhere on BidBro
- ScopeSpec 0.1 — the standard itself, with its example briefs and quotes.
- Quote comparison worksheet — for a reader holding three quotes rather than a document to validate.
- Virginia Beach contractors — contractors by trade across the city, with licence records where on file.
- Hampton Roads Home Project Observatory — BidBro’s published construction data and its methodology.
- All free tools.
