See it as a diagram
Everything below, as a diagram you can edit. Describe yours and see it in seconds.
No account needed · Editable canvas, not a picture
Three zones, and a rule written on each boundary
Draw the layers as zones rather than as single boxes, because the layer is a container of tables, not a step. Then write the promotion rule on the boundary between zones, as a short annotation. Between bronze and silver it is typically something like deduplicated on business key, types cast, late arrivals resolved to event time. Between silver and gold it is aggregated to a business grain, joined to conformed dimensions, no source specific columns.
Those rules are what stop the layers drifting. Without them written down somewhere a reader can see, silver gradually accumulates business logic, gold gradually accumulates raw columns, and eighteen months later nobody can say what the layers mean any more. The boundary annotation is cheap insurance and it is the part of the diagram that survives longest.
Keep the layer characteristics on the zone label too. Bronze is append only with the source schema preserved plus an ingestion timestamp; silver is deduplicated and conformed with resolved keys; gold is business level aggregates shaped for specific consumers. Three short labels, one per zone.
It also helps to know what the pattern claims for itself. Databricks calls the medallion architecture a recommended best practice and explicitly not a requirement, says it is common to start data modeling in the silver layer, and describes gold as where you model for reporting and analytics using a dimensional model, with relationships and defined measures. That is a useful correction to how the pattern is usually drawn: the layers are a refinement ladder, not a replacement for a data model, so a gold zone should hold facts and dimensions that relate to each other rather than a shelf of unrelated aggregates.
Real table names, not placeholder boxes
A medallion diagram with nothing inside the zones is a diagram of the pattern, not of your platform, and the pattern is already documented by the vendor. Put the real objects inside: the bronze landing tables per source, the silver conformed entities, the gold marts. Where a layer has more tables than fit, group them by source or by domain and put a count on the group, for example 34 bronze tables across 6 sources.
Reflect your actual namespace in the names, because that is the part people copy into a query editor. On Databricks with Unity Catalog that usually means catalog.schema.table, so bronze reads as prod.bronze.crm_contacts. On Snowflake the layers are usually schemas or databases, so it reads as ANALYTICS.SILVER.CUSTOMER. Draw the container that really exists in your platform rather than the generic one from the reference architecture.
The arrows that matter most are between silver and gold, because that is where the fan out lives and where lineage questions get asked. Bronze to silver is usually one to one and can be summarized. Silver to gold is many to many and is exactly what a reader is trying to work out.
ZONE bronze (append only, source schema + _ingested_at)
prod.bronze.crm_contacts prod.bronze.app_orders [+31 more, 6 sources]
| promotion: dedupe on business key, cast types, resolve late arrivals
v
ZONE silver (conformed entities, resolved keys)
prod.silver.customer prod.silver.order prod.silver.product
| promotion: aggregate to business grain, join conformed dims
v
ZONE gold (business aggregates per consumer)
prod.gold.revenue_daily -> Finance board
prod.gold.customer_360 -> CRM reverse sync
prod.gold.churn_features -> churn modelThe fourth layer question, and what not to draw
Teams often want a fourth layer, called platinum or semantic or serving. The test is whether it is a real storage layer with tables that persist. If it is, draw it as a fourth zone with the same treatment: characteristics on the label, promotion rule on the boundary. If it is a semantic model or a metrics layer that computes on read, it is a serving surface, not a layer, and it belongs outside the medallion zones as a consumer.
Do not draw the orchestration inside the layer zones. The dbt runs or the Databricks jobs that move data between layers are not layers themselves, and putting them inline turns three clean boundaries into six boxes. Name the job on the promotion annotation instead, for example dbt build tag:silver, hourly.
Do not draw quality checks as a separate layer either. They belong at the boundary they guard, as part of the promotion rule, plus one quarantine node hanging off the bronze to silver boundary for the rows that fail. That single quarantine node is the most consulted part of a medallion diagram during an incident and it is missing from most of them.
From pattern to your platform
FAQ
How do you draw a medallion architecture diagram?
What goes in bronze, silver, and gold?
Should the diagram use catalog and schema names?
Is a fourth platinum layer worth drawing?
Where do dbt runs or Databricks jobs go on a medallion diagram?
How many tables should appear inside each layer?