A model that builds is not a model that is right. Keys can duplicate after a bad join, a source can stop sending data without any error, and a calculation can drift from the source system's numbers. dbt lets you write those expectations down as tests that run with every build. In this part we add 20 tests to the project, watch one of them catch a real discrepancy, check that raw data is fresh, and publish documentation with a lineage graph. Part 6 of 10 in the series Build a modern data pipeline with Snowflake, dbt and Airflow . Previous: Part 5, Modeling with dbt: staging to marts. Next: Part 7, Incremental models and snapshots. Code for this part: _tpch__models.yml , _core__models.yml , tests/ . Full project: tpch_analytics on GitHub . dbt source freshness is RAW recent? build model stg_tpch__orders run its tests unique, not_null, accepted_values, relationships pass build downstream models int_…, fct_…, dim_… fail skip everything downstream bad data never reaches marts dbt bui...