Parameters in. Drawing + bill out.
A parametric quantity take-off engine. Pick an assembly, set its parameters, get a dimensioned drawing alongside a quantified bill — implementing CESMM4, NRM 2, SMM7 or MMHW measurement methodology, with audit trail under every row.
Same parametric model. Same source of truth. Cross-standard concrete totals match by construction — deterministic, reproducible.
§ 01 · The four standards
Separate codifications · not translations of each otherMMHW
OGL v3.0Manual of Contract Documents for Highway Works
Open licence — full BoQ rows free across all tiers
CESMM4
ComputedCivil Engineering Standard Method of Measurement, 4th ed.
Computed in-app using the CESMM4 work-classification convention. Users are responsible for licensed access to the published rule set; the engine does not redistribute publisher content.
NRM2
ComputedRICS New Rules of Measurement 2
Computed in-app using the NRM2 work-classification convention. Users are responsible for licensed access to the published rule set.
SMM7
ComputedStandard Method of Measurement, 7th ed.
Computed in-app using the SMM7 work-classification convention. Users are responsible for licensed access to the published rule set.
US measure-and-pay estimating — FHWA FP-24 + US-customary units
In development: the same parametric civils assemblies rendered to US pay-item measurement, with US-customary units alongside metric. Join the waitlist to hear when it lands.
§ 02 · Two assembly patterns
- Pattern
Composite
An assembly built from sub-elements: precast manhole = rings + cover slab + base + benching + channel + step-irons + cover & frame. The engine sums per-element quantities and emits one BoQ row per element with the audit trail attached.
- Pattern
Strategy
An assembly with multiple realisations of the same parameter brief: stormwater attenuation tank → crate variant or pipe-array variant. Same input parameters, different geometry, different bill structure. Compare side-by-side from the same brief.
§ 03 · Architectural invariants
What can't drift, by construction- Invariant · 01
Cross-standard concrete totals must match
Same parametric assembly, implemented separately for each of the four measurement methodologies. The bill structure follows each methodology's classification logic, but the underlying concrete volume is a function of geometry — not classification. Mismatch is a launch-blocker per spec §15. Property-tested on every assembly.
- Invariant · 02
Rates never live in assemblies or standards
The engine produces quantities and drawings. You provide the rates. Your numbers, your liability, your auditability — there is no hidden default rate library to override.
- Invariant · 03
Adding a new assembly = single file with @register_assembly
The catalogue is open by construction. No registry-of-registries; no factory hierarchy. New assemblies land as a single Python file, decorated, with property-based parameter-boundary tests.
- Invariant · 04
MCP, REST API, Python stub, CLI all share one service
Surface parity is enforced by architecture, not by discipline. The same FastAPI service powers every surface — what you see in the workspace, what an agent calls via MCP, and what your pipeline calls via REST are produced by the same code path.
Wire it into your stack.
Web app, REST API, MCP server, Python stub client, CLI — same FastAPI service under all of them. Free MCP tier returns watermarked deliverables; paid tiers return clean exports + project history.