---
title: "A contract for the consumers dbt can't see"
slug: "contract-of-record"
type: recipe
locale: en-US
canonical: "https://www.coremodels.io/recipe/dbt/contract-of-record"
updatedAt: "2026-09-24T22:02:28+03:00"
---

# A contract for the consumers dbt can't see

Model contracts stop at the dbt boundary. Your reverse-ETL job, your ML pipeline and the team next door have nothing.

dbt model contracts are good at what they do and they end where dbt ends. The reverse-ETL job syncing your mart to Salesforce, the ML pipeline reading it, the team whose service consumes it — none of them can read a dbt contract, so what they rely on is an agreement nobody wrote down. This recipe publishes one: govern what your marts guarantee, then export it as an ODCS v3.1.0 contract those consumers can actually hold you to. And because every re-audit is recorded, you keep standing evidence the contract still matches what ships — instead of a document that was true the day it was signed. Your workspace opens with the marts grid, ownership columns and the consumer register already configured.

## Articles

- [The Consumers dbt Can't See](https://www.coremodels.io/connector/dbt/h8-contract-of-record)
