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-04-14 Project location: apps/dbt/xo-medallion/

ADR 019 standardization complete (Phases 1–4): All models follow client/layer folder structure, use 3-character client prefix, and aggregates source from Gold facts only. See ADR 019.


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 / Domain Silver Gold Facts Gold Dims Gold Aggs Gold Int Gold Reports Seeds
Warby Parker (WBP_DB) 8 10 0 5 1 15 1
Condé Nast (CND_DB) 7 1 0 1 0 1 0
Core / Shared (CORE_DB) 28 0 27 0 0 1 0
Total 43 11 27 6 1 17 1

Core Silver: 26 bi_roster_* models + 2 PH HR roster models. Core Gold: 26 dim_employee_* (BI roster) + 1 dim_employee_ph (PH HR) + 1 rpt_master_roster. WBP Silver: 5 Gladly incremental (merge strategy) + 3 GSheets (csat, qa, qa_partner). WBP Gold: 10 facts + 5 aggs + 1 int + 15 reports. CND Silver: 7 Maestro models (from MAESTRO_DB, no Bronze layer). CND Gold: 1 fact + 1 agg + 1 report.


Silver Models

Warby Parker (WBP_DB.SILVER / WBP_DB_DEV.SILVER)

Model File Table Name Grain Source Bronze Table Status
warbyparker/silver/wbp_gladly_contact_timestamps.sql WBP_GLADLY_CONTACT_TIMESTAMPS One row per event (CONTACT_ID + EVENT_TYPE + TIMESTAMP) GLADLY_CONTACT_TIMESTAMPS ✅ Production
warbyparker/silver/wbp_gladly_conversation_timestamps.sql WBP_GLADLY_CONVERSATION_TIMESTAMPS One row per event (CONVERSATION_ID + EVENT_TYPE + TIMESTAMP) GLADLY_CONVERSATION_TIMESTAMPS ✅ Production
warbyparker/silver/wbp_gladly_work_sessions.sql WBP_GLADLY_WORK_SESSIONS One row per WORK_SESSION_ID GLADLY_WORK_SESSIONS ✅ Production
warbyparker/silver/wbp_gladly_agent_durations.sql WBP_GLADLY_AGENT_DURATIONS One row per agent status span GLADLY_AGENT_DURATIONS ✅ Production
warbyparker/silver/wbp_gsheet_csat.sql WBP_GSHEET_CSAT One row per survey response GSHEET_CSAT ✅ Production
warbyparker/silver/wbp_gsheet_qa.sql WBP_GSHEET_QA One row per QA evaluation GSHEET_QA ✅ Production
warbyparker/silver/wbp_gsheet_qa_partner.sql WBP_GSHEET_QA_PARTNER One row per QA evaluation GSHEET_QA_PARTNER ✅ Production

Silver Rules: - Gladly models: incremental (append), preserves permanent history - GSheets models: table (rebuilds from latest BATCH_ID each run) - No JOINs, no business filters, no aggregation (per ADR 019) - Deduplicates by RECORD_KEY - Type converts VARCHAR → proper types via TRY_TO_*


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

Facts (fct_)

