The AI building surveyor. It reads a façade from ordinary drone footage, grades every defect, and drafts the legally required inspection report.

Ordinary drone footage → 3D digital twin → defect measured in mm → Facadia-VLM grades severity → auto-drafted MBIS report + building-health score. 36-second loop; see the 2-min technical film for the full story.
Facadia's vision-language model reads a building façade from ordinary drone footage. It explains and grades every defect, drafts the legally required MBIS inspection report, and a human Registered Inspector (RI) signs it off. Every inspection adds to a building-health data layer that becomes a risk score for buildings, sold to insurers, banks and government.
EuroTech Hong Kong Hackathon, Munich 2026 (Smart City track). We sell to the licensed inspectors who are legally accountable, make them faster and lower their liability, and stay hardware-agnostic. They detect cracks; we write the inspection.
| What it does | Runs on | |
|---|---|---|
🧠 survey/ | The product. Façade frames go in, computer vision measures defects in mm, the Facadia VLM grades and explains them and drafts the MBIS report, and you get a health score plus a dashboard. | Mac / CPU |
🗺️ recon3d/ | The 3D layer. Drone video becomes a navigable 3D model (point cloud or Gaussian-splat fly-through). The live path implements AnySplat (arXiv:2505.23716). | NVIDIA GPU |
The hybrid is the IP. Classical computer vision is the ruler: precise, defensible millimetre measurements. The Facadia VLM is the surveyor: it reasons about severity and cause, writes the report, and handles defects no model was trained on. Severity is grounded in real HK and BRE standards rather than invented. The full design is in ARCHITECTURE.md.
drone footage -> detect + measure (CV, mm) -> Facadia-VLM grades it -> MBIS report + health score
the millimetres are handed to the model as fact a Registered Inspector signs it
cd survey
echo 'FACADIA_API_KEY=...' > .env # gitignored
uv run python run.py --images-dir data/samples --out demo --gsd 0.5
python -m http.server 8000 # open http://localhost:8000/dashboard/
A committed showcase already lives in survey/demo/. Clone the repo, open
survey/dashboard/, and you get a real graded inspection (a structural crack rated
Serious, spalling with exposed corroding rebar rated Critical, building-health
3/100) in the console shown above.
The 3D layer needs a GPU. See recon3d/README.md.
The ruler is testable. survey/eval/measure_accuracy.py draws synthetic cracks of
known width and measures them:
| True width | Measured | Abs. error |
|---|---|---|
| 4 mm | 5.8 mm | 1.8 mm |
| 6 mm | 7.7 mm | 1.7 mm |
| 8 mm | 9.8 mm | 1.8 mm |
| 10 mm | 11.5 mm | 1.5 mm |
| 12 mm | 10.2 mm | 1.8 mm |
Mean absolute error is about 1.7 px, which is sub-millimetre at a typical close-range drone GSD. Hairline cracks below roughly 3 px are the stated limit, and a zoom or thermal pass is the roadmap fix (jury Q&A T6/T7). The model never invents a measurement; the millimetres come from computer vision and are handed to it as fact.
pytest covers the deterministic core (GSD, scoring,
detection, report) and ruff runs on every push (workflow).
Locally: cd survey && uv run --extra dev pytest.uv (uv.lock is committed).recon3d/pipeline.py runs on a
cloud GPU (RunPod, RTX PRO 4000): VGGT recovers the camera poses and depth, then we
train a Gaussian splat (nerfstudio Splatfacto) and render the fly-through.Today's hybrid (the CV ruler plus the Facadia VLM, with RI sign-off) is the starting point. The asset that compounds is the data. Every signed inspection adds a geo-located, time-stamped defect record to a city-scale façade-health dataset that no incumbent has.
Hong Kong is the densest, oldest-stock and most safety-pressured vertical city on earth. It has a legal inspection mandate (MBIS requires buildings 30 years and older to inspect external walls every 10 years, around 2,000 designated each year), a fatal 2025 façade fire, the end of bamboo scaffolding, a government opening its low-altitude airspace, and an insurance industry next door that pays for building-risk data. Manual inspection is slow, dangerous and subjective. Facadia collapses the surveyor hours, not only the drone flight, and turns every inspection into part of a city-scale risk dataset.
Facadia/
├── survey/ # the AI building surveyor (defect grading + MBIS report) (start here)
│ ├── core/ # frames, gsd, detect, reason (VLM), score, report
│ ├── dashboard/ # self-contained Palantir-style viewer
│ ├── eval/ # measurement-accuracy harness
│ ├── tests/ # pytest suite (CI)
│ └── demo/ # committed showcase output
├── recon3d/ # 3D reconstruction (VGGT + Gaussian splatting; AnySplat live path)
├── docs/ # ARCHITECTURE, AnySplat write-up + paper, screenshots
├── ARCHITECTURE.md
└── CITATION.cff
MIT for our code. Third-party models (VGGT, AnySplat, YOLO) and the sample
defect images keep their own licenses. See docs/anysplat.md,
recon3d/README.md and
survey/data/samples/ATTRIBUTION.md.
The AI building surveyor. It reads a façade from ordinary drone footage, grades every defect, and drafts the legally required inspection report.

