Legend: [ ] not started · [~] in progress · [x] done
Validation / QA — core parser and takeoff pipeline are built, VCNGC live-drawing checks are running, and comparison tooling now exists to quantify gaps between raw takeoff output and the Task 1 ground-truth schedule.
- Set up storage architecture (log, description, roadmap, instructions-for-AI)
- Define project description and scope
- Market/gap research (DWG takeoff landscape, pricing, competitor focus)
- Set up dev environment (Python, ezdxf, ODA File Converter)
- Get a sample structural DWG/DXF drawing to test against
- Build DXF parser: extract LINE/LWPOLYLINE entities grouped by layer
- Compute lengths per entity, group/sum per layer
- LLM layer-classification step: identify which layers are likely beams even with inconsistent naming
- Output beam schedule to Excel/CSV
- Test against a real/messy drawing (not just a clean sample)
- Build takeoff cross-check / comparison utility against the Task 1 ground-truth schedule
- [~] (stretch) Extract member sizes from block attributes/text (extractor implemented; source drawing has incomplete per-member annotations)
- (stretch) Accept DWG directly, automate the DXF conversion step
Tackle the stretch goal: extract member tags, widths, and depths from block attributes/text so the comparator can perform true missing/extra member QA and dimension mismatch checks on VCNGC.
- The current VCNGC takeoff export is aggregate-only (raw layer/entity totals), so it cannot yet identify individual missing/extra members or dimension mismatches.
- Member-level tag/dimension extraction is implemented in
parser_pipeline/member_size_extractor.py; the remaining gap is incomplete size annotation coverage in the source drawing, which leaves unresolved records for review. - Column ground truth is not yet modeled in the Task 1 schedule artifacts.
- Create project workspaces and technical specs.
- Define PostgreSQL relational database schema (
boq_schema.sql). - Run database migration script in Supabase SQL Editor.
- Seed initial Fajardo Concrete, Masonry, and Rebar mix factors.
- Set up CAD conversion utility (DWG to DXF conversion script; local ODA integration is a shipping task).
- Implement DXF parser using
ezdxfto extract LINE, POLYLINE, TEXT, and schedule block attributes. - Map extracted entities into the Drawing Object Model (DOM) schema.
- Develop Concrete Volume module (Fajardo Class A/B/C ratios).
- Develop Steel Reinforcement module (weight conversion and GI tie wire rates).
- Develop Masonry module (CHB wall areas and 16mm cement plaster).
- Added independent concrete volume, rebar-weight, and CHB area-versus-layer-count cross-checks with warnings above 2% divergence.
- Applied distinct Masonry Mortar and Plaster Class A/B/C/D scales; these no longer derive from concrete mix factors.
- Added opening deductions for CHB walls and expanded focused unit coverage to 13 passing tests.
- [~] Unfinished — final QA sign-off: Retrieve and review the authoritative v2.0 technical specification from cloud storage, then reconcile each engine rule and factor against it. The local
tech_spec.mdis v1.0 and is not sufficient for v2.0 compliance sign-off.
- Integrate local unit cost database (materials + labor prices).
- Generate detailed backup computations per drawing element.
- Implement checklist rollout summary combining quantities and costs.
- Build Excel output module (
openpyxlexporting Backup Computation, Checklist BOQ Summary, and Unit Cost Derivation sheets). - Implement manual validation/override workflow checks.
- Added
parser_pipeline/dom_mapper.pyto map converted DXF entities into a traceable Drawing Object Model JSON export. - Verified against
Structural_Drawings_Residential_House.dxf: 10,278 supported entities mapped; 8 parser tests passed. - Uploaded the Phase 1 mapper and DOM output to Supabase after explicit cloud-write approval.
- Configure the installed local ODA File Converter path in the shipped application and run DWG-to-DXF conversion automatically before parsing. This is a deployment task, not a Phase 1 parser blocker.
- Provide a user-facing DWG import flow with a clear conversion-status message and DXF failure handling.
- Keep PDF files available for drawing review and validation. Direct PDF entity extraction is deferred to a later phase; it is not part of the current CAD parser.