Snowflake Object Inventory¶
Purpose: Complete map of every Snowflake database, schema, and table/view in production. Claude Code uses this to avoid naming conflicts and understand the current state of the warehouse.
Last Updated: 2026-03-31 Maintained by: Keep this current when adding new databases, schemas, or tables.
How to Update This File¶
When you create a new Snowflake object (via schemachange migration or dbt), add it here immediately. This prevents duplicate names, aids debugging, and gives Claude Code accurate context for every session.
Databases¶
| Database | Client | Environment | Owner | Purpose |
|---|---|---|---|---|
WBP_DB |
Warby Parker | Production | XO_DATA_ENGINEER | Medallion layers: Bronze → Silver → Gold |
WBP_DB_DEV |
Warby Parker | Development | XO_DATA_ENGINEER | Dev/testing (mirrors WBP_DB structure) |
CND_DB |
Condé Nast | Production | XO_DATA_ENGINEER | Medallion layers: Bronze → Silver → Gold |
CND_DB_DEV |
Condé Nast | Development | XO_DATA_ENGINEER | Dev/testing |
CORE_DB |
Shared | Production | XO_DATA_ENGINEER | Shared resources: employee rosters, shared dims |
CORE_DB_DEV |
Shared | Development | XO_DATA_ENGINEER | Dev/testing |
OPERATIONS |
Legacy | Production | XO_DATA_ENGINEER | Legacy reporting DB — being deprecated |
MAESTRO_DB |
Condé Nast (Rippit) | Production | MAESTRO_ROLE (Rippit team) | Partner-managed Bronze for CND QA evaluation data — see ADR 017 |
WBP_DB (Warby Parker)¶
BRONZE Schema¶
All Bronze tables: all VARCHAR columns, batch_replace loading strategy.
| Table | Source System | Load Strategy | DAG | Schemachange Version |
|---|---|---|---|---|
GLADLY_CONTACT_TIMESTAMPS |
Gladly API | batch_replace | warbyparker_gladly_daily | V1.1.0 |
GLADLY_CONVERSATION_TIMESTAMPS |
Gladly API | batch_replace | warbyparker_gladly_daily | V1.1.0 |
GLADLY_WORK_SESSIONS |
Gladly API | batch_replace | warbyparker_gladly_daily | V1.3.0 |
GLADLY_AGENT_DURATIONS |
Gladly API | batch_replace | warbyparker_gladly_daily | V1.4.0 |
GLADLY_AGENT_SUMMARY |
Gladly API | batch_replace | warbyparker_gladly_daily | — |
GSHEETS_CSAT |
Google Sheets | incremental | warbyparker_gsheets_daily | V1.5.0 |
GSHEETS_QA |
Google Sheets | incremental | warbyparker_gsheets_daily | V1.5.0 |
SILVER Schema¶
All Silver tables: dbt dynamic tables, typed columns, deduplicated by RECORD_KEY.
| Table | Source Bronze Table | dbt Model | Grain |
|---|---|---|---|
CONTACT_TIMESTAMPS |
GLADLY_CONTACT_TIMESTAMPS | silver/warbyparker/contact_timestamps.sql |
One row per CONTACT_ID |
CONVERSATION_TIMESTAMPS |
GLADLY_CONVERSATION_TIMESTAMPS | silver/warbyparker/conversation_timestamps.sql |
One row per CONVERSATION_ID |
WORK_SESSIONS |
GLADLY_WORK_SESSIONS | silver/warbyparker/work_sessions.sql |
One row per AGENT_ID + SESSION_START |
AGENT_DURATIONS |
GLADLY_AGENT_DURATIONS | silver/warbyparker/agent_durations.sql |
One row per AGENT_ID + STATUS_START |
AGENT_SUMMARY |
GLADLY_AGENT_SUMMARY | silver/warbyparker/wbp_gladly_agent_summary.sql |
One row per AGENT_ID + day |
INBOX_GLOSSARY |
External / Manual | N/A (managed separately) | One row per INBOX_ID |
GOLD Schema¶
| Object | Type | dbt Model | Source | Grain |
|---|---|---|---|---|
FCT_CONTACTS |
Dynamic Table | gold/warbyparker/fct_contacts.sql |
SILVER.CONTACT_TIMESTAMPS + CORE_DB.SILVER.ROSTER_WARBYPARKER | One row per CONTACT_ID |
AGG_AGENT_DAILY_CONTACTS |
Dynamic Table | gold/warbyparker/agg_agent_daily_contacts.sql |
FCT_CONTACTS | One row per (AGENT_ID, CONTACT_DATE) |
RPT_EMAIL_DAILY |
View | gold/warbyparker/rpt_email_daily.sql |
AGG_AGENT_DAILY_CONTACTS | One row per (AGENT_ID, DATE) |
RPT_AI_VS_NONAI_QA_WOW |
View | gold/warbyparker/rpt_ai_vs_nonai_qa_wow.sql |
fct_qa_internal, fct_qa_partner | One row per (WEEK_START_DATE × AGENT_GROUP × SCORE_TYPE) |
RPT_AI_VS_NONAI_QA_QOQ |
View | gold/warbyparker/rpt_ai_vs_nonai_qa_qoq.sql |
fct_qa_internal, fct_qa_partner | One row per (QUARTER_START_DATE × AGENT_GROUP × SCORE_TYPE) |
AI_AGENTS |
Seed Table | seeds/ai_agents.csv |
Static CSV | One row per agent (AI wave enablement dates) |
SANDBOX Schema¶
Ad-hoc and supplementary datasets for analyst use. No pipeline automation, no dbt models. Tables follow the {SOURCE}_{OBJECT}_{ISSUE_NUMBER} naming convention. See ADR 015.
| Table | Source | Loaded By | Issue | Notes |
|---|---|---|---|---|
| (tables added as needed — each linked to a GitHub issue) |
CND_DB (Condé Nast)¶
BRONZE Schema¶
| Table | Source System | Load Strategy | DAG | Schemachange Version |
|---|---|---|---|---|
SPROUT_MESSAGES |
Sprout Social API | incremental | condenast_sprout_messages_incremental | — |
CND_MEDALLIA_CSAT |
Medallia (Stella Connect) API | batch_replace | condenast_medallia_daily | V1.2.0 |
SILVER Schema¶
| Table | Source | dbt Model | Grain |
|---|---|---|---|
| (To be documented as Silver layer is built) |
GOLD Schema¶
| Object | Type | Notes |
|---|---|---|
| (To be documented as Gold layer is built) |
SANDBOX Schema¶
Ad-hoc and supplementary datasets for analyst use. No pipeline automation, no dbt models. Tables follow the {SOURCE}_{OBJECT}_{ISSUE_NUMBER} naming convention. See ADR 015.
| Table | Source | Loaded By | Issue | Notes |
|---|---|---|---|---|
| (tables added as needed — each linked to a GitHub issue) |
CORE_DB (Shared Resources)¶
BRONZE Schema¶
All Bronze tables: all VARCHAR columns, batch_replace loading strategy (one row per employee per BATCH_ID).
PH HR Roster tables — source: Google Sheets (PeopleHub/BambooHR export):
| Table | Source Sheet Tab | DAG | Schemachange Version |
|---|---|---|---|
PH_HR_ROSTER_ACTIVE |
PH HR Active | core_ph_hr_roster_daily | V1.33.0 |
PH_HR_ROSTER_INACTIVE |
PH HR Inactive | core_ph_hr_roster_daily | V1.34.0 |
BI Roster tables — source: Standard_Roster Google Sheet (1TDfcwDHQFM3fmAJhQOzoWjDbTikJCN0wvQ5RYh2xjNY), all loaded by core_gsheets_bi_roster_daily DAG:
| Table | Sheet Tab | Schemachange Version |
|---|---|---|
GSHEET_BI_ROSTER_WARBYPARKER |
WARBYPARKER | V1.5.1 |
GSHEET_BI_ROSTER_BI_TEAM |
Bi Team | V1.6.0 |
GSHEET_BI_ROSTER_STAFF_MX |
STAFF MX | V1.7.0 |
GSHEET_BI_ROSTER_MORGANANDMORGAN |
MORGANANDMORGAN | V1.8.0 |
GSHEET_BI_ROSTER_QUADLOCK |
QUADLOCK | V1.9.0 |
GSHEET_BI_ROSTER_IONOS |
IONOS | V1.10.0 |
GSHEET_BI_ROSTER_FLARE |
FLARE | V1.11.0 |
GSHEET_BI_ROSTER_POSTMAN_LAW |
POSTMAN LAW | V1.12.0 |
GSHEET_BI_ROSTER_RUGIET |
RUGIET | V1.13.0 |
GSHEET_BI_ROSTER_JCREW |
JCREW | V1.14.0 |
GSHEET_BI_ROSTER_KELLER_POSTMAN |
KELLER POSTMAN | V1.15.0 |
GSHEET_BI_ROSTER_CONDENAST |
CONDENAST | V1.16.0 |
GSHEET_BI_ROSTER_WITHIN_HEALTH |
WITHIN HEALTH | V1.17.0 |
GSHEET_BI_ROSTER_WESTERN_DENTAL |
WESTERN DENTAL | V1.18.0 |
GSHEET_BI_ROSTER_MATCH |
MATCH | V1.19.0 |
GSHEET_BI_ROSTER_LOGITECH |
LOGITECH | V1.20.0 |
GSHEET_BI_ROSTER_DRFIRST |
DRFIRST | V1.21.0 |
GSHEET_BI_ROSTER_GOODFOOD |
GOODFOOD | V1.22.0 |
GSHEET_BI_ROSTER_IMAGINE_WELLNESS |
IMAGINE WELLNESS | V1.23.0 |
GSHEET_BI_ROSTER_NBA |
NBA | V1.24.0 |
GSHEET_BI_ROSTER_TRIM |
TRIM | V1.25.0 |
GSHEET_BI_ROSTER_UR_LABS |
UR LABS | V1.26.0 |
GSHEET_BI_ROSTER_FLEX_MG |
FLEX MG | V1.27.0 |
GSHEET_BI_ROSTER_CARTAMUNDI |
CARTAMUNDI | V1.28.0 |
GSHEET_BI_ROSTER_HELLOFRESH |
HELLOFRESH | V1.29.0 |
GSHEET_BI_ROSTER_HELLOFRESH_TERMS |
HELLOFRESH TERMS | V1.30.0 |
GSHEET_BI_ROSTER_SMASHTECH |
SMASHTECH | V1.31.0 |
SILVER Schema¶
Shared resources used by all client Gold layers.
PH HR Roster — sourced from BRONZE.PH_HR_ROSTER_*:
| Table | Purpose | dbt Model | Updated By |
|---|---|---|---|
PH_HR_ROSTER_ACTIVE |
PH active employee roster | silver/core/ph_hr_roster_active.sql |
core_dbt_bi_roster DAG |
PH_HR_ROSTER_INACTIVE |
PH inactive employee roster | silver/core/ph_hr_roster_inactive.sql |
core_dbt_bi_roster DAG |
BI Rosters — sourced from BRONZE.GSHEET_BI_ROSTER_*, rebuilt each run from the latest BATCH_ID. One row per employee (current state):
| Table | dbt Model | Client |
|---|---|---|
BI_ROSTER_WARBYPARKER |
silver/core/bi_roster_warbyparker.sql |
Warby Parker |
BI_ROSTER_BI_TEAM |
silver/core/bi_roster_bi_team.sql |
BI Team (internal) |
BI_ROSTER_STAFF_MX |
silver/core/bi_roster_staff_mx.sql |
Staff MX |
BI_ROSTER_MORGANANDMORGAN |
silver/core/bi_roster_morganandmorgan.sql |
Morgan & Morgan |
BI_ROSTER_QUADLOCK |
silver/core/bi_roster_quadlock.sql |
Quad Lock |
BI_ROSTER_IONOS |
silver/core/bi_roster_ionos.sql |
IONOS |
BI_ROSTER_FLARE |
silver/core/bi_roster_flare.sql |
Flare |
BI_ROSTER_POSTMAN_LAW |
silver/core/bi_roster_postman_law.sql |
Postman Law |
BI_ROSTER_RUGIET |
silver/core/bi_roster_rugiet.sql |
Rugiet |
BI_ROSTER_JCREW |
silver/core/bi_roster_jcrew.sql |
J.Crew |
BI_ROSTER_KELLER_POSTMAN |
silver/core/bi_roster_keller_postman.sql |
Keller Postman |
BI_ROSTER_CONDENAST |
silver/core/bi_roster_condenast.sql |
Condé Nast |
BI_ROSTER_WITHIN_HEALTH |
silver/core/bi_roster_within_health.sql |
Within Health |
BI_ROSTER_WESTERN_DENTAL |
silver/core/bi_roster_western_dental.sql |
Western Dental |
BI_ROSTER_MATCH |
silver/core/bi_roster_match.sql |
Match |
BI_ROSTER_LOGITECH |
silver/core/bi_roster_logitech.sql |
Logitech |
BI_ROSTER_DRFIRST |
silver/core/bi_roster_drfirst.sql |
DrFirst |
BI_ROSTER_GOODFOOD |
silver/core/bi_roster_goodfood.sql |
GoodFood |
BI_ROSTER_IMAGINE_WELLNESS |
silver/core/bi_roster_imagine_wellness.sql |
Imagine Wellness |
BI_ROSTER_NBA |
silver/core/bi_roster_nba.sql |
NBA |
BI_ROSTER_TRIM |
silver/core/bi_roster_trim.sql |
Trim |
BI_ROSTER_UR_LABS |
silver/core/bi_roster_ur_labs.sql |
UR Labs |
BI_ROSTER_FLEX_MG |
silver/core/bi_roster_flex_mg.sql |
Flex MG |
BI_ROSTER_CARTAMUNDI |
silver/core/bi_roster_cartamundi.sql |
Cartamundi |
BI_ROSTER_HELLOFRESH |
silver/core/bi_roster_hellofresh.sql |
HelloFresh |
BI_ROSTER_SMASHTECH |
silver/core/bi_roster_smashtech.sql |
Smashtech |
GSHEET_BI_ROSTER_HELLOFRESH_TERMShas a Bronze table but no Silver model (terms-only reference data, not an employee roster).
Legacy rosters (deprecated — sourced from OPERATIONS.BAMBOOHR):
| Table | Purpose | Updated By | Notes |
|---|---|---|---|
ROSTER_WARBYPARKER |
WBP XO agent roster (legacy) | core_ph_hr_roster_daily DAG | Being replaced by DIM_EMPLOYEE_WARBYPARKER in GOLD |
ROSTER_CONDENAST |
CND XO agent roster (legacy) | core_ph_hr_roster_daily DAG | Being replaced by DIM_EMPLOYEE_CONDENAST in GOLD |
GOLD Schema¶
Employee dimensions for all clients (SCD Type 1 — latest state wins). Per ADR 010, all employee dimensions live here regardless of client.
| Table | dbt Model | Source Silver | Client |
|---|---|---|---|
DIM_EMPLOYEE_WARBYPARKER |
gold/core/dim_employee_warbyparker.sql |
BI_ROSTER_WARBYPARKER |
Warby Parker |
DIM_EMPLOYEE_BI_TEAM |
gold/core/dim_employee_bi_team.sql |
BI_ROSTER_BI_TEAM |
BI Team |
DIM_EMPLOYEE_STAFF_MX |
gold/core/dim_employee_staff_mx.sql |
BI_ROSTER_STAFF_MX |
Staff MX |
DIM_EMPLOYEE_MORGANANDMORGAN |
gold/core/dim_employee_morganandmorgan.sql |
BI_ROSTER_MORGANANDMORGAN |
Morgan & Morgan |
DIM_EMPLOYEE_QUADLOCK |
gold/core/dim_employee_quadlock.sql |
BI_ROSTER_QUADLOCK |
Quad Lock |
DIM_EMPLOYEE_IONOS |
gold/core/dim_employee_ionos.sql |
BI_ROSTER_IONOS |
IONOS |
DIM_EMPLOYEE_FLARE |
gold/core/dim_employee_flare.sql |
BI_ROSTER_FLARE |
Flare |
DIM_EMPLOYEE_POSTMAN_LAW |
gold/core/dim_employee_postman_law.sql |
BI_ROSTER_POSTMAN_LAW |
Postman Law |
DIM_EMPLOYEE_RUGIET |
gold/core/dim_employee_rugiet.sql |
BI_ROSTER_RUGIET |
Rugiet |
DIM_EMPLOYEE_JCREW |
gold/core/dim_employee_jcrew.sql |
BI_ROSTER_JCREW |
J.Crew |
DIM_EMPLOYEE_KELLER_POSTMAN |
gold/core/dim_employee_keller_postman.sql |
BI_ROSTER_KELLER_POSTMAN |
Keller Postman |
DIM_EMPLOYEE_CONDENAST |
gold/core/dim_employee_condenast.sql |
BI_ROSTER_CONDENAST |
Condé Nast |
DIM_EMPLOYEE_WITHIN_HEALTH |
gold/core/dim_employee_within_health.sql |
BI_ROSTER_WITHIN_HEALTH |
Within Health |
DIM_EMPLOYEE_WESTERN_DENTAL |
gold/core/dim_employee_western_dental.sql |
BI_ROSTER_WESTERN_DENTAL |
Western Dental |
DIM_EMPLOYEE_MATCH |
gold/core/dim_employee_match.sql |
BI_ROSTER_MATCH |
Match |
DIM_EMPLOYEE_LOGITECH |
gold/core/dim_employee_logitech.sql |
BI_ROSTER_LOGITECH |
Logitech |
DIM_EMPLOYEE_DRFIRST |
gold/core/dim_employee_drfirst.sql |
BI_ROSTER_DRFIRST |
DrFirst |
DIM_EMPLOYEE_GOODFOOD |
gold/core/dim_employee_goodfood.sql |
BI_ROSTER_GOODFOOD |
GoodFood |
DIM_EMPLOYEE_IMAGINE_WELLNESS |
gold/core/dim_employee_imagine_wellness.sql |
BI_ROSTER_IMAGINE_WELLNESS |
Imagine Wellness |
DIM_EMPLOYEE_NBA |
gold/core/dim_employee_nba.sql |
BI_ROSTER_NBA |
NBA |
DIM_EMPLOYEE_TRIM |
gold/core/dim_employee_trim.sql |
BI_ROSTER_TRIM |
Trim |
DIM_EMPLOYEE_UR_LABS |
gold/core/dim_employee_ur_labs.sql |
BI_ROSTER_UR_LABS |
UR Labs |
DIM_EMPLOYEE_FLEX_MG |
gold/core/dim_employee_flex_mg.sql |
BI_ROSTER_FLEX_MG |
Flex MG |
DIM_EMPLOYEE_CARTAMUNDI |
gold/core/dim_employee_cartamundi.sql |
BI_ROSTER_CARTAMUNDI |
Cartamundi |
DIM_EMPLOYEE_HELLOFRESH |
gold/core/dim_employee_hellofresh.sql |
BI_ROSTER_HELLOFRESH |
HelloFresh |
DIM_EMPLOYEE_SMASHTECH |
gold/core/dim_employee_smashtech.sql |
BI_ROSTER_SMASHTECH |
Smashtech |
DIM_EMPLOYEE_PH |
gold/core/dim_employee_ph.sql |
PH_HR_ROSTER_ACTIVE |
PH (internal) |
SANDBOX Schema¶
Ad-hoc and supplementary datasets for analyst use. No pipeline automation, no dbt models. Tables follow the {SOURCE}_{OBJECT}_{ISSUE_NUMBER} naming convention. See ADR 015.
| Table | Source | Loaded By | Issue | Notes |
|---|---|---|---|---|
| (tables added as needed — each linked to a GitHub issue) |
MAESTRO_DB (Rippit — Partner-Managed Bronze, Condé Nast)¶
Owner: Rippit team (MAESTRO_USER / MAESTRO_ROLE / RIPPIT_LOAD_WH)
Pattern: Partner-managed Bronze — Rippit loads QA evaluation data directly; XO-Data reads cross-database from Silver models. See ADR 017.
MAESTRO Schema¶
| Table | Source System | Owner | Notes |
|---|---|---|---|
(tables loaded by Rippit team — explore via DESCRIBE SCHEMA MAESTRO_DB.MAESTRO) |
Rippit QA | Rippit team | All read-only from XO-Data perspective |
OPERATIONS (Legacy — Multi-Client Analytics DB)¶
This database contains legacy multi-client analytics objects. Actively maintained for ad hoc analysis and reporting; no _DEV variant exists — all queries run against prod data.
| Schema | Objects | Purpose | Naming pattern |
|---|---|---|---|
STAGING |
~9 dynamic tables | Intermediate transformation layer | STAGE_{CLIENT}_{OBJECT} |
ODS |
~15 dynamic tables | Cross-client operational data store | XOS_*, {CLIENT}_* |
AGGREGATE |
~45 dynamic tables + ~36 views | Pre-computed metrics and dashboards | {CLIENT}_{METRIC}, {CLIENT}_RPT_* |
BAMBOOHR |
~7 dynamic tables | Employee roster source (feeds CORE_DB) | ROSTER_{CLIENT} |
Do not create new objects in OPERATIONS. For new analytical surfaces, build in the medallion architecture (WBP_DB/CND_DB GOLD layer). Existing objects are read-only for analysis.
Airflow Connections → Snowflake Mapping¶
| Airflow Connection ID | Snowflake Database | Role | Used By |
|---|---|---|---|
snowflake_loader_prod |
WBP_DB, CND_DB, CORE_DB | XO_DATA_LOADER | xo-foundry load tasks |
snowflake_dbt_prod |
WBP_DB, CND_DB, CORE_DB | XO_DBT_ROLE | dbt transformations (via Cosmos) |
snowflake_loader_dev |
WBP_DB_DEV, CND_DB_DEV | XO_DATA_ENGINEER_DEV | Local development |
Naming Constraints¶
Before creating any new Snowflake object, verify: 1. Table name doesn't already exist in this inventory 2. Follows naming convention from ADR 009 3. Lives in the correct database — per-client data in client DB, shared data in CORE_DB 4. Schemachange migration file created — DDL must go through version control
See also: architecture-summary.md | rbac-permission-matrix.md | ADR 009