Skip to main content

The data flow

Every building has a Building Management System (BMS) that controls HVAC, lighting, and other systems. The BMS contains thousands of data points (sensor readings, setpoints, equipment states) but names them differently in every building. Tacit sits between the BMS and your application:
┌─────────────┐     ┌─────────────────────────────────┐     ┌─────────────┐
│  Building A  │     │            Tacit                 │     │             │
│  AHU1_SAT    │────▶│                                  │     │  Your app   │
│  SA_TEMP_1   │     │  1. Ingests raw BMS data         │     │             │
├─────────────┤     │  2. Maps to Brick Schema          │────▶│  Dashboards │
│  Building B  │     │  3. Builds relationship graph     │     │  Analytics  │
│  SupplyTemp  │────▶│  4. Serves via GraphQL + REST    │     │  AI agents  │
│  SAT_AHU01   │     │                                  │     │  Monitoring │
├─────────────┤     │                                  │     │             │
│  Building C  │     │  Same query works on all three   │     │             │
│  SA-T-1      │────▶│  buildings                       │     │             │
└─────────────┘     └─────────────────────────────────┘     └─────────────┘

What happens at each step

1. Data ingestion

Tacit connects to your building’s BMS through standard protocols (BACnet, Modbus, MQTT) or through existing integrations. Raw point names and values flow into the platform.

2. Brick Schema mapping

Each raw point is mapped to its canonical Brick class. AHU1_SAT, SupplyTemp, and SA-T-1 all become Supply_Air_Temperature_Sensor. The equipment they belong to, the zones they serve, and the relationships between them are all captured in a graph model. This mapping can be done manually, through templates for common BMS configurations, or with AI-assisted auto-classification.

3. Relationship graph

The mapped data forms a graph where every entity has typed relationships:
  • An AHU hasPoint a Supply_Air_Temperature_Sensor
  • The same AHU feeds a VAV
  • That VAV feeds an HVAC_Zone
  • The zone isPartOf a Floor, which isPartOf the Building
This graph enables the three capabilities that make Tacit’s API unique: class hierarchy inference and transitive traversal.

4. API layer

The graph is exposed through two API surfaces:
SurfaceProtocolPurposeExample
ReadGraphQLQuery building dataGet all temperature sensors on HVAC equipment
WriteRESTManage and query timeseriesFetch historical sensor data, manage sites
This split is intentional: GraphQL for composable reads, REST for clear actions.

What makes this different

Other platforms either give you raw BMS data (you solve the naming problem yourself) or pre-built dashboards (you can’t customize the questions you ask). Tacit gives you portable questions: write a query once and run it on any building in your portfolio. A query like “find all temperature sensors on equipment feeding Zone 3” works identically on Building A, Building B, and Building C, even though those buildings have completely different BMS vendors, naming conventions, and equipment configurations. This is the value of semantic normalization through Brick Schema. Learn more in Brick Schema.

Next steps

Brick Schema

Understand the ontology that powers semantic normalization.

Authentication

Set up API keys and authentication for your applications.