Model File Table Name Grain Source Silver Enriched With Source Category
warbyparker/gold/fct_wbp_contacts.sql FCT_WBP_CONTACTS One row per CONTACT_ID WBP_GLADLY_CONTACT_TIMESTAMPS, WBP_GLADLY_WORK_SESSIONS BI_ROSTER_WARBYPARKER (EID via first-close agent) Case 3 (INNER JOIN)
warbyparker/gold/fct_wbp_conversations.sql FCT_WBP_CONVERSATIONS One row per CONVERSATION_ID WBP_GLADLY_CONVERSATION_TIMESTAMPS, WBP_GLADLY_CONTACT_TIMESTAMPS BI_ROSTER_WARBYPARKER (EID via first-close agent) Case 3 (INNER JOIN)
warbyparker/gold/fct_wbp_csat.sql FCT_WBP_CSAT One row per survey response WBP_GSHEET_CSAT BI_ROSTER_WARBYPARKER (EID via OKTA_USER) Case 2 (in-source filter + LEFT JOIN)
warbyparker/gold/fct_wbp_qa_internal.sql FCT_WBP_QA_INTERNAL One row per QA evaluation WBP_GSHEET_QA BI_ROSTER_WARBYPARKER (EID) Case 1 (LEFT JOIN, EID can be NULL)
warbyparker/gold/fct_wbp_qa_partner.sql FCT_WBP_QA_PARTNER One row per QA evaluation WBP_GSHEET_QA_PARTNER BI_ROSTER_WARBYPARKER (EID) Case 3 (INNER JOIN)
warbyparker/gold/fct_wbp_work_sessions.sql FCT_WBP_WORK_SESSIONS One row per WORK_SESSION_ID WBP_GLADLY_WORK_SESSIONS BI_ROSTER_WARBYPARKER (EID) Case 3 (INNER JOIN)
warbyparker/gold/fct_wbp_agent_durations.sql FCT_WBP_AGENT_DURATIONS One row per agent status span WBP_GLADLY_AGENT_DURATIONS BI_ROSTER_WARBYPARKER (EID) Case 3 (INNER JOIN)
warbyparker/gold/fct_wbp_agent_channel_summary.sql FCT_WBP_AGENT_CHANNEL_SUMMARY One row per agent per day per channel WBP_GLADLY_AGENT_SUMMARY BI_ROSTER_WARBYPARKER (EID, join on EMAIL = ACCOUNT_EMAIL) Case 3 (INNER JOIN)
warbyparker/gold/fct_wbp_agent_summary_daily.sql FCT_WBP_AGENT_SUMMARY_DAILY One row per agent per day WBP_GLADLY_AGENT_SUMMARY BI_ROSTER_WARBYPARKER (EID, join on EMAIL = ACCOUNT_EMAIL) Case 3 (INNER JOIN)
warbyparker/gold/fct_wbp_conversation_topics.sql FCT_WBP_CONVERSATION_TOPICS One row per topic add event WBP_GLADLY_CONVERSATION_TIMESTAMPS BI_ROSTER_WARBYPARKER (EID) Case 3 (INNER JOIN)

Intermediates (int_)

Model File Table Name Purpose Used By Status
warbyparker/intermediate/int_wbp_contacts_hold.sql (ephemeral) Hold time calculation via LAG() over contact events fct_wbp_contacts ✅ Production

Aggregates (agg_)

Model File Table Name Grain Source Status
warbyparker/gold/agg_wbp_agent_contacts_daily.sql AGG_WBP_AGENT_CONTACTS_DAILY (date, eid, channel, direction, status, inbox) fct_wbp_contacts + fct_wbp_agent_durations ✅ Production
warbyparker/gold/agg_wbp_agent_performance_daily.sql AGG_WBP_AGENT_PERFORMANCE_DAILY (date, eid, channel) fct_wbp_contacts + fct_wbp_work_sessions ✅ Production
warbyparker/gold/agg_wbp_csat_daily.sql AGG_WBP_CSAT_DAILY (date, eid) fct_wbp_csat ✅ Production
warbyparker/gold/agg_wbp_qa_daily.sql AGG_WBP_QA_DAILY (date, eid, evaluation_type) fct_wbp_qa_internal + fct_wbp_qa_partner ✅ Production
warbyparker/gold/agg_wbp_qa_attributes_daily.sql AGG_WBP_QA_ATTRIBUTES_DAILY (date, attribute, eval_type, eid, agent, auditor, channel) fct_wbp_qa_internal + fct_wbp_qa_partner ✅ Production
warbyparker/gold/agg_wbp_agent_summary_channel_daily.sql AGG_WBP_AGENT_SUMMARY_CHANNEL_DAILY (date, eid, channel) fct_wbp_agent_channel_summary ✅ Production
warbyparker/gold/agg_wbp_agent_durations_daily.sql AGG_WBP_AGENT_DURATIONS_DAILY (date, eid) fct_wbp_agent_durations ✅ Production

