Building practical AI
Deepak Kumar Tiwari

Deepak Kumar Tiwari

Technology & AI Leader · Building practical systems

Multimodal inspection / Guide 79

BIM Emergency Exit Review Is More Than Counting Doors

Build a BIM emergency exit review harness that checks model identity, route coverage, and uncertainty while keeping life-safety certification with qualified people.

Illustrative engineering guide. Examples are not client deployments, production-ready integrations, or evidence of measured results. Validate the design with your domain and security owners.

Reference workflow: Approved model identity; Exit and route candidates; Coverage and geometry checks; Qualified rule interpretation; Advisory review packet.
Reference workflow. Steps identify responsibilities, not necessarily separate agents. Branches and recovery paths are explained below. Open full-size diagram.

A hypothetical facilities engineer uploads a BIM export and a corridor walk-through video, then asks whether the second floor has enough emergency exits. An assistant finds three door objects tagged exit and answers that the floor passes. Two objects represent leaves of the same doorway, the third belongs to an old model revision, and the video never shows the discharge beyond the stair.

Counting exit labels is a useful inventory check, not life-safety certification. This workflow produces an advisory packet for a qualified reviewer who establishes applicable jurisdiction, occupancy, code edition, and review scope. It cannot authorize occupancy or declare a building safe. Its synthetic harness checks evidence completeness and identity, not a real BIM parser, evacuation model, vision system, or code-compliance engine.

Establish the Review Basis

Bind the review to building, level, approved model revision, export configuration, and element identities. Preserve both source-model and IFC-export digests because an export can omit geometry or properties. Record the intended model coverage, missing storeys, excluded disciplines, and objects that failed geometry conversion. An empty extraction result means extraction may have failed; it does not prove there are no obstructions or no exits.

The reviewer must distinguish doors, door leaves, exit access, exits, and discharge routes. Two adjacent leaves do not automatically provide independent routes. A space-to-door graph is only as good as its connectivity and semantic mapping. A door with an exit label may be locked, inaccessible, wrongly classified, or connected to a route that does not lead where the model suggests.

OSHA 1910.36 illustrates why counts alone are insufficient: the US workplace rule addresses route number, separation, discharge, door operation, capacity, and dimensions, with conditions affecting the number required. It is not a universal building-code rule. Do not translate its text into a global “two doors equals safe” threshold. Qualified reviewers select the rules for the actual location and occupancy.

Combine Model and Site Evidence Carefully

Use model coordinates with documented origin, axes, level elevation, and units. For a video observation, retain capture session, original media digest, frame timestamp, and camera-to-model registration. A sign visible in a frame is a candidate location cue, not proof of route continuity. Occluded or unrecorded discharge areas remain unknown, and repeated adjacent frames are correlated evidence rather than independent confirmations.

IfcOpenShell’s geometry tree documentation describes spatial queries and clash-related operations that can support geometric investigation. Such tools compute results from supplied geometry and settings. They do not know whether an exported door is actually operable, whether an unmodeled obstruction exists, or whether a route satisfies the applicable life-safety interpretation.

For site-to-model comparisons, document registration uncertainty separately from geometry tolerances and semantic uncertainty. A ten-millimeter uncertainty allowance in a synthetic fixture is an illustrative packet policy, not a clearance requirement. If the model cannot be registered reliably to the footage, a reviewer may still inspect each source separately, but the application must not present a fused overlay as a verified measurement.

Test Packet Readiness, Not Compliance

The following stdlib harness requires reviewed evidence for the expected route identifiers. Duplicate door leaves are deduplicated by route identity. It checks model revision, required route coverage, provenance references, coordinate units, and uncertainty. Every valid result still says human review, and the certification field remains false even when the inventory is complete.

import math

expected_routes = {"route-east", "route-west"}
packet = {"building": "block-6", "model": "ifc-r8", "level": "L2",
          "coords": "building_local", "units": "m", "registration_m": 0.005,
          "frame_source": "walk-4@00:18", "model_digest": "synthetic-r8",
          "covered_routes": set(expected_routes),
          "doors": [("leaf-e1", "route-east"), ("leaf-e2", "route-east"),
                    ("door-w", "route-west")]}

