Skip to main content

Medallion architecture for AI: Bronze, Silver and Gold explained

Design medallion architecture for AI training, RAG and analytics. Learn how data layers, quality gates, access rules and ownership support production systems.

Rizwan QaiserOctober 6, 202610 min read
Discuss Medallion architecture
A layered data platform moves source records through Bronze, Silver and Gold zones to governed business data products.
A layered data platform needs explicit contracts before it becomes a dependable business product.

Three takeaways

  • Bronze, Silver and Gold are operating contracts, not storage labels.
  • Quality failures need an owner, a visible queue and a replay path.
  • Gold data products need named decisions, consumers and accountability.

Finance says 9,400 units shipped last month. The warehouse feed says 9,655. Both numbers come from the same platform. Someone now spends a day working out which one to put in the board pack.

The direct answer. Medallion architecture is a way of organising your data into named stages, and each stage raises the bar. Bronze keeps what the source sent. Silver holds records that passed checks. Gold holds data shaped for one business question. The names matter less than the rules at each step.

The payoff is the day a month you stop spending on reconciling two systems by hand. Autonomous Technologies is an engineering firm. We build and run the systems behind Shopify stores, for founders and operators who own the store after launch. Our ecommerce integrations work is priced on that saved day: we name who owns each record first, so the reconciling stops before any layer is drawn.

Three named folders prove nothing. The real test is whether you can answer four questions for every dataset that matters. A dataset is a table or file of related records, such as all your orders. Where did this record come from? What checks did it pass? Who owns its meaning? What happens when a check fails? The Databricks reference architecture, from a large data platform vendor, calls the layers a recommended pattern, not a product feature.

Who this is for, and who it is not for

This is for engineering, data and operations leads who feed reporting and model work from one platform. Models are the trained programs that make predictions. This guide is vendor-neutral, so it favours no particular software supplier. The tables and the example are design aids, not a technical specification.

It is not for a team with one source, one report and one owner. Write one job, name the person who fixes it, and spend the saved months on the product. It is also not a rescue for unclear business rules. Three folders will not settle what net revenue means.

What each layer is actually for

Bronze holds captured source data and the details of how it arrived. Silver holds records that have been checked, de-duplicated and lined up. De-duplicated means repeat copies of the same event are collapsed into one. Gold holds data cut for a stated business question.

A layer is only as good as its contract. A contract names the allowed inputs and the shape of the data. It also names the freshness goal (how recent the data must be), the checks, the access rules, the owner and the failure path. Without those, a Gold table can be as opaque as a raw export.

Layer
Bronze
Its job
Keep the received facts and how they arrived
Who reads it
Data engineering, audit, recovery
The question it must answer
What did the source send, and when?
Layer
Silver
Its job
Check, match and build durable records
Who reads it
Analysts, data science, later jobs
The question it must answer
Which records are safe to reuse?
Layer
Gold
Its job
State one agreed business idea
Who reads it
BI, apps, operations
The question it must answer
What do we mean by this metric?
Each layer answers a different question, and the Bronze question is the one that lets you replay a bad month instead of arguing about it.

Bronze is not an analyst sandbox. Databricks advises keeping raw state and its history, with little cleanup, so you can rerun the processing and audit the results when the data feeding it changes. Silver is where you check the shape of the data and handle missing values, duplicates and late records. Gold is where totals and models make a business question easy to answer.

Three columns show Bronze source records and replay history, Silver validated entities and quality checks, and Gold business products with named owners.
Every step between layers has a named check and a route for rejected records.

When the pattern is worth the cost

Use it when several teams need the same source data at different levels of trust. It earns its keep when sources change, late records are normal, definitions are argued over, or product teams need data with clear rules and owners outside a dashboard.

Situation
One source feeds one report
Start with
A documented source-to-report job
Why
More layers add upkeep, not clarity
Situation
Several teams reuse order data
Start with
Bronze plus a governed Silver model
Why
Stops every team fixing the same defect
Situation
Teams argue about a metric
Start with
A Gold product with a business owner
Why
The work is agreement, then a model
Situation
Sources and shapes change often
Start with
Bronze history plus contract checks
Why
You can spot drift and replay a fix
Three of these four rows do not call for layers at all: the pattern pays off where several teams reuse the same records.

Write the contracts before you pick the tool

Start from the decision that needs to improve. An operations lead may want a daily view of fulfilled orders, cancellations and return reasons. That one request settles a chain of choices. Which order ID. Which system owns fulfilment state. What an amended order means. Which timezone sets the business day. Which test catches a missing carrier event.

