flowchart LR
subgraph src["Sources"]
direction TB
oltp[("Operational DBs<br/><i>CDC</i>")]
saas["SaaS APIs<br/><i>batch pull</i>"]
events[["Event Stream<br/><i>Kafka</i>"]]
files["Partner Files<br/><i>SFTP drop</i>"]
end
subgraph raw["Raw Zone"]
direction TB
r1[("append-only<br/>source schema<br/>no transforms")]
r2["<i>guarantee:</i><br/>replayable history"]
end
subgraph clean["Cleansed Zone"]
direction TB
c1[("deduplicated<br/>typed, conformed<br/>quality-tested")]
c2["<i>guarantee:</i><br/>schema + quality SLA"]
end
subgraph curated["Curated Zone"]
direction TB
g1[("business entities<br/>modelled, aggregated")]
g2["<i>guarantee:</i><br/>agreed definitions"]
end
subgraph serve["Consumers"]
direction TB
bi["BI & Reporting"]
ml["Feature Store<br/>& Model Training"]
api["Data API<br/>& Reverse ETL"]
end
oltp --> raw
saas --> raw
events --> raw
files --> raw
raw --> clean
clean --> curated
curated --> serve
clean -.->|"exploration only"| ml
Data View
Layered Data Platform Diagram
Sources landing into progressively refined zones, with the contract each zone offers written down rather than assumed.
Medallion Architecture
Design