staging/
# 1:1 with source, for light cleaning, renaming, and type casting. Provides a durable, idempotent base.

Modern Data Engineering
Separating data transformation logic is key to building trust and maintainability. In our dbt projects, we enforce a clear, three-tiered structure.
The principle of separating data transformation logic is key to building trust and maintainability. In our dbt projects, we enforce a clear, three-tiered structure.
models/
staging/
# 1:1 with source, for light cleaning, renaming, and type casting. Provides a durable, idempotent base.
intermediate/
# Complex business logic is modularised here. Not exposed to end users.
marts/
# Final, aggregated models for consumption by BI tools. These are the "products" of the data team.
Our key principles for dbt:
We combine generic tests (e.g., `not_null`, `unique`) with singular, custom tests that encode critical business logic (e.g., `assert_total_revenue_is_positive`), ensuring data is not just present, but correct.
We enforce 100% documentation coverage for all models and columns, which feeds a living, searchable data catalogue for the entire organisation.
We break down complex business logic into smaller, reusable intermediate models. This improves readability, speeds up development, and makes testing more granular and effective.
These frameworks are the starting point for our client engagements. If you're facing similar challenges, the next step is a complimentary discovery call.
Book a Discovery Call