A source-available, claims-grade construction scheduling and project-controls platform. A deterministic CPM/DCMA/EVM engine at the core; risk (SRA/Bayesian), resource optimization (RCPSP/Pareto), a reality-capture loop, and an LLM copilot layered around it as decision-support — never replacing the human or the deterministic schedule.
License: PolyForm Noncommercial 1.0.0 (see
LICENSE/NOTICE) — free for research, teaching, and other noncommercial use; commercial use is by separate license — contact Alireza Shojaei shojaei@vt.edu. Status: pre-release; see What's validated below anddocs/reports/RELEASE-READINESS.md. Real-site field validation is a post-launch activity.
- Deterministic core (the authority): CPM forward/backward pass with working calendars + constraints; DCMA-14 checks; Earned Value + Earned Schedule (SPI(t)); RCPSP/MRCPSP resource scheduling + multi-objective Pareto optioneering — all in-house, all tested against hand-worked oracles and public benchmarks.
- Risk & forecast: Schedule Risk Analysis (Monte-Carlo) + Bayesian duration priors → calibrated finish forecasts (P50/P80) with driver attribution.
- Reality-capture loop (M5): ingest progress (manual + 3D scan), map element↔activity↔zone, human-review the evidence, re-forecast. Scan→BIM registration + a 3D segmentation model feed it.
- Generative / AI moat (all gated): natural-language schedule authoring, BIM→schedule generation, and a copilot — every AI-proposed change is routed through the deterministic validator + a human approval gate (the LLM cannot write the authoritative schedule), and delay narratives cite evidence by a named method.
- Product: a FastAPI surface + a React/TS workspace (narrative / forecast / gantt / status / optioneering / baselines / reports).
This is an honest scope, not a sales sheet. Every number is recomputed deterministically by
scripts/build_evidence.py (the committed docs/reports/EVIDENCE.md):
| Capability | Dataset | Result |
|---|---|---|
| RCPSP optimality | PSPLIB J30 (committed instances) | solved to the published optimum (gap 0) |
| Forecast calibration | NYC capital projects (held-out) | P80 coverage 0.798 (Brier 0.25, CRPS 95 d) |
| EVM / Earned Schedule | Lipke hand-worked oracle | ES 4.5 (exact) |
| M5 re-forecast convergence | synthetic ground-truth overrun | P50 lands the known finish ±2 wd |
| Scan→BIM registration | synthetic corner cloud | fitness 1.0, inlier RMSE 6 mm |
| 3D element segmentation | synthetic-from-BIM (9 IFCs) | held-out mIoU 0.2459 (dependency-light baseline) |
| 3D element segmentation (real data) | real S3DIS, held-out Area-5 (Sonata/PTv3) | held-out mIoU 0.7384 — beats the synthetic baseline ~3× |
| 3D element segmentation (real, shell construction) | real Rohbau3D, site-disjoint test (Concerto-large) | held-out mIoU 0.5840 (18-class) — the first published Rohbau3D segmentation |
| Scan↔BIM element confirmation (real data) | real SLABIM, session-disjoint (Concerto-large) | per-class IoU door 0.708 / column 0.897 vs the prior method FM-Fusion (0.443 / 0.316) |
| 2D element segmentation (real data) | real HBD, held-out test (DINOv2-L) | held-out mIoU 0.5198 (9-class, image-level split; Window/Door detected) |
| 2D defect segmentation (real data) | real S2DS, official test (DINOv3-L) | held-out mIoU 0.8436 — beats the cited SOTA (0.66) and the 16-method field (0.665) by +0.18 |
| 2D defect segmentation (real, bridge) | real dacl10k, public val (ensemble) | mIoU 0.4758 — beats the published baseline (0.414); honestly short of the closed-challenge SOTA (0.51) |
| Reality-capture quality loop | Demo Tower showcase (scripts/demo_capture_loop.py) |
defect → human-gated rework → forecast-only re-time; baseline never touched |
Honesty rules we hold ourselves to (see docs/honesty.md / model cards):
- We state exactly what is validated, on what data, with the achieved number — never a vendor-style "up to X% faster/savings" claim.
- The 3D-seg mIoU 0.2459 is a synthetic-only baseline. Real-data training on the GPU lane must beat
it: a Sonata-pretrained PTv3 fine-tune on real S3DIS achieves 0.7384 mIoU on the held-out Area-5
(
capture3d-real-v1, single-crop, no TTA), pinned indocs/models/REPRODUCIBILITY.json— the achieved held-out number, never aspirational. (The two use different vocabularies — synthetic 9-class IFC vs standard 13-class S3DIS — so are not class-for-class comparable; the contrast reflects the real-vs-synthetic leap on the standard benchmark.) - AI is decision-support a human signs off, never an autonomous expert. Nothing AI-proposed is auto-applied to the schedule. A model-detected defect can only ever propose rework — it is always human-gated (no model confidence bypasses the gate) and only ever adjusts the forecast, never the approved baseline (ADR 0013).
- We lead with the per-class beat where the overall isn't a clean win: the SLABIM door/column IoU is the defensible scan↔BIM result; the overall mIoU is substrate-optimistic and not claimed as SOTA (model card).
- Delay narratives name their forensic method (e.g. AACE RP 29R-03 MIP) and cite the evidence; numbers must reconcile to engine facts or the narrative is rejected.
- Field generalization improves post-launch — the released models are honestly-scoped baselines.
pip install -e ".[dev]"
pytest -m "not benchmark" -q # the functional suite (Docker provides ephemeral Postgres)
python scripts/build_evidence.py # regenerate docs/reports/EVIDENCE.mdOne-command demo (API + UI + Postgres + a seeded sample): docker compose up (see docs/getting-started.md).
GPU model training is a separate lane on a CUDA box — see GPU_TRAINING.md.
src/scheduling_platform/— the engine + API;ui/— the React/TS workspace.- Design decisions are recorded as ADRs in
docs/adr/(baseline immutability, the LLM-never-writes rule, Redis-Streams queue, the PolyForm-Noncommercial license, …). Do not re-decide what's in an ADR. - How we build (strict TDD; dual-subagent self-gating; per-component exit reports in
docs/reports/) is inCONTRIBUTING.md.
Automated supply-chain (pip-audit/pnpm-audit/SBOM/trivy), app-security (headers/CORS/limits/authz + bandit/
semgrep/CodeQL), and data-protection (tenant isolation, export + right-to-erasure) run in CI — see
docs/security/ and SECURITY.md. Datasets are never redistributed here; provenance is in
docs/datasets/SOURCES.md.
PolyForm Noncommercial License 1.0.0 — free for research, teaching, and other noncommercial use.
Commercial use is not granted by this license; contact Alireza Shojaei shojaei@vt.edu for a commercial
license. See LICENSE and NOTICE (third-party attributions, incl. the MPXJ LGPL arm's-length boundary).