# Medallion Architecture - Bronze, Silver, Gold > [!info] Overview > Plainsight uses the Medallion pattern as a shared language (Bronze -> Silver -> Gold) while keeping our semantic layer names for clarity (Landing/Staging -> ADS -> Gold business products). Medallion names keep us aligned with platform defaults; semantic names keep responsibilities explicit. ```mermaid %%{init: { "flowchart": { "useMaxWidth": true, "curve": "basis" }, "theme": "base" } }%% flowchart LR Sources[(Sources)] --> Bronze[Bronze<br/>Raw / Landing & Staging<br/>per source] Bronze --> Silver[Silver<br/>Cleansed / ADS] Silver --> Gold[Gold<br/>Business-ready] Gold --> Consumers[Consumers] style Bronze fill:#CD7F32,stroke:#8B4513,color:#FFFFFF style Silver fill:#C0C0C0,stroke:#808080,color:#000000 style Gold fill:#FFD700,stroke:#DAA520,color:#000000 ``` ## How We Use Medallion at Plainsight - **Bronze = Landing + Staging (raw, auditable)** Land data as-is, keep history, and isolate by source. Light parsing only when required for ingestion. When the platform supports schemas, implement Bronze as **separate schemas per source system**: `landing_<source>` (optional) and `staging_<source>` (required), for example `landing_sap` / `staging_sap`. - **Silver = ADS (cleansed, conformed, historical)** Apply quality rules, integrate sources, denormalize for usability, and create SCD-ready snapshots. - **Gold (Dims/Facts, OBT, Feature Store)** Publish business-ready products: dimensional stars (facts + dimensions), one-big-tables (when justified), semantic views, and curated feature sets. The Dim/Fact, ADS, Staging, and Landing layers remain the canonical implementation. Use Medallion terms as friendly aliases so teams can align quickly with tooling and vendor language without losing precision. ## Responsibilities by Layer | Medallion | Plainsight layer(s) | What happens here | Typical outputs | |-----------|---------------------|-------------------|-----------------| | Bronze | Landing + Staging | Preserve raw data with auditability; minimal transformation; per-source isolation (separate Landing/Staging per source) | Raw Delta/Parquet tables with audit columns in `landing_<source>` / `staging_<source>` schemas (or equivalent) | | Silver | ADS | Data quality checks, conformance, source integration, progressive denormalization, optional SCD snapshots | `ADS_*` base tables, `ADS_*_Snapshot` history tables | | Gold | Gold business products | Business modeling and products | Star schemas (Dims/Facts), OBTs, feature sets, semantic views | ## Working With Both Naming Sets - Use **Bronze/Silver/Gold** when coordinating with platforms, partners, or UI defaults. - Use **Landing/Staging, ADS, Gold business products** when documenting responsibilities or writing code. - Tag schemas, jobs, and storage paths with both when it helps discoverability (`layer=ads`, `medallion=silver`). For Bronze, also tag the source (`layer=staging`, `medallion=bronze`, `source=sap`). > [!tip] Avoid layer sprawl > Stick to Bronze, Silver, and Gold. If you need intermediate logic, model it as views or transient steps inside the nearest layer instead of inventing new metals. ## Recommended Flow ```mermaid %%{init: { "flowchart": { "useMaxWidth": true, "curve": "basis" }, "theme": "base" } }%% flowchart TB subgraph Bronze["Bronze"] LandingSAP[landing_sap<br/>optional]:::bronzeOptional StagingSAP[staging_sap]:::bronze LandingSF[landing_salesforce<br/>optional]:::bronzeOptional StagingSF[staging_salesforce]:::bronze end subgraph Silver["Silver"] ADS[ads<br/>Cleansed + integrated]:::silver end subgraph Gold["Gold"] Dims[Star: Dimensions & Facts]:::gold OBT[One Big Table]:::gold Feat[Feature Stores]:::gold end LandingSAP --> StagingSAP --> ADS --> Dims LandingSF --> StagingSF --> ADS ADS --> OBT ADS --> Feat classDef bronze fill:#CD7F32,stroke:#8B4513,stroke-width:1px,color:#FFFFFF; classDef bronzeOptional fill:#CD7F32,stroke:#8B4513,stroke-width:2px,stroke-dasharray:5 5,color:#FFFFFF; classDef silver fill:#C0C0C0,stroke:#808080,stroke-width:1px,color:#000000; classDef gold fill:#FFD700,stroke:#DAA520,stroke-width:1px,color:#000000; style Bronze fill:#CD7F32,stroke:#8B4513,color:#FFFFFF style Silver fill:#C0C0C0,stroke:#808080,color:#000000 style Gold fill:#FFD700,stroke:#DAA520,color:#000000 ``` ## Practices That Keep Medallion + Semantic Layers in Sync - Keep quality gates explicit at each transition (Bronze -> Silver, Silver -> Gold). - Preserve reloadability: Landing/Staging is the recovery point for rebuilding Silver/Gold. - Centralize SCD2 tracking in ADS snapshots; keep Gold focused on business modeling. - Publish Gold products that hide upstream complexity from consumers. - Document both the Medallion alias and the semantic layer name for every dataset. --- ## Related Pages - [[Data Layers and Modeling]]: End-to-end architecture - [[Landing and Staging]]: Bronze equivalent - [[Analytical Data Store (ADS)]]: Silver equivalent - [[Star - Dimension Tables]] and [[Star - Fact Tables]]: Gold equivalents