Skip to content

dbt Model Registry

Purpose: Complete map of every dbt model in production. Claude Code uses this to avoid duplicate models, understand dependencies, and ensure new models follow established patterns.

Last Updated: 2026-03-02 Project location: apps/dbt/dbt_xo_models/


How to Update This File

When you deploy a new dbt model, add it here. When you deprecate a model, mark it deprecated and record the date. This file is Claude's map of the transformation layer.


Model Summary

Client Silver Gold Facts Gold Dims Gold Aggs Gold Reports Seeds
Warby Parker 4 1 0 1 1 1
Condé Nast 0 0 0 0 0 0
Total 4 1 0 1 1 1

Silver Models

Warby Parker (WBP_DB.SILVER / WBP_DB_DEV.SILVER)

Model File Table Name Grain Source Bronze Table Status
silver/warbyparker/contact_timestamps.sql CONTACT_TIMESTAMPS One row per CONTACT_ID GLADLY_CONTACT_TIMESTAMPS ✅ Production
silver/warbyparker/conversation_timestamps.sql CONVERSATION_TIMESTAMPS One row per CONVERSATION_ID GLADLY_CONVERSATION_TIMESTAMPS ✅ Production
silver/warbyparker/work_sessions.sql WORK_SESSIONS One row per AGENT_ID + SESSION_START GLADLY_WORK_SESSIONS ✅ Production
silver/warbyparker/agent_durations.sql AGENT_DURATIONS One row per AGENT_ID + STATUS_START GLADLY_AGENT_DURATIONS ✅ Production

Silver Rules: - Materialized as dynamic_table - No JOINs, no filters, no aggregation - Deduplicates by RECORD_KEY - Type converts VARCHAR → proper types


Gold Models — Warby Parker (WBP_DB.GOLD / WBP_DB_DEV.GOLD)

Facts (fct_)

Model File Table Name Grain Source Silver Enriched With Status
gold/warbyparker/fct_contacts.sql FCT_CONTACTS One row per CONTACT_ID CONTACT_TIMESTAMPS ROSTER_WARBYPARKER, INBOX_GLOSSARY ✅ Production

Dimensions (dim_)

Model File Table Name Grain Source Status
(none yet)

Aggregates (agg_)

Model File Table Name Grain Source Fact Metrics Status
gold/warbyparker/agg_agent_daily_contacts.sql AGG_AGENT_DAILY_CONTACTS One row per (AGENT_ID, DATE) FCT_CONTACTS total_contacts, email_contacts, chat_contacts ✅ Production

Reports (rpt_)

Model File View Name Materialization Source Agg Consumers Status
gold/warbyparker/rpt_email_daily.sql RPT_EMAIL_DAILY view AGG_AGENT_DAILY_CONTACTS Tableau ✅ Production

Gold Models — Condé Nast (CND_DB.GOLD)

(No Gold models yet — Silver layer not yet built)


Seeds

Seed File Table Name Schema Purpose Updated
seeds/ai_agents.csv AI_AGENTS GOLD AI wave enablement dates per agent As needed

Source Definitions (sources.yml)

Source Name Database Schema Tables
warbyparker_bronze WBP_DB / WBP_DB_DEV BRONZE gladly_contact_timestamps, gladly_conversation_timestamps, gladly_work_sessions, gladly_agent_durations
core_silver CORE_DB / CORE_DB_DEV SILVER roster_warbyparker, roster_condenast
warbyparker_silver WBP_DB / WBP_DB_DEV SILVER inbox_glossary

Dependency Graph

Bronze Tables (xo-foundry)
Silver Models (dbt dynamic tables)
├── contact_timestamps
├── conversation_timestamps
├── work_sessions
└── agent_durations
Gold Facts (dbt dynamic tables)
└── fct_contacts ◄── CORE_DB.SILVER.ROSTER_WARBYPARKER
                 ◄── WBP_DB.SILVER.INBOX_GLOSSARY
Gold Aggregates (dbt dynamic tables)
└── agg_agent_daily_contacts
Gold Reports (dbt views)
└── rpt_email_daily
Tableau / Consumers

Planned Models (Not Yet Built)

Track upcoming models here so the team knows what's coming.

Model Type Client Priority Notes
dim_agent Dimension WBP Medium Current agent state from roster
fct_conversations Fact WBP High Conversation events with agent enrichment
agg_agent_daily_conversations Aggregate WBP High Conversation KPIs by agent/day
rpt_agent_performance Report WBP High Main agent performance dashboard
silver/condenast/* Silver CND Medium Sprout Social messages Silver layer

Test Coverage Summary

Layer Models Models with Tests Key Tests
Silver 4 4 unique + not_null on RECORD_KEY
Gold Facts 1 1 unique + not_null on primary key
Gold Aggregates 1 1 not_null on dimensions
Gold Reports 1 0 Views — no data tests needed

Deprecated Models

Model Deprecated Date Replaced By Notes
(none yet)

dbt Commands Reference

# From apps/dbt/dbt_xo_models/

# Compile (check SQL validity without running)
dbt compile

# Run specific model
dbt run --select fct_contacts

# Run all Gold for WBP
dbt run --select gold.warbyparker.*

# Run tests
dbt test --select fct_contacts

# Seed static data
dbt seed

# Full run (Silver → Gold → Seeds)
dbt run && dbt test

See also: snowflake-object-inventory.md | gold-layer-expansion.md | ADR 008