IFC-MCQ: Automatically Generating Multiple-Choice Benchmarks for Evaluating LLM Agents on IFC Data Retrieval
Organizations: GRID Lab, School of Built Environment, The University of New South Wales, Sydney, Australia · School of Civil and Environmental Engineering, The University of New South Wales, Sydney, Australia
Abstract
Industry Foundation Classes (IFC), the standard for building information exchange in architecture, engineering, and construction (AEC), is increasingly queried through large language models (LLMs) using natural language. Evaluating these systems at scale is difficult because free-text answers require costly human or LLM-based review. We propose IFC-MCQ, a method that automatically generates multiple-choice benchmarks from IFC files for exact option-set grading. The taxonomy covers 15 categories and 36 subtypes across four groups, with answer keys derived from the file and distractors constructed from file-derived values or predefined rules. We applied IFC-MCQ to IFC models of varying sizes and modelling characteristics to assess generation coverage and evaluated two agentic configurations on selected models using tool- and code-based retrieval. The evaluation exposed category-specific failure modes and showed that performance can vary with the source IFC model and retrieval interface. IFC-MCQ enables scalable benchmarking of LLM-based IFC retrieval in AEC workflows.
Figures & tables
| Work | What it does | Evaluation set; grading | Evaluation size |
| Systems | |||
| Yin et al. [44] | NL to BIMQL via GNN and ontology | Study-specific; automated query matching | Fixed query types |
| Ibba et al. [21] | NL to SPARQL over an IFC knowledge graph | Study-specific; manual | 28 questions |
| Iranmanesh et al. [22] | NL to Cypher over Neo4j | Study-specific; manual | 60 questions |
| Avgoren [5] | NL to Cypher over Neo4j with reduced IFC relationships | Study-specific; manual | 135 questions |
| Pacheco and Berkmiller [33] | NL to Cypher over Neo4j | Qualitative examples; no formal grading | Not reported |
| Group | Cat. | Name |
| (1) Direct retrieval | CLS | Class identification |
| ATT | Attribute retrieval | |
| PRP | Property retrieval | |
| BLN | Boolean property verification | |
| EXS | Existence / absence | |
| (2) Relational | TYP | Type object resolution |
| Cat. | Subtype | Type † | Probe (input output) |
| Direct retrieval | |||
| CLS | class by GUID | S | entity GUID IFC class. |
| ATT | attribute value | S | entity, attribute stored value. |
| PRP | property value | S | entity, pset, property stored value. |
| BLN | boolean check | B | entity, claimed Boolean whether it matches. |
| EXS | property existence | B | entity, class-common property whether populated. |
| IFC Model | Storeys | Elements | Spaces | Walls | Slabs | Windows | Doors |
|---|---|---|---|---|---|---|---|
| FZK Haus | 2 | 131 | 7 | 13 | 4 | 11 | 5 |
| Duplex | 4 | 268 | 21 | 57 | 21 | 24 | 14 |
| NiedriHaus | 4 | 146 | 19 | 45 | 8 | 16 | 16 |
| IAI Demo | 4 | 189 | 21 | 38 | 6 | 30 | 22 |
| Office | 3 | 986 | 99 | 487 | 2 | 69 | 102 |
| Institute | 5 | 989 | 82 | 119 | 26 | 206 | 77 |
| LLM | Size (params) |
|---|---|
| Proprietary frontier models | |
| qwen3.7-max [ 36 ] | n/a † |
| gpt-5.6-luna [ 31 ] | n/a † |
| compact | |
| gpt-5.4-mini [ 32 ] | n/a † |
| gpt-5.4-nano [ 32 ] | n/a † |
| Cat. | Type | Question | Options |
|---|---|---|---|
| CNT | S | Count the IfcSlab instances (subclasses included) in FZK-Haus.ifc . | (A) 15 (B) 4 ∗ (C) 1 (D) 88 (E) 7 |
| CLS | S | What is the IFC class of the entity (GlobalId 2OrWItJ6zAwBNp0OUxK$CR ) in Duplex.ifc ? | (A) IfcRoof (B) IfcSlab (C) IfcFooting (D) IfcWall (E) IfcBeam ∗ |
| SPA | S | Which storey does IfcBeam (GlobalId 3sG$iUZAX499eUK87UfZk_ , Name “Sparren-17”) belong to? | (A) IfcSite “Gelaende”, (B) IfcBuildingStorey “Dachgeschoss” ∗ , (C) IfcBuilding “FZK-Haus”, (D) IfcBuildingStorey “Erdgeschoss” |
| ATT | S | What is the value of the OverallWidth attribute of IfcDoor (GlobalId 2qiPPF3FrF8OIqfrKiSUqm , Name “Innentuer-3”)? | (A) 1.01 (B) 2.01 (C) 0.885 ∗ (D) 2 (E) 1 |
| QTY | S | Read the quantity “Length” from quantity set “BaseQuantities” of IfcWallStandardCase (GlobalId 3Ttjr$59XEWfWN1WUHjelZ , Name “Wand-Ext-OG-4”). What is its value in metres? | (A) 3.8 m (B) 3 m (C) 4.08 m (D) 10 m (E) 12 m ∗ |
| PRP | S | For IfcBeam (GlobalId 31Quw2HAvFqv$9_JgCuemp , Name “Sparren-6”), read “Slope” from property set “Pset_BeamCommon”. What is its value? | (A) 0 (B) 34.5 (C) 42 (D) 25.5 (E) 30 ∗ |
| IFC Model | Generated | Verified | Skipped during generation | 10 to <40 items | <10 items |
| FZK Haus | 596 (6.72s) | all (3.16s) | PRP (3) | AGG (36) | - |
| Duplex | 581 (4s) | all (1.42s) | PRP (181), EXS (68) | QTY (21) | - |
| NiedriHaus | 495 (3.87s) | all (1.88s) | PRP (63), EXS (68) | PRP (19), TYP (32), AGG (13), CMP (30) | EXS (1) |
| IAI Demo | 571 (3.81s) | all (2.42s) | EXS (12) | AGG (19), CMP (32) | - |
| Office | 597 (9.02s) | all (2.83s) | PRP (98), EXS (28) | CMP (37) | - |
| Institute | 589 (4.08s) | all (2.17s) | - | AGG (33), CMP (36) | - |
| Audit criterion | Passed |
|---|---|
| Grammatically well formed and placeholders correctly instantiated | 89/89 (100%) |
| Human-derived answer matched the benchmark answer key | 89/89 (100%) |
| Answer uniquely represented among the options | 89/89 (100%) |
| LLM | FZK Haus+Duplex | Institute+Office+Trapelo+TNW |
|---|---|---|
| gpt-5.6-luna | 100.0 (300/300) | 97.6 (576/590) |
| deepseek-v4-flash | 99.7 (299/300) | 93.9 (554/590) |
| gpt-oss-120b | 99.3 (298/300) | 97.1 (573/590) |
| qwen3.6-27b | 100.0 (300/300) | 98.0 (578/590) |
| gemma-3-27b-it | 87.0 (261/300) | 82.7 (488/590) |
| LLM | FZK+Duplex | Institute+Office+Trapelo+TNW |
|---|---|---|
| gpt-5.6-luna | 98.3 (295/300) | 97.6 (576/590) |
| deepseek-v4-flash | 97.7 (293/300) | 97.5 (575/590) |
| gpt-oss-120b | 92.7 (278/300) | 92.5 (546/590) |
| qwen3.6-27b | 95.7 (287/300) | 95.8 (565/590) |
| gemma-3-27b-it | 69.7 (209/300) | 62.7 (370/590) |
| LLM | Tool agent, all six models | Code agent, all six models | Code tool |
|---|---|---|---|
| gpt-5.6-luna | 98.4 (876/890) | 97.9 (871/890) | pp |
| deepseek-v4-flash | 95.8 (853/890) | 97.5 (868/890) | pp |
| gpt-oss-120b | 97.9 (871/890) | 92.6 (824/890) | pp |
| qwen3.6-27b | 98.7 (878/890) | 95.7 (852/890) | pp |
| gemma-3-27b-it | 84.2 (749/890) | 65.1 (579/890) | pp |
| Five LLMs | Other four LLMs, excluding gemma-3-27b-it | |||
|---|---|---|---|---|
| Category | Tool agent | Code agent | Tool agent | Code agent |
| CLS | 100.0 (300/300) | 100.0 (300/300) | 100.0 (240/240) | 100.0 (240/240) |
| ATT | 100.0 (300/300) | 99.7 (299/300) | 100.0 (240/240) | 100.0 (240/240) |
| PRP | 95.7 (287/300) | 98.3 (295/300) | 100.0 (240/240) | 99.2 (238/240) |
| BLN | 98.3 (295/300) | 95.0 (285/300) | 100.0 (240/240) | 98.3 (236/240) |
| EXS | 87.7 (263/300) | 92.0 (276/300) | 97.5 (234/240) | 90.8 (218/240) |
| LLM | Overall | Single | Multi | Boolean |
|---|---|---|---|---|
| high-performing proprietary and open-weight LLMs in Stage 2 and 3 | ||||
| gpt-5.6-luna | 49.7 (442/890) | 49.7 | 30.1 | 61.5 |
| qwen3.6-27b | 49.7 (442/890) | 49.6 | 24.7 | 65.8 |
| low-performing LLM in Stages 2 and 3 | ||||
| gemma-3-27b-it | 38.3 (341/890) | 38.1 | 8.2 | 58.1 |
| low-performing LLM in Stage 1 | ||||
| Mean calls | One call (%) | Truncated | ||||
| IFC model | Tool | Code | Tool | Code | Tool | Code |
| FZK Haus | 1.30 | 1.89 | 82.7 | 63.7 | 0 | 1 |
| Duplex | 1.17 | 1.77 | 87.9 | 63.7 | 0 | 9 |
| Institute | 1.34 | 2.09 | 80.3 | 60.9 | 39 | 15 |
| Office | 1.22 | 1.92 | 84.0 | 62.0 | 26 | 7 |
| Trapelo | 1.36 | 1.91 | 78.0 | 61.3 | 39 | 12 |
| Tool | Code | |||
|---|---|---|---|---|
| LLM | Input | Output | Input | Output |
| gpt-5.6-luna | 2,533 | 98 | 2,398 | 188 |
| qwen3.6-27b | 2,667 | 1107 | 5,000 | 1,476 |
| gpt-oss-120b | 3,716 | 347 | 4,247 | 948 |
| deepseek-v4-flash | 5,369 | 1,904 | 9,480 | 3,276 |
| gemma-3-27b-it | 4,213 | 200 | 5,302 | 552 |
Synthetic Benchmark Generation
Synthetic benchmark generation creates controlled, verifiable evaluation tasks and datasets to test models across diverse settings.
See all 289 papers