Loading...
Loading...

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.

Which document are you checking?

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:

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.

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.

Every rule ScopeSpec 0.1 states for a project brief, extracted from the published schema.
FieldRequiredTypeAllowed values
specYesobject—
spec.specVersionYesstring—
spec.briefIdYesstring—
spec.createdYesstring—
spec.revisionYesinteger—
spec.localeOptionalstring—
projectYesobject—
project.tradeProfileYesstringroofing-replacement, bathroom-remodel, kitchen-remodel, hvac-replacement, exterior-painting, other
project.summaryYesstring—
project.motivationOptionalstring—
project.desiredStartOptionalstring—
project.schedulingFlexibilityYesstringurgent, firm-date, flexible, seasonal
project.budgetStatedYesboolean—
propertyYesobject—
property.propertyTypeYesstringsingle-family-detached, townhouse, condominium, duplex, manufactured, other
property.postalCodeYesstring—
property.localityYesstring—
property.regionYesstring—
property.yearBuiltOptionalinteger—
property.storiesOptionalinteger—
property.occupiedDuringWorkYesboolean—
property.petsOnSiteOptionalboolean—
scopeYesobject—
scope.inclusionsYesarray—
scope.exclusionsYesarray—
scope.allowancesYesarray—
scope.allowances[].itemYesstring—
scope.allowances[].amountYesnumber—
scope.allowances[].currencyYesstring—
scope.allowances[].coversYesstring—
scope.siteConditionsYesarray—
scope.accessConstraintsYesarray—
scope.debrisHandlingYesstringhomeowner, contractor, shared, undecided
scope.cleanupStandardOptionalstringbroom-clean, vacuumed, as-found, unstated
measurementsYesobject—
measurements.quantitiesYesarray—
measurements.quantities[].nameYesstring—
measurements.quantities[].valueYesnumber—
measurements.quantities[].unitYesstring—
measurements.quantities[].measurementMethodYesstringtape-measured, laser-measured, aerial-report, from-drawings, estimated, unknown
measurements.quantities[].confidenceYesstringmeasured, approximate, rough
measurements.quantitiesVerifiedByYesstringhomeowner, contractor, shared, undecided
materialsYesobject—
materials.selectionsCompleteYesboolean—
materials.specifiedItemsYesarray—
materials.specifiedItems[].itemYesstring—
materials.specifiedItems[].specificationYesstring—
materials.specifiedItems[].suppliedByYesstringhomeowner, contractor, shared, undecided
materials.ownerSuppliedItemsYesarray—
permitsYesobject—
permits.permitAssumedRequiredYesstringyes, no, unknown
permits.permitPulledByYesstringhomeowner, contractor, shared, undecided
permits.jurisdictionOptionalstring—
permits.hoaApprovalRequiredYesstringyes, no, unknown
permits.inspectionsExpectedOptionalarray—
documentsYesobject—
documents.photosYesarray—
documents.photos[].documentTypeYesstringphoto, drawing, report, prior-estimate, other
documents.photos[].describesYesstring—
documents.photos[].urlOptionalstring—
documents.drawingsYesarray—
documents.drawings[].documentTypeYesstringphoto, drawing, report, prior-estimate, other
documents.drawings[].describesYesstring—
documents.drawings[].urlOptionalstring—
documents.reportsYesarray—
documents.reports[].documentTypeYesstringphoto, drawing, report, prior-estimate, other
documents.reports[].describesYesstring—
documents.reports[].urlOptionalstring—
assumptionsYesobject—
assumptions.assumptionsYesarray—
x-extensionsOptionalobject—

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.

Every rule ScopeSpec 0.1 states for a quote, extracted from the published schema.
FieldRequiredTypeAllowed values
priceBasisYesstringfixed-price, cost-plus, time-and-materials, not-to-exceed, allowance-based
priceTotalYesnumber—
currencyYesstring—
allowancesCarriedYesarray—
assumptionsAcceptedYesarray—
assumptionsRestatedYesarray—
exclusionsAddedYesarray—
validUntilYesstring—
startWindowYesstring—
durationEstimateYesstring—
paymentScheduleYesarray—
warrantyYesstring—
changeOrderPolicyYesstring—
licenseNumberOptionalstring—
insuranceOnFileOptionalboolean—

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