Click to play on YouTube.
In AEC projects, information lives in two disconnected worlds: BIM models (IFC files with geometry, properties, spatial hierarchy) and technical documents (fire safety reports, thermal specs, structural calculations). When one changes, the other rarely follows — leading to costly errors, rework, and liability.
CastorIQ is a bi-directional LLM assistant that bridges both. Ask cross-cuts the model and the docs and answers with citations. Modify turns a plain-language request into a small piece of IfcOpenShell code, runs it on a copy, and shows the measured diff for approval before touching the IFC. Every approved change is a Git commit on a per-project repository.
The hosted beta lives at castoriq.io — invite-only, manual vetting.
What you do
- Ask — Natural-language queries across the IFC model and any uploaded specs. Answers cite the entity or page they came from.
- Modify — Propose property changes in plain English. The model writes the change as code; what the code did to a copy is diffed, gated and approved by a human.
- Explore — Click through floor plans, points of interest, and uploaded media — no BIM viewer required.
What backs it
- Versioned — Every accepted modification is a Git commit on a per-project repository. Reverts cost a click.
- Manage — Track assets, work orders, permits, and maintenance against the same model your team queries.
- Yours — Bring your own Anthropic or Groq key — or run fully on-prem with Ollama. Your IFC stays where you put it.
Geometry modifications are out of scope. CastorIQ handles properties, materials, classifications, and psets — not the placement of physical elements.
The fastest way to see CastorIQ is the hosted beta at castoriq.io. It's invite-only — apply through the form on the landing page and a real human reads every application. You'll get a sample IFC project pre-loaded so you can try Ask and Modify in seconds, plus a daily token allowance for cloud LLM use.
CastorIQ is a Django app with a Postgres + pgvector backend. You need Python 3.12+, Docker, and uv.
git clone https://github.com/CarloCogni/CastorIQ.git
cd CastorIQ
cp .env.example .env # then edit DB / LLM credentials
docker compose up -d # Postgres 16 + pgvector
uv sync # install Python deps
uv run src/manage.py migrate
uv run src/manage.py runserver 8001 # http://localhost:8001Long version with prerequisites, Ollama setup, model downloads, and BYOK configuration: docs/setup.md.
| Component | Technology |
|---|---|
| Backend | Django 5.x + Django REST Framework |
| Database | PostgreSQL 16 + pgvector |
| Real-time | Django Channels + Daphne (ASGI) |
| LLM (local) | Ollama (user-selectable) |
| LLM (BYOK) | Anthropic Claude · Groq |
| Embeddings | mxbai-embed-large (1024d) |
| IFC processing | IfcOpenShell |
| Orchestration | LangChain + LangGraph |
| Frontend | Django templates + HTMX + Bootstrap 5 |
| Package manager | UV |
| Containerization | Docker + Docker Compose |
Each user picks their preferred Ollama model from Settings — the choice persists across sessions and applies to every pipeline (RAG, intent classification, code generation). BYOK users can override per purpose.
| VRAM tier | Example GPUs | Recommended models |
|---|---|---|
| Lite (≤ 6 GB) | GTX 1660, RTX 3060 6GB | qwen3:0.6b, qwen3:1.7b, llama3.2:3b |
| Standard (≤ 8 GB) | RTX 4060, RTX 3060 Ti | qwen3:4b, qwen3:8b, llama3.1:8b |
| Performance (≤ 12 GB) | RTX 4070, RTX 3080 | qwen3:14b, qwen3:30b-a3b (MoE) |
| High-end (≤ 24 GB) | RTX 4090 | qwen3:32b, qwen3.5:35b |
| Workstation (48 GB+) | A6000, multi-GPU | llama3.3:70b, qwen3:235b-a22b (MoE) |
The curated model registry lives in src/core/model_registry.py. Models not in the registry still work — they just show as "Unknown model" in the UI. The fallback is always settings.OLLAMA_MODEL from .env.
Detailed docs live in docs/:
- Setup guide — prerequisites, installation, running the project
- Architecture — system design, data models, data flow
- Conventions — code style, Django patterns, developer guidelines
- UI/UX — interface design, layout, interaction patterns
- Write-back system — code-and-verify pipeline, maximal verification, what changed from V2
- RAG pipeline — embedding flow, retrieval, citation rendering
- BYOK setup — bring your own Anthropic or Groq key
- Testing — test strategy, layers, running the suite
- Benchmarks & evaluation — parser performance harness, natural-language pipeline benchmark, evaluation records
- Project history — academic origin and design decisions
Issues and pull requests welcome. Open an issue first for anything larger than a typo fix — it's a small team and we want to align on scope before code lands. Please follow the code conventions and run uv run ruff check . && uv run ruff format . before committing.
CastorIQ is AGPL-3.0. Contributions are accepted under the same license.
CastorIQ was built by Group 4 at Zigurat Institute of Technology as part of the MSc in AI for Architecture & Construction (2026):
Pavla Hornická · Carlo Cogni · Islam Mohamed Sabra Ahmed · Maria Makri · Erez Bader
CastorIQ is released under the GNU Affero General Public License v3.0. You can use, modify, and self-host it freely. If you run CastorIQ as a hosted service for others, you must publish your modifications under the same license.
The academic origin is documented in docs/history.md.

