# hamzaabduljabbar/autoconst-boq-schedule architecture

> Architecture diagram of the GitHub repository hamzaabduljabbar/autoconst-boq-schedule, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hamzaabduljabbar/autoconst-boq-schedule
- Repository: https://github.com/hamzaabduljabbar/autoconst-boq-schedule

## Overview

This Claude-assisted tool turns a text BOQ into a cost-loaded Primavera P6 draft. The main workflow extracts BOQ lines, has Claude classify them by trade and location, validates those decisions, gathers planner inputs, then builds activities and logic before exporting an XER for P6. The engine uses rates and link patterns learned from real schedules; the README also documents unit checks, duration calibration, location waves, and reporting. Edges reflect the README or shown source; the rates-file connection is unverified in the excerpts.

Main entry points: [`scripts/plan.py`](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/plan.py) (Schedule planner), [`scripts/apply_types.py`](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/apply_types.py) (Typing validator), [`scripts/export.py`](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/export.py) (P6 XER exporter), [`scripts/questions.py`](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/questions.py) (Planner questions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["BOQ Intake"]
  node_reader["BOQ reader<br/>[read_boq.py]"]
  node_brief["BOQ brief"]
end

subgraph group_typing["Typing Review"]
  node_decisions["Typing decisions"]
  node_typing_engine["Typing validator<br/>[apply_types.py]"]
  node_vocabulary["Work types<br/>[worktypes.py]"]
  node_typed_lines["Typed lines"]
end

subgraph group_planning["Planner Inputs"]
  node_questionnaire["Planner questions<br/>[questions.py]"]
  node_answers["Planner answers"]
end

subgraph group_engine["Schedule Engine"]
  node_schedule_engine["Schedule planner<br/>[plan.py]"]
  node_learned_rates["Schedule rates<br/>[rates.json]"]
  node_schedule_data["Draft schedule"]
end

subgraph group_delivery["P6 Delivery"]
  node_build["Build orchestrator<br/>[build.py]"]
  node_xer_export["P6 XER exporter<br/>[export.py]"]
  node_xer_template["XER template<br/>[xer_template.json]"]
end

node_boq["BOQ file"]
node_claude(("Claude"))
node_planner(("Planner"))
node_p6(("Primavera P6"))

node_boq -->|"provides BOQ"| node_reader
node_reader -->|"writes brief"| node_brief
node_brief -->|"presents lines"| node_claude
node_claude -->|"classifies lines"| node_decisions
node_brief -->|"reads lines"| node_typing_engine
node_decisions -->|"reads decisions"| node_typing_engine
node_typing_engine -->|"uses types"| node_vocabulary
node_typing_engine -->|"writes lines"| node_typed_lines
node_typed_lines -->|"provides lines"| node_questionnaire
node_questionnaire -->|"runs draft"| node_schedule_engine
node_questionnaire -->|"writes questions"| node_answers
node_planner -->|"fills answers"| node_answers
node_answers -->|"configures build"| node_build
node_build -->|"invokes planner"| node_schedule_engine
node_schedule_engine -->|"uses work types"| node_vocabulary
node_schedule_engine -.->|"reads rates"| node_learned_rates
node_schedule_engine -->|"writes schedule"| node_schedule_data
node_build -->|"invokes exporter"| node_xer_export
node_schedule_data -->|"reads schedule"| node_xer_export
node_xer_export -->|"loads template"| node_xer_template
node_xer_export -->|"imports into P6"| node_p6

click node_reader "https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/read_boq.py"
click node_typing_engine "https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/apply_types.py"
click node_vocabulary "https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/worktypes.py"
click node_questionnaire "https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/questions.py"
click node_build "https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/build.py"
click node_schedule_engine "https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/plan.py"
click node_learned_rates "https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/data/rates.json"
click node_xer_export "https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/export.py"
click node_xer_template "https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/data/xer_template.json"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_reader,node_brief toneBlue
class node_decisions,node_typing_engine,node_vocabulary,node_typed_lines toneAmber
class node_questionnaire,node_answers toneMint
class node_schedule_engine,node_learned_rates,node_schedule_data toneRose
class node_build,node_xer_export,node_xer_template,node_boq,node_claude,node_planner,node_p6 toneIndigo
```

## Components

### BOQ Intake

- [BOQ reader](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/read_boq.py): `scripts/read_boq.py`
- **BOQ brief**

### Typing Review

- **Typing decisions**
- [Typing validator](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/apply_types.py): `scripts/apply_types.py`
- [Work types](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/worktypes.py): `scripts/worktypes.py`
- **Typed lines**

### Planner Inputs

- [Planner questions](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/questions.py): `scripts/questions.py`
- **Planner answers**

### Schedule Engine

- [Schedule planner](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/plan.py): `scripts/plan.py`
- [Schedule rates](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/data/rates.json): `data/rates.json`
- **Draft schedule**

### P6 Delivery

- [Build orchestrator](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/build.py): `scripts/build.py`
- [P6 XER exporter](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/scripts/export.py): `scripts/export.py`
- [XER template](https://github.com/hamzaabduljabbar/autoconst-boq-schedule/blob/main/data/xer_template.json): `data/xer_template.json`

### Other components

- **BOQ file**
- **Claude**
- **Planner**
- **Primavera P6**

## Connections

- BOQ file → BOQ reader: provides BOQ (evidence: `README.md`)
- BOQ reader → BOQ brief: writes brief (evidence: `README.md`)
- BOQ brief → Claude: presents lines (evidence: `README.md`)
- Claude → Typing decisions: classifies lines (evidence: `README.md`)
- BOQ brief → Typing validator: reads lines (evidence: `scripts/apply_types.py`)
- Typing decisions → Typing validator: reads decisions (evidence: `scripts/apply_types.py`)
- Typing validator → Work types: uses types (evidence: `scripts/apply_types.py`)
- Typing validator → Typed lines: writes lines (evidence: `scripts/apply_types.py`)
- Typed lines → Planner questions: provides lines (evidence: `scripts/questions.py`)
- Planner questions → Schedule planner: runs draft (evidence: `scripts/questions.py`)
- Planner questions → Planner answers: writes questions (evidence: `scripts/questions.py`)
- Planner → Planner answers: fills answers (evidence: `README.md`)
- Planner answers → Build orchestrator: configures build (evidence: `scripts/build.py`)
- Build orchestrator → Schedule planner: invokes planner (evidence: `scripts/build.py`)
- Schedule planner → Work types: uses work types (evidence: `scripts/plan.py`)
- Schedule planner → Schedule rates: reads rates
- Schedule planner → Draft schedule: writes schedule (evidence: `scripts/plan.py`)
- Build orchestrator → P6 XER exporter: invokes exporter (evidence: `scripts/build.py`)
- Draft schedule → P6 XER exporter: reads schedule (evidence: `scripts/export.py`)
- P6 XER exporter → XER template: loads template (evidence: `scripts/export.py`)
- P6 XER exporter → Primavera P6: imports into P6 (evidence: `README.md`)
