Skip to content
plainsight.pro

Medallion Architecture - Bronze, Silver, Gold

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.

%%{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).

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.

%%{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.