dbt-nexus Course — the Doe Family
A hands-on introduction to dbt and dbt-nexus, built around a fictional family unifying Gmail, Google Calendar, and Notion into a personal data warehouse.
A general-purpose introduction to dbt and the dbt-nexus framework, told through a fictional example: the Doe family building a personal data warehouse.
This course is for anyone who wants to learn how dbt-nexus works without needing client context. Every concept is grounded in a relatable example you could plausibly build for yourself.
Meet the Doe family
- Jane and John — the parents
- Jack, Joe, and Julie — the three kids
- An ever-growing cast of friends, teachers, and extended family — most notably Grandma JoAnne, who emails the kids constantly from two different addresses and calls the family from a third number
The Doe family wants a single, unified view of their personal life across the tools they already use:
| Source | What it carries |
|---|---|
| Gmail | Email sent and received across the family |
| Google Calendar | Events created, invitations sent, who showed up |
| Notion | Tasks (who's responsible for what) and notes (kept on people |
| and topics) |
By the end of the course, the Doe family's warehouse will produce two deeply useful outputs:
- A family contacts list — a clean, deduplicated, always-up-to-date list of everyone the family interacts with, derived from real activity rather than maintained by hand.
- A Christmas card list — built on top of the contacts list, with recency and frequency rules to pick who actually deserves a card this year.
Course structure
The course has three modules: infrastructure, then dbt concepts, then dbt-nexus. Modules that need outside infrastructure start with a short prerequisite lesson.
Module 1 — Setting Up dbt
Provision BigQuery, get dbt running two different ways (cloud and local), and put your project under version control.
- Introduction to dbt
- Prerequisite: Setting up BigQuery
- Setting up dbt Cloud
- Setting up dbt locally with VS Code
- Git and GitHub
Module 2 — dbt Basics
The dbt mental model. Seed real data first so the practicums have something to chew on, then walk through refs, CTEs, materializations, Jinja, macros, and project structure.
- Seeding the Doe family data
- Creating models, refs, and lineage
- CTEs — the building blocks of dbt models
- Materializations
- Jinja and programmatic SQL
- Macros and packages
- The Doe family project structure
- Examples and practicum
Module 3 — Setting Up dbt-nexus
Land raw data, install the package, wire up your sources, let identity resolution do its job, and turn the result into the family contacts list and Christmas card list.
- Prerequisite: Ingesting source data with os-nexus
- Introduction to dbt-nexus
- Installing and configuring
- Setting up sources
- Identity resolution
- The family contacts list
- The Christmas card list
What you'll need
- A BigQuery project and a service account — covered step-by-step in 0.1 Setting up BigQuery. Datasets get created automatically by the ingestion pipeline and dbt.
- Raw source data landed in BigQuery — the standard nexus path uses os-nexus (Convex + Nango). See 0.2 Ingesting source data with os-nexus for the walkthrough and a list of alternatives (Fivetran, Airbyte, custom scripts).
- A dbt setup. Either dbt Cloud (free Developer plan) or local dbt with VS Code — Module 1 covers both. Pick whichever you prefer; you don't need both.
A note on scope
The course teaches how to set up and use dbt-nexus, not the internals of the algorithms that make it work. Identity resolution gets a conceptual treatment (with diagrams and a story about Grandma JoAnne); readers who want to understand the recursive SQL behind it should read the Entities reference docs after the course.
Ready?
Start with 1.1 Introduction to dbt.