For every dataset that crosses a layer, record six things.

  1. Grain and key. What one row means, and the stable key (a unique ID) used to match it.
  2. Source and owner. The system allowed to set each important field.
  3. Quality gate. The checks, the threshold, and whether a bad record is rejected, held or passed with a warning.
  4. Freshness goal. How recent the data should be, in plain words, with one visible timestamp (the date and time of the last update).
  5. Recovery path. How an owner finds, fixes and reruns a failure without quietly editing history.
  6. Access and retention. Who can see what, matched to how sensitive the data is, and raw data kept only as long as it is needed (retention).

A layer is a contract, not a folder. A table belongs in Silver because it passed the Silver checks, not because its name ends in _clean.

Silver is where most teams gain ground

Silver builds reusable records of the things that matter, without bending them to one dashboard. For orders, that may mean a checked stream of order events (each change to an order), a single order record, and separate fulfilment events. Each carries both the source time and the time it arrived.

Keep bad and unclear records visible. Holding a record helps only if someone can see why, who owns the fix, and how it rejoins the flow. A hidden table of rejected records turns a data problem into a reporting debt.

When a source changes shape, keep the received record in Bronze. Catch the break at the promotion step, the point where a record moves up a layer. Tell the owner, with enough detail to act. Do not quietly force a new value into an old category to keep a dashboard green.

An incoming source record is validated before Silver; accepted records continue to the shared entity model while invalid records enter a visible exception queue with an owner and replay path.
A failed check should create an owned recovery task, not vanish from the pipeline.

Treat Gold as a product with an owner

A Gold dataset answers a set question for a set group. A weekly revenue summary is not just a total. It encodes rules about refunds, tax, currency, order state and the business calendar. A business owner approves what those rules mean. Engineering owns whether the build is reliable.

Keep Gold products small and named. A finance view and a growth dashboard may differ on purpose, as long as the difference is written down. The danger is two products with one name and two rules.

Shared data branches to finance revenue, operations fulfilment and customer retention products, each with an owner.
Reuse checked records, then make the purpose and the owner explicit for each product.

What we saw on a real pipeline

Our Shopify audit pipeline, a chain of automated steps that runs each audit, is a medallion pipeline that never uses the word. Every run gets one folder. Raw captures land under evidence, split into static and browser, exactly as received. A merge step combines them into one manifest, a checked list of everything captured, with a content hash per source. A content hash is a fingerprint that shows a file has not changed. No stage starts until the output before it validates against its contract. Findings, the revenue projection and the two reports sit at the top. Only one of the two reports may leave the building.

Layer
Bronze: evidence/static and evidence/browser
What sits there
Crawl, probe and browser captures as received
Rule that protects it
Stored PII-free, hash-verified, never edited
Layer
Silver: static and evidence manifests
What sits there
One merged, checked record of every source
Rule that protects it
A partial observation stays unknown, never zero
Layer
Gold: findings, projection v2, staged reports
What sits there
What a client reads
Rule that protects it
Re-running one module invalidates every report downstream
One audit run graph, read from its contracts and scripts on 22 September 2026. No client or store figures appear. Source: Hazn, our Shopify revenue audit pipeline.
What we counted
Stage contracts, each a versioned JSON Schema
Figure
15
What we counted
Deterministic probe and validation scripts
Figure
11
What we counted
Tests over those scripts, run with no network
Figure
279
What we counted
Exit code that means "data insufficient"
Figure
2
Counts from the same pipeline, 22 September 2026. Source: Hazn scripts and contracts.

The last row is the rule that earns its keep. A probe is a small script that checks one thing on a page. When a probe cannot read a page, it stops with exit code 2 (a number a script returns to say what happened) and the dependent claim is dropped. I would rather the pipeline say nothing than read an absence as a zero. That is what Silver is for.

How the pattern serves model and RAG work

For training a model, record the dataset version, the feature rules and the time window each run used. Features are the input values the model learns from. A clean Silver table can still leak the future into a past example, if a join (a step that matches records from two tables) uses a value nobody had at the time. Build repeatable snapshots and test that before shipping a model. Databricks documents point-in-time feature joins for this.

RAG serves something else. RAG (retrieval-augmented generation) means the app looks up source text and hands it to the model before it answers. Bronze can hold source versions. Silver can hold parsed text with stable IDs, permissions and checks. The index, the searchable copy the app looks up, has to carry edits, deletions and permission changes through. Gold is not a vector database (a store that finds text by meaning), and an embedding (a list of numbers that represents a piece of text) proves nothing about accuracy.

