About the Project
Inspiration
Fire department orientation plans in Switzerland must follow strict Feukos standards — but they're still drawn manually from dense CAD files full of furniture, plumbing, and annotations nobody needs in an emergency. We wanted to automate that.
How We Built It
A four-stage pipeline: parse DWG/DXF → cluster SVG elements by spatial proximity → send rasterised images to a Vision-Language Model (Qwen3-VL) for room detection and cleanup guidance → regenerate a clean, Feukos-compliant PNG with injected legend. Wrapped in a FastAPI backend with a drag-and-drop frontend.
The clustering merges elements whose centroids satisfy:
$$d(\mathbf{c}_i, \mathbf{c}_j) < \epsilon \quad \wedge \quad \frac{\min(A_i, A_j)}{\max(A_i, A_j)} > \tau$$
so small annotations never absorb large room polygons.
Challenges
- CAD coordinate scale — walls can sit at coordinates like $(148000, 89000)$; everything collapses to one pixel without auto-scaling the render.
- DWG is proprietary — we had to shell out to the ODA File Converter binary with no Python API.
- VLM noise sensitivity — cluttered clusters made the model describe annotations instead of the floor plan; we added a density pre-filter to split them first.
What We Learned
The hard part wasn't AI — it was geometry. Getting SVG clustering and coordinate normalisation right took more iteration than the model integration.


Log in or sign up for Devpost to join the conversation.