def review(record):
    result = {"state": "abstain", "certified": False, "route_count": None}
    if (record["building"], record["model"], record["level"]) != (
            "block-6", "ifc-r8", "L2"):
        return dict(result, state="identity_mismatch")
    if not expected_routes <= record["covered_routes"]:
        return dict(result, state="coverage_unknown")
    error = record["registration_m"]
    if (record["coords"] != "building_local" or record["units"] != "m"
            or not record["frame_source"] or not record["model_digest"]
            or not math.isfinite(error) or not 0 <= error <= 0.01):
        return dict(result, state="registration_unknown")
    routes = {route for _, route in record["doors"]}
    if routes != expected_routes:
        return dict(result, state="inventory_review")
    return dict(result, state="human_review", route_count=len(routes))

assert review(packet)["route_count"] == 2
assert len(packet["doors"]) == 3
assert review(packet)["certified"] is False
assert review(dict(packet, model="ifc-r7"))["state"] == "identity_mismatch"
assert review(dict(packet, covered_routes={"route-east"}))["state"] == "coverage_unknown"
assert review(dict(packet, registration_m=0.02))["state"] == "registration_unknown"
assert review(dict(packet, doors=[]))["state"] == "inventory_review"
print("synthetic review readiness checked; no life-safety certification issued")

The expected route set is a reviewer-defined inventory for this toy example, not a required exit count derived from regulation. The code assumes that route mapping and coverage flags are trustworthy structured inputs. It does not prove connectivity, independent separation, travel distance, capacity, accessibility, fire resistance, or door operation. A mistaken mapping can satisfy every assertion while representing the wrong physical building.

Preserve Responsibility and Recovery

The compliance monitoring guide describes evidence collection and accountable review. Apply that separation here: software gathers and checks packets, while qualified people interpret requirements and decide follow-up. The construction photo comparison lab adds revision and registration controls for site observations that disagree with the model.

W3C PROV supports representing derivation from model export through geometry extraction, video annotation, and reviewer decision. Preserve element references and processing versions so a disputed route count can be reproduced. A later model revision should invalidate pending review readiness without erasing the earlier packet or falsely implying that the old site condition never existed.

Authenticate reviewers and isolate building files by tenant and project. Treat model property text, signage OCR, and attached instructions as untrusted. The analysis worker should have no authority to approve occupancy, unlock doors, or suppress an existing safety issue. The snippet omits IFC parsing, geometry calculation, camera calibration, actual site registration, identity verification, secure persistence, and ticket transactions.

Keep actions limited to human-approved advisory tickets or requests for missing evidence. Bind each ticket to packet revision and reviewer identity. If ticket delivery times out, reconcile the original operation instead of creating duplicates. Immediate observed hazards belong in established site safety procedures; operators must not wait for an AI review queue or a complete BIM packet before following those procedures.

Acceptance Tests

  1. Count two leaves of one doorway and verify that they do not automatically become two independent exit routes.
  2. Load a superseded IFC export and block packet readiness until the approved model identity is resolved.
  3. Omit discharge footage or route coverage and retain unknown status rather than treating the unseen segment as clear.
  4. Exceed registration uncertainty limits and prevent a site-to-model overlay from being presented as a verified measurement.
  5. Supply a complete inventory and verify that no field or generated sentence claims life-safety certification.
  6. Introduce a model conversion failure and show the affected elements as unprocessed, not absent or compliant.

Evaluate Review Quality

Compare a label-count baseline with packets adjudicated by qualified reviewers. Measure incorrectly merged or split routes divided by all reviewed routes, missing evidence detected divided by all seeded coverage gaps, and review-ready packets later rejected for identity errors divided by ready packets. The denominator for completeness is the declared building-and-route scope, not the number of doors successfully parsed.

Begin with one level and mandatory specialist review. Track unresolved packets and reviewer correction time before expanding to additional buildings. The first AI systems engineering deliverable should make “inventory complete” visibly different from “requirements reviewed.” That distinction is more valuable than a faster door counter because it prevents a limited geometric check from being mistaken for permission to occupy a building.

Sources