Use
Training or batch scoring
Main control
A repeatable point-in-time snapshot
What to record
Data version, job version, inclusion rules, split
The failure to test for
A rerun cannot reproduce the accepted result
Use
RAG indexing
Main control
Approved, permission-aware, fresh sources
What to record
Source version, owner, access, index version
The failure to test for
A user sees withdrawn or unauthorised text
The two uses need different release cadences: a training snapshot must be reproducible, while an index must be current within hours.

Microsoft’s RAG design guidance keeps ingestion (loading data in) and retrieval choices apart from generation and scoring.

Cost drivers and buyer risks

Storage is the small line. The running cost comes from how often you ingest, how much you process and how much history you keep, plus transfer, monitoring and the people who clear exceptions. Databricks makes the trade-off plain: continuous ingestion costs more and waits less than batch loading, which runs in scheduled chunks.

Buyer risk
Tool first
Early signal
A platform is picked before a dataset is named
What to do
Start with 2 or 3 products and their contracts
Buyer risk
Unbounded raw data
Early signal
Every payload kept, with no policy
What to do
Classify, set a purpose and a retention window
Buyer risk
Costly freshness
Early signal
Every job is asked to be real time
What to do
Set freshness per decision, then pick the mode
Buyer risk
Unowned failures
Early signal
Alerts land in a channel nobody reads
What to do
Name an owner and a responder per check
Buyer risk
Metric drift
Early signal
Similar dashboards disagree, with no note
What to do
Publish the rules, test Gold against examples
The first row causes the other four: a platform chosen before a decision is named tends to collect raw data nobody owns.

A staged sequence that proves recovery

Pick one domain, such as orders, and one decision that keeps needing manual work. Map the real sources and keys, then build Bronze capture and one Silver model.

Publish one Gold product with a named owner and an acceptance test. Break it on purpose before you widen. This proves the team can recover, not just demo a clean run.

Step
Pick the domain
Hold it to this scope
1 domain, 1 contested decision
Evidence it is done
A named owner outside the data team
Step
Map the sources
Hold it to this scope
Every system that writes the 3 or 4 fields that matter
Evidence it is done
Each field names 1 system of record
Step
Build Bronze and Silver
Hold it to this scope
1 Silver model, check results visible
Evidence it is done
A rejected record is visible, with an owner
Step
Publish 1 Gold product
Hold it to this scope
1 question, 1 audience, 1 acceptance test
Evidence it is done
The number matches an accepted sample
Step
Break it on purpose
Hold it to this scope
3 drills: shape change, late record, failed check
Evidence it is done
Each one recovered without editing history
Hold the first pass to 1 domain and 1 decision: a wider first pass is the most common reason a platform is never checked against a real business answer.

The ownership rule is the part that survives a change of platform. Thirty-seven pull requests (proposed code changes) reached Sene’s order systems between 14 July and 8 September 2026, and a named person accepted every one (Sene, agent-authored features behind a human gate).

If the next question is where these jobs run, our Databricks vs Apache Spark comparison covers platform and operating duties.

Start with the number people argue about

Take the one figure two systems report differently. Trace it back to the event each system received. That is an afternoon of work. It tells you whether you need layers or only an owner. The free scan does that first trace for you. It reads what your storefront and its connected systems record and lists the numbers that already disagree. It then ranks them by what each gap costs you in margin or in hours spent reconciling. You get back the shortest path to one number the board pack can trust, before a single layer is drawn.

Medallion architecture · Project enquiry

Make your data layers easier to trust

Tell us where the pipeline is getting hard to operate. We will follow up to discuss whether Autonomous can help.

We use these details to respond to this enquiry. See our privacy policy.

Common questions

Is medallion architecture the same as a data lakehouse?

No. A lakehouse is a platform that pairs cheap storage with warehouse-style querying. Medallion is a pattern for raising data quality in named stages. It can run on a lakehouse, a warehouse or something else, as long as the contracts are real.

Do all datasets need all three layers?

No. Use the pattern where reuse, audit or source churn justify it. A small derived dataset may need only a documented job and a named owner. Layers no one reads add cost without adding control.

Should analysts query Silver or Gold?

Both can be right. Silver suits detailed work where the analyst wants the records. Gold suits a question whose rules are already agreed. Let the task and the sensitivity decide.

Who owns a Gold data product?

A named business person owns what it means. Engineering owns whether it is reliable. If only engineering is named, nobody can approve a change to the rules on refunds, currency or the calendar, and the meaning will drift.

Filed under

analyticsdata-architecturedata-engineeringdata-governance
Continue reading