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)
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