☰
▦ BOQ Lookup
▤ Tower-A_Process.rvt
— 01 —SURVEY1,904 elements
— 02 —CLASSIFY1,713 ready
— 03 —BILL4 over
— 04 —RECONCILE9 conflicts
— 05 —LIBRARY4,007 rows
— 06 —DATA855 leaves
— 07 —SETUPv2
01.

STATION 01 Survey

Read the model, price nothing. One scan seam feeds every station — the ledger on the right keeps the running totals wherever you work.
MODEL ELEMENTS
1,904
pipe · duct · tray · fitting · equip
WILL CLASSIFY
1,713
material + fitting + size resolved
VIA DX LIBRARY
71
empty SPEC backfilled LIB
NEEDS MAPPING
177
material / fitting / size unmapped

▤ SEGMENT LEDGER — coverage per material system, click to filter Classify

xx.xx.
Stainless coated (E-CTFE)641
xx.xx.
Stainless V4A488
xx.xx.
Galvanized402
xx.xx.
Stainless V2A237
xx.xx.
Insulation / surfaces98
—
Out of catalogue (Alu, PPR, PE…)38
Preview only — nothing is written until Run BOQ Lookup (footer). Rows are the catalogue's material segments; the bar is classify-coverage inside that segment.

↳ CLASSIFICATION PIPELINE (with the round-24 library pre-step)

DX BOM LIBRARYFamily & Type fills empty SPEC LIB
→
MATERIALSPEC_MATERIAL_TEXT_EN → XX.XX.
FITTINGSPEC_NAME_EN / Fam&Type → XX.XX.YY.
→
SIZESPEC_SIZE → NW leaf XX.XX.YY.ZZZ
SPEC_DESIGNATION + SPEC_DESCRIPTIONwritten on Run · name wins over family · mismatches flag, never guess
The library step runs ONLY when SPEC params are empty and the Family & Type has exactly one library record — ambiguous families never backfill. Greys out loudly if bom_library.json is unavailable.

⚙ MATCHING OPTIONS

02.

STATION 02 Classify

1,904 elements · click an ID to select + zoom
Problems sort first. Uncheck a row to exclude it from the next Run. Linked-safe.
Matched 1,713 via library 71 Needs mapping 177 Read-only 14
StatusElementIDDetail
Read-onlyPipe Types : V4A NW501284507SPEC_DESIGNATION is read-only
Name/Family mismatchM_Elbow : 45deg1285120wrote xx.xx.yy. (name); Family suggests xx.xx.zz.
No matchAluminium Duct : 300x2001290044Material 'aluminium' not in catalogue
Matched · LIBRound Duct : DX_Dct_FA_1.4301+E-CTFE_VendorA…1291873xx.xx.xx.xxx · SPEC empty → filled from library
MatchedPipe : V4A NW501284980xx.xx.xx.xxx
MatchedTee : V2A NW1001285760xx.xx.xx.xxx
Shared icz.review_grid (populate / summary strip / remove-checked); navigation via _row_nav → _nav_ev. The LIB tag reads diag["lib_fill"] — library-dependent classifications are marked, never silently blended.
03.

STATION 03 Bill unit-aware · contract Δ

The bill itself — modeled quantities in each code's OWN BOQ unit, priced against the contracted figures promoted from the source BOQ.
BOQ Schedule grouped by atomic catalogue v2 · 855 units · 855 contract figures
AtomicDescriptionUnitCountModeledContractΔ
xx.xx.xx.xxxStainless steel coated pipe system NW 100m214642.81,150−507.2
xx.xx.xx.xxxBends 45–90° stainless coated NW 80St9696120−24
xx.xx.xx.xxxGalvanized pipe (longitudinally welded) NW 100m142418.2380+38.2
xx.xx.xx.xxxT-piece stainless steel V4A NW 50St616145+16
xx.xx.xx.xxxDuct insulation surface NW 200 class Am²173312.4486−173.6
xx.xx.xx.xxxWeld-in socket with KF connection, coatedSt2828—no figure
… 131 more codes — sortable, click a row to select every element on that line
GRAND TOTALS1,7132,318 m · 1,289 St · 312 m²4 over · 119 under
Unit = boq_data.unit_for(atomic), contract = contract_qty(atomic) — promoted from the contract BOQ. Modeled figure follows the unit: m → Σ CURVE_ELEM_LENGTH (ft→m via icz.units) · St → count · m² → Σ area. A v1 catalogue (no units) renders the classic Count/Length/Area table — columns appear only when the catalogue carries them.
04.

STATION 04 Reconcile NEW station

Audit the model against the firm DX BOM library: FILLED SPEC params that contradict the library record are findings. Read-only — correcting a filled param stays a human decision.
MODEL FAMILIES IN LIBRARY
212
of 287 model families
ELEMENTS CHECKED
1,641
filled SPEC + uniform record
CONFORM
1,632
model matches library
CONFLICTS
9
param ≠ library record
9 conflicts1,632 conform
ElementIDParamModel saysLibrary says
Round Duct : DX_Dct_FA_GLST_VendorC…1288411SPEC_MATERIAL_TEXT_ENStainless steelGalvanized steel
DX_PiF_FA_STST_VendorB_Elbow…1290822SPEC_NAME_ENElbowBent pipe
DX_PiF_FA_STST_VendorD_KF-Flange…1290901SPEC_MATERIAL_TEXT_ENAISI 304AISI 316L
Findings render through the shared review grid — clickable IDs, modeless select + zoom. Ambiguous library families (45) are excluded from both backfill and conformance; they're listed in the Library station.
05.

