Designing Multi-Tenant dbt Models Without Forking Everything
A practical pattern for keeping shared dbt transformation logic centralized while allowing tenant-specific extensions without full project forks or long-term model drift.
Read →Notes: Engineering Notes · Study Notes · Debug Archive
Field notes from production systems, migration work, and graduate study.
Engineering Notes
Production data systems, migration reliability, validation, and observability.
A practical pattern for keeping shared dbt transformation logic centralized while allowing tenant-specific extensions without full project forks or long-term model drift.
Read →A production data pipeline could run green, but green did not always mean data had moved. This note traces how clearer summaries, reason codes, and fail-fast ingestion checks turned a partially migrated workflow into a more trustworthy production system.
Read →How validation throughput, scoped reruns, failure handling, metadata semantics, and observability shaped a production pipeline migration.
Read →When base group counts stay stable but derived totals drift, downstream filters can collapse the output without a failed job.
Read →Freezing input boundaries to separate rewrite behavior from upstream identity drift.
Read →Why grouped Python logic works until workload shape stops being bounded.
Read →How a correct output hid repeated work in a production data pipeline.
Read →Why rerun scope, support-data snapshots, and processing windows must be explicit in batch workflows.
Read →How request planning, review, audit records, and human approval improve access-control operations.
Read →Using parsing and dependency mapping to make legacy SQL easier to review before Databricks migration.
Read →Study Notes
Coursework reframed through systems thinking.
How a networking model became a way to reason about debugging, ownership, and failure boundaries in production systems.
Read →Debug Archive
Short debugging notes and checklists.
Why strict required-input failures and narrow reruns should be designed together.
Read →Use ingestion-source metadata for lineage instead of runtime context assumptions.
Read →A short checklist for debugging parameter precedence between interactive and scheduled runs.
Read →