How konkovdv/aerobim works
Purpose and entry points
AeroBIM is an openBIM acceptance-criteria assistant for IFC, IDS, drawings, requirements, and calculation evidence. It produces a deterministic ISO-19650 Shared-gate report with provenance, capability status, exports, and optional advisory AI; it is explicitly not a customer-ready CDE/MEP/calculation-correctness product.
Backend starts at backend/src/aerobim/main.py; FastAPI routing is assembled in backend/src/aerobim/presentation/http/api.py. The browser review shell starts at frontend/src/main.tsx and frontend/src/App.tsx.
Layered backend and composition
The Python backend follows inward Clean Architecture: domain models/ports, application use cases, infrastructure adapters, then HTTP presentation. Constructor DI binds ports to enabled adapters and environment-selected implementations.
• backend/src/aerobim/domain/ports.py
• backend/src/aerobim/core/di/container.py
• backend/src/aerobim/infrastructure/di/bootstrap.py
Configuration determines fail-closed profiles, authorization, optional engines, storage, and AI routing through backend/src/aerobim/core/config/settings.py.
Package ingestion and analysis orchestration
The central flow accepts uploaded/stored package inputs or direct analysis requests, constructs a package trace, applies completeness/intake gates, and runs the project-package orchestration. Larger requests can use the same-process job submission/polling path.
• backend/src/aerobim/presentation/http/routes/uploads.py
• backend/src/aerobim/application/use_cases/analyze_project_package.py
• backend/src/aerobim/application/use_cases/analyze_project_package_jobs.py
Outputs aggregate findings, evidence references, run manifest, capabilities, and a PackageOutcome; failed required capabilities prevent a passing Shared-gate result.
Deterministic validation engines
The deterministic core fuses IFC property/quantity checks, IDS validation, requirements extraction/interpretation, cross-document contradiction detection, drawing annotations, and optional clash/MEP checks.
• backend/src/aerobim/application/services/analyze_orchestrators.py
• backend/src/aerobim/infrastructure/adapters/ifc_open_shell_validator.py
• backend/src/aerobim/infrastructure/adapters/ifc_tester_ids_validator.py
Requirements can be compiled to IDS via backend/src/aerobim/application/use_cases/compile_requirements_to_ids.py; adapters isolate IfcOpenShell, IfcTester, Docling, CAD/PDF, and optional geometry dependencies from domain policy.
Evidence, verdict, and human review boundary
Domain objects encode findings, provenance, capability contracts, review state, signatures, and reproducibility. Verdict ownership is deterministic; advisory and HITL events do not independently turn a report into a pass.
• backend/src/aerobim/domain/findings.py
• backend/src/aerobim/domain/finding_provenance.py
• backend/src/aerobim/application/use_cases/apply_norm_rule_hitl_event.py
Reports support list/detail, review-event, KPI, and source/preview retrieval routes in backend/src/aerobim/presentation/http/routes/reports.py.
AI and drawing advisory boundary
Hybrid routing classifies data and applies privacy/trust policy before optional LLM/VLM advisory calls. It is verdict-neutral (summary.passed must be invariant with AI off/on), budgeted, audited, and guarded against unsafe egress.
• backend/src/aerobim/application/services/hybrid_route_gate.py
• backend/src/aerobim/domain/hybrid/model_router.py
• backend/src/aerobim/infrastructure/adapters/openai_compat_llm_provider.py
Drawing analysis uses structured/raster/region-restricted pipelines and evidence grounding, but human-level CV remains an explicitly missing capability.
Persistence, exports, and integrations
Report payloads and binary artifacts sit behind ports: local filesystem/object storage by default, optional S3/MinIO artifacts and Postgres summary indexing. BCF 2.1/3.0 ZIP is exported structurally; API push is experimental and independent CDE import is not verified.
• backend/src/aerobim/infrastructure/adapters/local_object_store.py
• backend/src/aerobim/infrastructure/adapters/s3_object_store.py
• backend/src/aerobim/infrastructure/adapters/bcf3_exporter.py
Relevant HTTP export endpoints are in backend/src/aerobim/presentation/http/routes/exports.py; BCF API push is represented by backend/src/aerobim/application/use_cases/push_report_to_bcf_api.py.
Runtime and client surfaces
Material runtime: Python 3.12+, FastAPI/Uvicorn in Docker; compose definitions are docker-compose.yml and docker-compose.production.yml. Optional infrastructure includes Redis job storage, Postgres, and S3-compatible storage. The TypeScript/Vite frontend renders IFC via web-ifc/Three.js and presents findings, provenance, capability honesty, and drawing evidence.
• frontend/src/lib/api.ts
• frontend/src/lib/ifc-scene.ts
• frontend/src/components/ProvenancePanel.tsx
Main entry points: analyze_orchestrators.py Deterministic orchestrators · api.py FastAPI API assembly · analyze_project_package.py Package analysis · container.py DI container
Components 20
Python backend
Clean Architecture validation service.
- FastAPI API assembly
backend/src/aerobim/presentation/http/api.py - Package upload routes
backend/src/aerobim/presentation/http/routes/uploads.py - Report review routes · Serves reports, review events, KPIs, sources, and previews.
backend/src/aerobim/presentation/http/routes/reports.py - Export routes
backend/src/aerobim/presentation/http/routes/exports.py - Package analysis · Builds package trace, gates intake, and returns PackageOutcome.
backend/src/aerobim/application/use_cases/analyze_project_package.py - Analysis jobs · Same-process submission and polling for larger requests.
backend/src/aerobim/application/use_cases/analyze_project_package_jobs.py - Deterministic orchestrators · Aggregates validation findings, evidence, manifest, and capabilities.
backend/src/aerobim/application/services/analyze_orchestrators.py - Requirements to IDS
backend/src/aerobim/application/use_cases/compile_requirements_to_ids.py - Findings & provenance · Owns deterministic verdict, review state, signatures, and reproducibility.
backend/src/aerobim/domain/findings.py - HITL review events · Human events cannot independently create a passing verdict.
backend/src/aerobim/application/use_cases/apply_norm_rule_hitl_event.py - Runtime settings · Selects fail-closed profiles, adapters, storage, and AI policy.
backend/src/aerobim/core/config/settings.py - DI container · Binds ports to enabled implementations.
backend/src/aerobim/core/di/container.py - IFC validation · Checks IFC properties and quantities.
backend/src/aerobim/infrastructure/adapters/ifc_open_shell_validator.py - IDS validation
backend/src/aerobim/infrastructure/adapters/ifc_tester_ids_validator.py
Optional advisory
Verdict-neutral and capability-gated.
- Hybrid route gate · Classifies data and enforces privacy, trust, budget, and egress policy.
backend/src/aerobim/application/services/hybrid_route_gate.py - LLM/VLM provider · Optional audited advisory output only.
backend/src/aerobim/infrastructure/adapters/openai_compat_llm_provider.py
Persistence & integrations
- Artifact storage · Local storage by default; S3-compatible storage is optional.
backend/src/aerobim/infrastructure/adapters/local_object_store.py - BCF ZIP export · Produces structural BCF 2.1/3.0 ZIP exports.
backend/src/aerobim/infrastructure/adapters/bcf3_exporter.py
Browser client
- Review application · Presents findings, provenance, capabilities, and drawing evidence.
frontend/src/App.tsx - IFC scene viewer
frontend/src/lib/ifc-scene.ts
Connections 22
- FastAPI API assembly → Package upload routes: mounts
- FastAPI API assembly → Report review routes: mounts
- FastAPI API assembly → Export routes: mounts
- Package upload routes → Package analysis: starts analysis
- Package upload routes → Analysis jobs: submits large jobs
- Analysis jobs → Package analysis: runs
- Package analysis → Deterministic orchestrators: orchestrates
- Package analysis → Artifact storage: reads and writes artifacts
- Deterministic orchestrators → IFC validation: validates IFC
- Deterministic orchestrators → IDS validation: validates IDS
- Requirements to IDS → IDS validation: produces IDS for validation
- Deterministic orchestrators → Findings & provenance: creates deterministic findings
- Deterministic orchestrators → Hybrid route gate: requests advisory
- Hybrid route gate → LLM/VLM provider: allowed advisory calls
- Report review routes → Findings & provenance: retrieves outcomes
- Report review routes → HITL review events: applies review events
- Export routes → BCF ZIP export: exports reports
- DI container → Runtime settings: uses selections
- DI container → IFC validation: binds port
- DI container → Artifact storage: binds port
- Review application → FastAPI API assembly: calls HTTP API
- Review application → IFC scene viewer: renders IFC