All aggregates source from Gold facts only — no Silver, no Bronze, no direct roster JOINs (ADR 019 Phase 4). agg_wbp_agent_contacts_daily is consumed directly by Tableau — no dbt downstream refs. Attribution anchored on FULFILLED_AT (closing agent). agg_wbp_agent_durations_daily (issue #934) pivots the durations fact by TYPE_FIELD + CONTEXT. Provides total_active_time_sec, total_acw_time_sec (the #931 fix), and AWAY-context breakouts (Break, Lunch, Training, Meeting).

Reports (rpt_)

Model File View Name Source Status
warbyparker/gold/rpt_wbp_agent_performance.sql RPT_WBP_AGENT_PERFORMANCE agg_wbp_agent_performance_daily, agg_wbp_qa_daily, agg_wbp_csat_daily, fct_wbp_agent_durations ✅ Production
warbyparker/gold/rpt_wbp_email_daily.sql RPT_WBP_EMAIL_DAILY agg_wbp_agent_contacts_daily, agg_wbp_qa_daily, agg_wbp_csat_daily ✅ Production
warbyparker/gold/rpt_wbp_xoos_agent_performance.sql RPT_WBP_XOOS_AGENT_PERFORMANCE agg_wbp_agent_performance_daily, agg_wbp_qa_daily, agg_wbp_csat_daily ✅ Production
warbyparker/gold/rpt_wbp_agent_performance_channel.sql RPT_WBP_AGENT_PERFORMANCE_CHANNEL agg_wbp_agent_summary_channel_daily, agg_wbp_csat_channel_daily, agg_wbp_qa_channel_daily, agg_wbp_fcr_channel_daily, agg_wbp_agent_durations_daily, bi_roster_warbyparker ✅ Production (extended 2026-04 with durations ACW for #931)
warbyparker/gold/rpt_wbp_agent_productivity_daily.sql RPT_WBP_AGENT_PRODUCTIVITY_DAILY agg_wbp_agent_durations_daily, agg_wbp_agent_summary_channel_daily, bi_roster_warbyparker ✅ Production (issue #934 — all agents, no AI filter; EPH/MPH/CPH/ACW% at agent-day grain)
warbyparker/gold/rpt_wbp_account_performance_channel_daily.sql RPT_WBP_ACCOUNT_PERFORMANCE_CHANNEL_DAILY agg_wbp_agent_summary_channel_daily, agg_wbp_csat_channel_daily, agg_wbp_qa_channel_daily, agg_wbp_fcr_channel_daily ✅ Production (issue #934 — account-level, no agent dimension; AHT/SLA/ASA/CSAT/QA/FCR)

Exploration (exp_)

AI pilot analysis views — no SLA. May change or be dropped without notice. Promote to rpt_ when logic stabilizes and a Tableau dashboard adopts it. See ADR 021.

Model File View Name Source Status
warbyparker/gold/exp_wbp_agent_qa_trend.sql EXP_WBP_AGENT_QA_TREND fct_wbp_qa_internal, fct_wbp_qa_partner 🔬 Exploration
warbyparker/gold/exp_wbp_ai_agent_concurrency_daily.sql EXP_WBP_AI_AGENT_CONCURRENCY_DAILY agg_wbp_gladly_productivity_agent_daily, dim_employee_warbyparker 🔬 Exploration
warbyparker/gold/exp_wbp_ai_agents_durations_daily.sql EXP_WBP_AI_AGENTS_DURATIONS_DAILY fct_wbp_agent_durations, dim_employee_warbyparker 🔬 Exploration
warbyparker/gold/exp_wbp_ai_agent_qa_week_over_week.sql EXP_WBP_AI_AGENT_QA_WEEK_OVER_WEEK agg_wbp_qa_daily, dim_employee_warbyparker 🔬 Exploration
warbyparker/gold/exp_wbp_ai_agent_qa_month_over_month.sql EXP_WBP_AI_AGENT_QA_MONTH_OVER_MONTH agg_wbp_qa_daily, dim_employee_warbyparker 🔬 Exploration
warbyparker/gold/exp_wbp_ai_wave_qa_week_over_week.sql EXP_WBP_AI_WAVE_QA_WEEK_OVER_WEEK agg_wbp_qa_daily 🔬 Exploration
warbyparker/gold/exp_wbp_ai_wave_qa_month_over_month.sql EXP_WBP_AI_WAVE_QA_MONTH_OVER_MONTH agg_wbp_qa_daily 🔬 Exploration
warbyparker/gold/exp_wbp_ai_wave_qa_quarter_over_quarter.sql EXP_WBP_AI_WAVE_QA_QUARTER_OVER_QUARTER agg_wbp_qa_daily 🔬 Exploration
warbyparker/gold/exp_wbp_ai_vs_nonai_qa_wow.sql EXP_WBP_AI_VS_NONAI_QA_WOW agg_wbp_qa_daily 🔬 Exploration
warbyparker/gold/exp_wbp_ai_vs_nonai_qa_mom.sql EXP_WBP_AI_VS_NONAI_QA_MOM agg_wbp_qa_daily 🔬 Exploration
warbyparker/gold/exp_wbp_ai_vs_nonai_qa_qoq.sql EXP_WBP_AI_VS_NONAI_QA_QOQ agg_wbp_qa_daily 🔬 Exploration
warbyparker/gold/exp_wbp_ai_qa_attributes_week_over_week.sql EXP_WBP_AI_QA_ATTRIBUTES_WEEK_OVER_WEEK agg_wbp_qa_attributes_daily, dim_employee_warbyparker 🔬 Exploration
warbyparker/gold/exp_wbp_ai_qa_attributes_month_over_month.sql EXP_WBP_AI_QA_ATTRIBUTES_MONTH_OVER_MONTH agg_wbp_qa_attributes_daily, dim_employee_warbyparker 🔬 Exploration
warbyparker/gold/exp_wbp_gladly_blended_ai_productivity.sql EXP_WBP_GLADLY_BLENDED_AI_PRODUCTIVITY agg_wbp_gladly_productivity_agent_daily 🔬 Exploration
warbyparker/gold/exp_wbp_gladly_blended_ai_productivity_weekly.sql EXP_WBP_GLADLY_BLENDED_AI_PRODUCTIVITY_WEEKLY agg_wbp_gladly_productivity_agent_daily 🔬 Exploration
warbyparker/gold/exp_wbp_gladly_blended_ai_productivity_channel_daily.sql EXP_WBP_GLADLY_BLENDED_AI_PRODUCTIVITY_CHANNEL_DAILY agg_wbp_gladly_productivity_agent_daily 🔬 Exploration

Silver Models — Condé Nast (CND_DB.SILVER / CND_DB_DEV.SILVER)

Model File Table Name Grain Source Status
condenast/silver/cnd_maestro_answers.sql CND_MAESTRO_ANSWERS One row per ANSWER_ID MAESTRO_DB.PUBLIC.ANSWERS ✅ Production
condenast/silver/cnd_maestro_questions.sql CND_MAESTRO_QUESTIONS One row per TEMPLATE_ID + QUESTION_ID MAESTRO_DB.PUBLIC.QUESTIONS ✅ Production
condenast/silver/cnd_maestro_sections.sql CND_MAESTRO_SECTIONS One row per TEMPLATE_ID + SECTION_ID MAESTRO_DB.PUBLIC.SECTIONS ✅ Production
condenast/silver/cnd_maestro_templates.sql CND_MAESTRO_TEMPLATES One row per TEMPLATE_ID MAESTRO_DB.PUBLIC.TEMPLATES ✅ Production
condenast/silver/cnd_maestro_question_scores.sql CND_MAESTRO_QUESTION_SCORES One row per ANSWER_ID + QUESTION_ID MAESTRO_DB.PUBLIC.QUESTION_SCORES ✅ Production
condenast/silver/cnd_maestro_section_scores.sql CND_MAESTRO_SECTION_SCORES One row per ANSWER_ID + SECTION_ID MAESTRO_DB.PUBLIC.SECTION_SCORES ✅ Production
condenast/silver/cnd_maestro_helpdesk_id_email.sql CND_MAESTRO_HELPDESK_ID_EMAIL One row per HELPDESK + HELPDESK_ID MAESTRO_DB.PUBLIC.HELPDESK_ID_EMAIL ✅ Production

Gold Models — Condé Nast (CND_DB.GOLD)

Facts (fct_)

Model File Table Name Grain Source Enriched With Source Category
condenast/gold/fct_cnd_qa.sql FCT_CND_QA One row per ANSWER_ID CND_MAESTRO_ANSWERS, CND_MAESTRO_TEMPLATES, CND_MAESTRO_HELPDESK_ID_EMAIL OPERATIONS.BAMBOOHR.ROSTER_CONDENAST (EID — pending migration to ref()) Case 1 (LEFT JOIN, EID can be NULL)

Note: fct_cnd_qa still uses source('operations_bamboohr', 'ROSTER_CONDENAST') — migration to ref('bi_roster_condenast') is pending (Phase 5+).

Aggregates (agg_)

Model File Table Name Grain Source Status
condenast/gold/agg_cnd_qa_daily.sql AGG_CND_QA_DAILY (evaluation_date, agent_name, direct_leader, channel) fct_cnd_qa ✅ Production

Reports (rpt_)

Model File View Name Source Status
condenast/gold/rpt_cnd_qa_daily.sql RPT_CND_QA_DAILY agg_cnd_qa_daily ✅ Production

Silver Models — Core / Shared (CORE_DB.SILVER)

All materialized as table, rebuilt each run from the latest BATCH_ID. One row per employee (current state). Tagged core_bi_roster.

PH HR Roster

Model File Table Name Grain Source Bronze Table Status
core/silver/ph_hr_roster_active.sql PH_HR_ROSTER_ACTIVE One row per EMPLOYEE_ID PH_HR_ROSTER_ACTIVE ✅ Production
core/silver/ph_hr_roster_inactive.sql PH_HR_ROSTER_INACTIVE One row per EMPLOYEE_ID PH_HR_ROSTER_INACTIVE ✅ Production

BI Rosters (Standard_Roster Google Sheet)

Model File Table Name Client Status
core/silver/bi_roster_warbyparker.sql BI_ROSTER_WARBYPARKER Warby Parker ✅ Production
core/silver/bi_roster_bi_team.sql BI_ROSTER_BI_TEAM BI Team ✅ Production
core/silver/bi_roster_staff_mx.sql BI_ROSTER_STAFF_MX Staff MX ✅ Production
core/silver/bi_roster_morganandmorgan.sql BI_ROSTER_MORGANANDMORGAN Morgan & Morgan ✅ Production
core/silver/bi_roster_quadlock.sql BI_ROSTER_QUADLOCK Quad Lock ✅ Production
core/silver/bi_roster_ionos.sql BI_ROSTER_IONOS IONOS ✅ Production
core/silver/bi_roster_flare.sql BI_ROSTER_FLARE Flare ✅ Production
core/silver/bi_roster_postman_law.sql BI_ROSTER_POSTMAN_LAW Postman Law ✅ Production
core/silver/bi_roster_rugiet.sql BI_ROSTER_RUGIET Rugiet ✅ Production
core/silver/bi_roster_jcrew.sql BI_ROSTER_JCREW J.Crew ✅ Production
core/silver/bi_roster_keller_postman.sql BI_ROSTER_KELLER_POSTMAN Keller Postman ✅ Production
core/silver/bi_roster_condenast.sql BI_ROSTER_CONDENAST Condé Nast ✅ Production
core/silver/bi_roster_within_health.sql BI_ROSTER_WITHIN_HEALTH Within Health ✅ Production
core/silver/bi_roster_western_dental.sql BI_ROSTER_WESTERN_DENTAL Western Dental ✅ Production
core/silver/bi_roster_match.sql BI_ROSTER_MATCH Match ✅ Production
core/silver/bi_roster_logitech.sql BI_ROSTER_LOGITECH Logitech ✅ Production
core/silver/bi_roster_drfirst.sql BI_ROSTER_DRFIRST DrFirst ✅ Production
core/silver/bi_roster_goodfood.sql BI_ROSTER_GOODFOOD GoodFood ✅ Production
core/silver/bi_roster_imagine_wellness.sql BI_ROSTER_IMAGINE_WELLNESS Imagine Wellness ✅ Production
core/silver/bi_roster_nba.sql BI_ROSTER_NBA NBA ✅ Production
core/silver/bi_roster_trim.sql BI_ROSTER_TRIM Trim ✅ Production
core/silver/bi_roster_ur_labs.sql BI_ROSTER_UR_LABS UR Labs ✅ Production
core/silver/bi_roster_flex_mg.sql BI_ROSTER_FLEX_MG Flex MG ✅ Production
core/silver/bi_roster_cartamundi.sql BI_ROSTER_CARTAMUNDI Cartamundi ✅ Production
core/silver/bi_roster_hellofresh.sql BI_ROSTER_HELLOFRESH HelloFresh ✅ Production
core/silver/bi_roster_smashtech.sql BI_ROSTER_SMASHTECH Smashtech ✅ Production

Silver Rules (Core BI Rosters): - Materialized as table (not dynamic table — rebuilt each run) - No JOINs, no filters beyond latest BATCH_ID - Date columns cast with TRY_TO_DATE(), numbers with TRY_TO_NUMBER() - Deduplicated by EID (natural key, not hashed)


Gold Models — Core / Shared (CORE_DB.GOLD)

Reports (rpt_)

Model File View Name Purpose Status
core/gold/rpt_master_roster.sql RPT_MASTER_ROSTER Cross-client active employee view, deduped by email/EID ✅ Production

Dimensions (dim_employee_*)

Employee dimensions for all clients. SCD Type 1 — latest state wins. Per ADR 010, all employee dimensions live in CORE_DB regardless of client.

Model File Table Name Source Silver Client Status
core/gold/dim_employee_warbyparker.sql DIM_EMPLOYEE_WARBYPARKER BI_ROSTER_WARBYPARKER Warby Parker ✅ Production
core/gold/dim_employee_bi_team.sql DIM_EMPLOYEE_BI_TEAM BI_ROSTER_BI_TEAM BI Team ✅ Production
core/gold/dim_employee_staff_mx.sql DIM_EMPLOYEE_STAFF_MX BI_ROSTER_STAFF_MX Staff MX ✅ Production
core/gold/dim_employee_morganandmorgan.sql DIM_EMPLOYEE_MORGANANDMORGAN BI_ROSTER_MORGANANDMORGAN Morgan & Morgan ✅ Production
core/gold/dim_employee_quadlock.sql DIM_EMPLOYEE_QUADLOCK BI_ROSTER_QUADLOCK Quad Lock ✅ Production
core/gold/dim_employee_ionos.sql DIM_EMPLOYEE_IONOS BI_ROSTER_IONOS IONOS ✅ Production
core/gold/dim_employee_flare.sql DIM_EMPLOYEE_FLARE BI_ROSTER_FLARE Flare ✅ Production
core/gold/dim_employee_postman_law.sql DIM_EMPLOYEE_POSTMAN_LAW BI_ROSTER_POSTMAN_LAW Postman Law ✅ Production
core/gold/dim_employee_rugiet.sql DIM_EMPLOYEE_RUGIET BI_ROSTER_RUGIET Rugiet ✅ Production
core/gold/dim_employee_jcrew.sql DIM_EMPLOYEE_JCREW BI_ROSTER_JCREW J.Crew ✅ Production
core/gold/dim_employee_keller_postman.sql DIM_EMPLOYEE_KELLER_POSTMAN BI_ROSTER_KELLER_POSTMAN Keller Postman ✅ Production
core/gold/dim_employee_condenast.sql DIM_EMPLOYEE_CONDENAST BI_ROSTER_CONDENAST Condé Nast ✅ Production
core/gold/dim_employee_within_health.sql DIM_EMPLOYEE_WITHIN_HEALTH BI_ROSTER_WITHIN_HEALTH Within Health ✅ Production
core/gold/dim_employee_western_dental.sql DIM_EMPLOYEE_WESTERN_DENTAL BI_ROSTER_WESTERN_DENTAL Western Dental ✅ Production
core/gold/dim_employee_match.sql DIM_EMPLOYEE_MATCH BI_ROSTER_MATCH Match ✅ Production
core/gold/dim_employee_logitech.sql DIM_EMPLOYEE_LOGITECH BI_ROSTER_LOGITECH Logitech ✅ Production
core/gold/dim_employee_drfirst.sql DIM_EMPLOYEE_DRFIRST BI_ROSTER_DRFIRST DrFirst ✅ Production
core/gold/dim_employee_goodfood.sql DIM_EMPLOYEE_GOODFOOD BI_ROSTER_GOODFOOD GoodFood ✅ Production
core/gold/dim_employee_imagine_wellness.sql DIM_EMPLOYEE_IMAGINE_WELLNESS BI_ROSTER_IMAGINE_WELLNESS Imagine Wellness ✅ Production
core/gold/dim_employee_nba.sql DIM_EMPLOYEE_NBA BI_ROSTER_NBA NBA ✅ Production
core/gold/dim_employee_trim.sql DIM_EMPLOYEE_TRIM BI_ROSTER_TRIM Trim ✅ Production
core/gold/dim_employee_ur_labs.sql DIM_EMPLOYEE_UR_LABS BI_ROSTER_UR_LABS UR Labs ✅ Production
core/gold/dim_employee_flex_mg.sql DIM_EMPLOYEE_FLEX_MG BI_ROSTER_FLEX_MG Flex MG ✅ Production
core/gold/dim_employee_cartamundi.sql DIM_EMPLOYEE_CARTAMUNDI BI_ROSTER_CARTAMUNDI Cartamundi ✅ Production
core/gold/dim_employee_hellofresh.sql DIM_EMPLOYEE_HELLOFRESH BI_ROSTER_HELLOFRESH HelloFresh ✅ Production
core/gold/dim_employee_smashtech.sql DIM_EMPLOYEE_SMASHTECH BI_ROSTER_SMASHTECH Smashtech ✅ Production
core/gold/dim_employee_ph.sql DIM_EMPLOYEE_PH PH_HR_ROSTER_ACTIVE PH (internal) ✅ Production

Seeds

Seed File Table Name Schema Purpose Updated
seeds/warbyparker/ai_agents.csv AI_AGENTS WBP_DB.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
warbyparker_gsheets WBP_DB / WBP_DB_DEV BRONZE gsheet_csat, gsheet_qa, gsheet_qa_partner
core_bronze CORE_DB / CORE_DB_DEV BRONZE gsheet_bi_roster_* (26 tables), ph_hr_roster_active, ph_hr_roster_inactive
condenast_maestro MAESTRO_DB PUBLIC answers, questions, sections, templates, question_scores, section_scores, helpdesk_id_email
operations_bamboohr OPERATIONS BAMBOOHR ROSTER_CONDENAST (legacy — fct_cnd_qa still uses this; pending migration)

Dependency Graph

Bronze Tables (xo-foundry)
Silver Models (dbt tables)
├── wbp_gladly_contact_timestamps
├── wbp_gladly_conversation_timestamps
├── wbp_gladly_work_sessions
├── wbp_gladly_agent_durations
├── wbp_gsheet_csat
├── wbp_gsheet_qa
└── wbp_gsheet_qa_partner
Gold Facts (dbt tables)
├── fct_wbp_contacts      ◄── CORE_DB.SILVER.BI_ROSTER_WARBYPARKER (EID)
│                         ◄── WBP_DB.SILVER.WBP_GLADLY_WORK_SESSIONS
│        ▲
│   int_wbp_contacts_hold (ephemeral)
├── fct_wbp_conversations ◄── CORE_DB.SILVER.BI_ROSTER_WARBYPARKER (EID)
├── fct_wbp_csat          ◄── CORE_DB.SILVER.BI_ROSTER_WARBYPARKER (EID)
├── fct_wbp_qa_internal   ◄── CORE_DB.SILVER.BI_ROSTER_WARBYPARKER (EID)
├── fct_wbp_qa_partner    ◄── CORE_DB.SILVER.BI_ROSTER_WARBYPARKER (EID)
├── fct_wbp_work_sessions ◄── CORE_DB.SILVER.BI_ROSTER_WARBYPARKER (EID)
├── fct_wbp_agent_durations
├── fct_wbp_agent_channel_summary ◄── CORE_DB.SILVER.BI_ROSTER_WARBYPARKER (EMAIL → EID)
├── fct_wbp_agent_summary_daily   ◄── CORE_DB.SILVER.BI_ROSTER_WARBYPARKER (EMAIL → EID)
└── fct_wbp_conversation_topics
Gold Aggregates (dbt tables)
├── agg_wbp_agent_contacts_daily       ← fct_wbp_contacts + fct_wbp_agent_durations
├── agg_wbp_agent_performance_daily    ← fct_wbp_contacts + fct_wbp_work_sessions
├── agg_wbp_csat_daily                 ← fct_wbp_csat
├── agg_wbp_qa_daily                   ← fct_wbp_qa_internal + fct_wbp_qa_partner
├── agg_wbp_qa_attributes_daily        ← fct_wbp_qa_internal + fct_wbp_qa_partner
└── agg_wbp_agent_summary_channel_daily ← fct_wbp_agent_channel_summary
Gold Reports (dbt views)
├── rpt_wbp_agent_performance
├── rpt_wbp_email_daily
├── rpt_wbp_xoos_agent_performance
├── rpt_wbp_agent_performance_channel
├── rpt_wbp_agent_productivity_daily
├── rpt_wbp_account_performance_channel_daily
├── exp_wbp_agent_qa_trend
├── exp_wbp_ai_agent_concurrency_daily
├── exp_wbp_ai_agents_durations_daily
├── exp_wbp_ai_agent_qa_week_over_week
├── exp_wbp_ai_agent_qa_month_over_month
├── exp_wbp_ai_qa_attributes_week_over_week
├── exp_wbp_ai_qa_attributes_month_over_month
├── exp_wbp_ai_wave_qa_week_over_week
├── exp_wbp_ai_wave_qa_month_over_month
├── exp_wbp_ai_wave_qa_quarter_over_quarter
├── exp_wbp_ai_vs_nonai_qa_wow
├── exp_wbp_ai_vs_nonai_qa_mom
├── exp_wbp_ai_vs_nonai_qa_qoq
├── exp_wbp_gladly_blended_ai_productivity
├── exp_wbp_gladly_blended_ai_productivity_weekly
└── exp_wbp_gladly_blended_ai_productivity_channel_daily
Tableau / Consumers

Planned Models (Not Yet Built)

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

Model Type Client Priority Notes
agg_wbp_agent_daily_conversations Aggregate WBP High Conversation KPIs by agent/day; depends on fct_wbp_conversations
rpt_wbp_agent_performance_v2 Report WBP Medium Post Phase ⅚: full enrichment with macros + KPI registry
silver/condenast/* Silver CND Medium Sprout Social messages Silver layer