Skip to main content

Data Schemas

TACO defines typed JSON schemas for construction artifacts. These schemas ensure that the output from one agent is valid input for the next — enabling multi-agent workflows without custom integration code.

All schemas follow JSON Schema 2020-12 and use camelCase field names in their JSON representation. The Python SDK provides Pydantic models with snake_case Python attributes that serialize to the correct camelCase JSON.

Available Schemas

SchemaStatusDescription
bom-v1DefinedBill of Materials — line items, quantities, materials, alternates
rfi-v1DefinedRequest for Information — questions, references, priorities
estimate-v1DefinedCost Estimate — line items, labor, materials, summary
quote-v1DefinedSupplier Quote — pricing, terms, availability
schedule-v1PlaceholderProject Schedule — activities, dependencies, milestones
change-order-v1PlaceholderChange Order — impact analysis, cost/schedule deltas

Schema Design Principles

  1. Flat where possible. Schemas avoid deep nesting. A BOM is a flat list of line items with metadata.
  2. Required fields are minimal. Only fields that every instance must have are required. Everything else is optional.
  3. Confidence scores. Schemas include a confidence field (0-1) in metadata so downstream agents can assess reliability.
  4. Provenance. Every schema includes generatedBy and generatedAt in metadata for traceability.

JSON Schema Files

The canonical JSON Schema definitions live in the repository at spec/schemas/.

Python SDK Models

The SDK provides Pydantic v2 models for all defined schemas:

from taco import BOMV1, RFIV1, EstimateV1, QuoteV1

# Validate incoming JSON against the schema
bom = BOMV1.model_validate(json_data)

# Access fields with snake_case
print(bom.project_id)
print(bom.line_items[0].description)

# Serialize to camelCase JSON
json_output = bom.model_dump(by_alias=True, exclude_none=True)