From source to consumer, deliberately designed
We design data platforms in layers, with explicit interfaces between them. A bronze layer captures source data faithfully; a silver layer cleanses, conforms and joins; a gold layer exposes the entities and metrics consumed by analysts, data scientists and applications. Each layer has its own owners, its own quality expectations, and its own evolution rules. The discipline is unglamorous and the payoff is substantial: a data set that misbehaves can be located, explained and fixed quickly.
Within each layer we use the storage formats and query engines best suited to the workload. Lakehouse formats — Apache Iceberg, Delta Lake, Apache Hudi — increasingly let us run warehouse-style analytics on lake-economics storage, while preserving the engineering properties (ACID writes, time travel, schema evolution) that production work requires. Where genuine warehouse performance is needed at the gold layer, we are happy to land curated marts in Snowflake, BigQuery, Redshift or Synapse.
Streaming is treated as a first-class delivery mode rather than an afterthought. We use Kafka, Kinesis or Pub/Sub for transport, Flink, Spark Structured Streaming or Beam for processing, and Iceberg or Delta for landing — with the same quality and governance controls that batch pipelines enjoy. Lambda-style architectures with parallel batch and stream paths are something we now actively avoid; the operational cost is rarely justified.
- Bronze / silver / gold layered design
- Open table formats (Iceberg, Delta, Hudi)
- Streaming-first ingestion where it pays
- Cloud-native storage with lifecycle policies
- Reusable transformations in dbt or Spark
- Reverse ETL to operational systems


