Initial commit: Conflict Checker

Cross-discipline design-contradiction checker for construction drawing
sets. Standalone tool broken out from Iron_Bid; a pipeline stage may
later fold back into Iron_Bid.

Pipeline: PDF->images -> per-sheet assertion extraction -> deterministic
clustering by location -> per-cluster reasoning -> report.
Includes CLI (cli/run_check.py) and web UI (backend/main.py).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
woogiandClaude Opus 4.8 committed 2026-07-03 00:22:02 +00:00
commit 1d248a8808
262 files changed
+8209

No files matched your search

@@ -0,0 +1 @@
[{"assertion_id": "P01.01#4", "attribute": "pipe_material_above_slab", "original_value": "Sanitary Waste and Vent (Above Slab Only): Cast iron pipe and fittings, ASTM A 888 or CISPI 301.", "source_text": "2. SANITARY WASTE AND VENT: (ABOVE SLAB ONLY). PIPE: CAST IRON PIPE AND FITTINGS, ASTM A 888 OR CISPI 301.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is a descriptive text with multiple specifications, no simple normalization possible.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#5", "attribute": "pipe_material_domestic_water", "original_value": "Domestic Water: Type 'L' copper tubing with wrought copper fittings and 95/5 (tin/antimony) solder joints.", "source_text": "3. DOMESTIC WATER: TYPE 'L' COPPER TUBING WITH WROUGHT COPPER FITTINGS AND 95/5 (TIN/ANTIMONY) SOLDER JOINTS.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is a descriptive text with multiple specifications, no simple normalization possible.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#6", "attribute": "voltage", "original_value": "480", "source_text": "VOLTS 480", "normalized_value": "480", "normalized_unit": "V", "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#7", "attribute": "phase", "original_value": "3", "source_text": "PHASE 3", "normalized_value": "3", "normalized_unit": "phase", "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#8", "attribute": "power_kW", "original_value": "5", "source_text": "KW 5", "normalized_value": "5", "normalized_unit": "kW", "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#9", "attribute": "tank_capacity", "original_value": "30", "source_text": "TANK CAPACITY GALLONS 30", "normalized_value": "30", "normalized_unit": "gal", "normalized_attribute": null, "normalization_notes": "Unit 'gallons' inferred from source text.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#10", "attribute": "mounting_type", "original_value": "Floor Mounted", "source_text": "WATER CLOSET (FLOOR MOUNTED) (A.D.A.)", "normalized_value": "Floor Mounted", "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#11", "attribute": "ada_compliant_height", "original_value": "ADA 17\"H elongated bowl", "source_text": "AMERICAN STANDARD \"ULTIMA VORMAX\", ADA 17\"H ELONGATED BOWL", "normalized_value": "17", "normalized_unit": "in", "normalized_attribute": "height", "normalization_notes": "Extracted height from descriptive text. 'H' and '\"' indicate height in inches.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#12", "attribute": "flush_handle_location", "original_value": "Flush handle to be on the wide side of the stall.", "source_text": "FLUSH HANDLE TO BE ON THE WIDE SIDE OF THE STALL.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is a descriptive instruction.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#13", "attribute": "mounting_type", "original_value": "Wall Mounted", "source_text": "LAVATORY (WALL MOUNTED) (A.D.A.)", "normalized_value": "Wall Mounted", "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#14", "attribute": "thermostatic_mixing_valve", "original_value": "LF-170 LEONARD THERMOSTATIC MIXING VALVE WITH THE OUTLET TEMPERATURE TO BE SET AT 110F.", "source_text": "LF-170 LEONARD THERMOSTATIC MIXING VALVE WITH THE OUTLET TEMPERATURE TO BE SET AT 110F.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Compound statement includes model and a temperature setting requirement. No simple normalization without losing meaning.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#15", "attribute": "ada_compliant_fixture", "original_value": "LAVATORY (WALL MOUNTED) (A.D.A.)", "source_text": "LAVATORY (WALL MOUNTED) (A.D.A.)", "normalized_value": "true", "normalized_unit": null, "normalized_attribute": "is_ada_compliant", "normalization_notes": "Inferred boolean 'true' from '(A.D.A.)' tag in the text.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#16", "attribute": "mounting_type", "original_value": "Floor MounLine truncated