Ordinary drone footage → 3D digital twin → defect measured in mm → Facadia-VLM grades severity → auto-drafted MBIS report + building-health score. 36-second loop; see the 2-min technical film for the full story.
Facadia's vision-language model reads a building façade from ordinary drone footage. It explains and grades every defect, drafts the legally required MBIS inspection report, and a human Registered Inspector (RI) signs it off. Every inspection adds to a building-health data layer that becomes a risk score for buildings, sold to insurers, banks and government.
EuroTech Hong Kong Hackathon, Munich 2026 (Smart City track). We sell to the licensed inspectors who are legally accountable, make them faster and lower their liability, and stay hardware-agnostic. They detect cracks; we write the inspection.
| What it does | Runs on | |
|---|---|---|
🧠 survey/ | The product. Façade frames go in, computer vision measures defects in mm, the Facadia VLM grades and explains them and drafts the MBIS report, and you get a health score plus a dashboard. | Mac / CPU |
🗺️ recon3d/ | The 3D layer. Drone video becomes a navigable 3D model (point cloud or Gaussian-splat fly-through). The live path implements AnySplat (arXiv:2505.23716). | NVIDIA GPU |
The hybrid is the IP. Classical computer vision is the ruler: precise, defensible millimetre measurements. The Facadia VLM is the surveyor: it reasons about severity and cause, writes the report, and handles defects no model was trained on. Severity is grounded in real HK and BRE standards rather than invented. The full design is in ARCHITECTURE.md.
drone footage -> detect + measure (CV, mm) -> Facadia-VLM grades it -> MBIS report + health score
the millimetres are handed to the model as fact a Registered Inspector signs it
cd survey
echo 'FACADIA_API_KEY=...' > .env # gitignored
uv run python run.py --images-dir data/samples --out demo --gsd 0.5
python -m http.server 8000 # open http://localhost:8000/dashboard/
A committed showcase already lives in survey/demo/. Clone the repo, open
survey/dashboard/, and you get a real graded inspection (a structural crack rated
Serious, spalling with exposed corroding rebar rated Critical, building-health
3/100) in the console shown above.
The 3D layer needs a GPU. See recon3d/README.md.
The ruler is testable. survey/eval/measure_accuracy.py draws synthetic cracks of
known width and measures them:
| True width | Measured | Abs. error |
|---|---|---|
| 4 mm | 5.8 mm | 1.8 mm |
| 6 mm | 7.7 mm | 1.7 mm |
| 8 mm | 9.8 mm | 1.8 mm |
| 10 mm | 11.5 mm | 1.5 mm |
| 12 mm | 10.2 mm | 1.8 mm |
Mean absolute error is about 1.7 px, which is sub-millimetre at a typical close-range drone GSD. Hairline cracks below roughly 3 px are the stated limit, and a zoom or thermal pass is the roadmap fix (jury Q&A T6/T7). The model never invents a measurement; the millimetres come from computer vision and are handed to it as fact.
pytest covers the deterministic core (GSD, scoring,
detection, report) and ruff runs on every push (workflow).
Locally: cd survey && uv run --extra dev pytest.uv (uv.lock is committed).recon3d/pipeline.py runs on a
cloud GPU (RunPod, RTX PRO 4000): VGGT recovers the camera poses and depth, then we
train a Gaussian splat (nerfstudio Splatfacto) and render the fly-through.Today's hybrid (the CV ruler plus the Facadia VLM, with RI sign-off) is the starting point. The asset that compounds is the data. Every signed inspection adds a geo-located, time-stamped defect record to a city-scale façade-health dataset that no incumbent has.
Hong Kong is the densest, oldest-stock and most safety-pressured vertical city on earth. It has a legal inspection mandate (MBIS requires buildings 30 years and older to inspect external walls every 10 years, around 2,000 designated each year), a fatal 2025 façade fire, the end of bamboo scaffolding, a government opening its low-altitude airspace, and an insurance industry next door that pays for building-risk data. Manual inspection is slow, dangerous and subjective. Facadia collapses the surveyor hours, not only the drone flight, and turns every inspection into part of a city-scale risk dataset.
Facadia/
├── survey/ # the AI building surveyor (defect grading + MBIS report) (start here)
│ ├── core/ # frames, gsd, detect, reason (VLM), score, report
│ ├── dashboard/ # self-contained Palantir-style viewer
│ ├── eval/ # measurement-accuracy harness
│ ├── tests/ # pytest suite (CI)
│ └── demo/ # committed showcase output
├── recon3d/ # 3D reconstruction (VGGT + Gaussian splatting; AnySplat live path)
├── docs/ # ARCHITECTURE, AnySplat write-up + paper, screenshots
├── ARCHITECTURE.md
└── CITATION.cff
MIT for our code. Third-party models (VGGT, AnySplat, YOLO) and the sample
defect images keep their own licenses. See docs/anysplat.md,
recon3d/README.md and
survey/data/samples/ATTRIBUTION.md.