STATION 05 DX Library promoted r24

The firm's ducting and piping BOM — 4,007 deduped records, browsable by family, material, manufacturer, source.
All 4,007Ducting 359Piping 3,648Ambiguous 45
Family : TypeNameSizeMaterialManufacturerUnits
Round Duct: DX_Dct_FA_1.4301+E-CTFE_VendorA…Round duct, longitudinally weldedDN1001.4301 E-CTFE coatedVendorAm.
DX_PiF_FA_STST_VendorB_Elbow: …Bent pipe1/21.4404VendorBpcs.
DX_DuF_FA_GNRL_VendorC_Tee_Round-Flng: GLST…Tee / Fork 45°DN150Galvanized steelVendorCpcs.ambiguous
zDX_PiF_FA_STST_VendorD_KF-Clamp: …Tension ringKF40Stainless steel / AISI 304VendorDpcs.ambiguous
DX_PiF_FA_STST_VendorB_Tee: …T-piece11.4404VendorBpcs.
… filtered live, ≤250 rows rendered (suite overflow rule) — full 4,007 searchable
Read-only reference (ships with the tool, regenerated from the DX xlsx exports — never hand-edited). Uniform families feed the Classify backfill; ambiguous ones are visible here and excluded everywhere else.
06.

STATION 06 Catalogue Data

Search this project's active catalogue — material, fitting name, atomic number. Leaf rows carry unit + contract when the catalogue is v2.
MATERIALS
95
material_to_segment
FITTING RULES
144 + 61
name · family fallback
CATALOGUE LEAVES
855
672 sized · 33 non-NW
UNITS + CONTRACT
855 + 855
catalogue v2 (r24)
Key→ Maps to
stainless steel v4axx.xx.
xx.xx. + bent pipexx.xx.xx.
xx.xx. | xx.xx.xx. | NW 100xx.xx.xx.xxx — Stainless steel coated pipe system NW 100 · unit m · contract 1,150
galvanized steelxx.xx.
Read-only browse (_section_header / _data_row). To change data use Setup — no raw JSON editing (suite Interactive-Config rule).
07.

STATION 07 Setup

Catalogue source, firm library health, the eight editable tables, and the classifier guide.

▤ CATALOGUE SOURCE project-aware

Active: …\RO1_BOQLookup.pushbutton\boq_data.json v2
Remembered for this project · configstore boq_catalogues.json

◫ DX BOM LIBRARY round 24

bom_library.json · available 4,007 rows · 1,415 families · 45 ambiguous
Firm-wide, ships with the tool. Missing/corrupt → this card goes red with the reason (bom_available), the pipeline's library node greys out, classification continues catalogue-only.
Materials (95)Fitting Names (144)Family Fallback (61)Full Index (855)Size Index (672)Non-NW (33)Units (855)Contract Qty (855)
Atomic numberUnit
✕
✕

? How the classifier works (the former How-It-Works page, folded into Setup)

0 · Library backfill (r24): empty SPEC_NAME/MATERIAL + uniform Family & Type library record → values filled, element tagged LIB. Filled params are never overwritten; ambiguous families never backfill. 1 · Material: SPEC_MATERIAL_TEXT_EN → segment XX.XX. (exact, then substring). 2 · Fitting: SPEC_NAME_EN → XX.XX.YY. (144 rules); Family & Type fallback + cross-check (61) — name wins, disagreement flags. 3 · Size: SPEC_SIZE / RBS_CALCULATED_SIZE → NW parse → atomic leaf; sized types refuse fallback (loud size-miss). 4 · Bill (r24): unit + contract per atomic from the source BOQ → totals in the code's own unit, Δ against contract.

RUNNING BILL
Classified1,713 / 1,904
Runs2,318 m
Pieces1,289 St
Surfaces312 m²
Over contract4 codes
TOP LINES
xx.xx.xx.xxx642.8 m
xx.xx.xx.xxx418.2 m
xx.xx.xx.xxx312.4 m²
xx.xx.xx.xxx96 St
xx.xx.xx.xxx61 St
4 OVER CONTRACT
SOURCES
Catalogue v2 · this project
DX library · 4,007 rows
45 ambiguous families
Totals refresh with every scan — the bill follows you to every station. ☰ hides it.
Scan complete: 1,904 elements, 1,713 will classify (90%) — 71 via DX library. Activity log
BOQ Lookup — session log
------------------------
Library: bom_library.json OK · 4,007 rows · 1,415 families (45 ambiguous, excluded).
Scan: 1904 elements · 1713 classify (71 via library backfill) · 177 need mapping · 14 read-only.
Bill: 137 codes · 2,318 m · 1,289 St · 312 m² · 4 codes over contract.
Catalogue: boq_data.json v2 (this project) · units 855 · contract figures 855.