Case study · Data platforms

Joining quality, production and supplier data so defects surface earlier

Quality data in one system, production data in each plant's own stack, supplier data in spreadsheets and portals. Defects were found late because nobody could join the three. The goal was an open lakehouse fed by contracted data from every plant, with quality metrics everyone agreed on.

Case studyManufacturing · Multi-plantSumanta Mukhopadhyay8 min read
#data#platform#governance#streaming#architecture
CASE STUDY · CASE STUDY · DATA PLATFORMS28 Oct 2026 · 01:34 GST
At a glance
SectorManufacturing · Multi-plant
My roleFractional CTO and data architect
EngagementArchitecture, platform build and operating model
ScopeIngestion, data contracts, lakehouse, semantic layer, quality metrics
What changed
  • Quality, production and supplier data joinable at batch and lot level across plants
  • Each plant's feed governed by a published contract with an owner
  • One agreed definition for each quality metric, used by dashboards and analysts alike
  • Breaking changes caught at the plant boundary instead of in month-end reports
Apache IcebergSparkChange data captureOpen Data Contract StandardREST catalogSemantic layerObject storageOrchestration

Anonymised composite. Client names, identifying details and confidential figures are withheld; public facts are cited in the references.

The situation

A manufacturer with several plants had good systems and poor connections. Quality inspection results lived in a central quality system. Production parameters lived in each plant's execution and historian stack, configured differently at every site. Supplier certificates and incoming inspection data arrived as spreadsheets and portal exports. When a customer complaint came in, tracing it back to a material lot, a line, a shift and a process setting took days of manual joining, and by then more product had shipped.

Previous attempts at a central warehouse had stalled. Every plant change broke a pipeline, and every report defined "first-pass yield" slightly differently.

What had to be true

  • Joinable at the right grain: batch, lot, line and time, across quality, production and supplier data.
  • Plants accountable for their feeds, with a clear owner and a written promise for each.
  • Open storage, so different teams and engines could use the same tables.
  • One definition per metric, shared by dashboards, analysts and any future AI use.
  • No rip and replace of plant systems.

ISA-95 framed the boundaries. It addresses the interface between enterprise business systems and manufacturing operations and control1, which is exactly where the lakehouse sat: reading from plant-level systems, serving enterprise-level analysis, owning neither.

Architecture

Plants
Execution systemsorders, genealogyHistoriansprocess parametersQuality systeminspections, NCRsSupplier datacertificates, incoming QC
Contract
Data contractsone per feed, ownedContract checksschema, freshness, rulesQuarantinefailed batches
Lakehouse
Iceberg tablesraw, conformed, curatedREST catalogone namespace per domainSpark jobsconform and join
Semantics
Semantic layergoverned metricsGenealogy modellot to productReference datadefect codes, sites
Use
Quality dashboardsper plant, per supplierAlertsdrift and repeat defectsAnalyst notebooksroot cause
Layered architecture: contracts at the plant boundary, open tables in the middle, governed metrics on top.

Apache Iceberg tracks table state through metadata files replaced by atomic swaps, with snapshots and schema evolution defined in the specification2. That gave reproducible reads for investigations and safe schema changes when a plant added a parameter. See Apache Iceberg v3 for the lakehouse and lakehouse catalog strategy.

The data flow, end to end

  1. CaptureChange data capture or scheduled extracts from each plant system
  2. CheckValidate against the feed's contract; quarantine and notify the owner on failure
  3. LandAppend to raw Iceberg tables with source and contract version recorded
  4. ConformMap plant codes to shared reference data; build lot genealogy
  5. DefineCompute quality metrics once, in the semantic layer
  6. ActDashboards, alerts and investigations read governed metrics only
Every number on a dashboard traces back to a contracted feed and a table snapshot.

Capture patterns are covered in change data capture and event streams.

The hard part: getting plants to own a promise

The technology was well understood. The hard part was organisational: plants had never been asked to promise anything about their data, and a central team had always absorbed the breakage. Contracts changed that, but only once they were written in terms plants recognised.

We used the Open Data Contract Standard, a YAML-based, platform-neutral format for agreements between data producers and consumers3; version 3 organises a contract into sections that include schema, data quality, service levels and team4. In practice:

  • Contracts started small: schema, owner, freshness and a handful of rules the plant itself agreed were reasonable.
  • A failed check went to the plant's named owner, not to the central team's backlog.
  • Breaking changes required a new contract version and a notice period, agreed in a short change process.
  • Plant-specific codes stayed in the feed; mapping to shared reference data was a central, versioned step.

A data contract is an organisational tool that happens to be written in YAML. Its value is the conversation it forces between producer and consumer.

More in the data contracts playbook.

How the engagement ran

Plant data owner
  1. Agree the contract
  2. Fix failed checks at source
  3. Announce changes
Platform team
  1. Run checks and quarantine
  2. Conform and join
  3. Publish curated tables
Quality leads
  1. Define metrics once
  2. Review alerts
  3. Drive supplier actions
Ownership by role: plants own feeds, the platform owns pipes, quality owns definitions.
Phase 1Trace one complaint
  • Walk an investigation end to end
  • Source inventory
  • Metric disagreements
Phase 2Pilot plant
  • First contracts
  • Iceberg tables and catalog
  • Lot genealogy
Phase 3Metrics
  • Semantic layer
  • Agreed definitions
  • Dashboards and alerts
Phase 4Roll out
  • Further plants
  • Supplier feeds
  • Change process
Phased delivery: one plant and one real investigation before scaling.

Key decisions and trade-offs

DecisionAlternativeWhy
Apache Iceberg tablesProprietary warehouse storageMultiple engines on one copy; no lock-in
Contracts at the plant boundaryCentral team fixes breakagesFixes happen where the change was made
Metrics in a semantic layerDefinitions in each dashboardOne answer to "what is our yield?"
Keep plant codes, map centrallyForce plants to standardise firstDelivery without waiting on every plant
Pilot one plant end to endAll plants at onceContract and genealogy lessons learned once

Why metrics belong in a semantic layer, especially if AI will query them later, is covered in text-to-SQL and the semantic layer.

What I'd do again, and differently

Again: start by tracing one real complaint end to end, and make plants owners rather than suppliers of data. Differently: agree metric definitions with quality leads before building dashboards, not alongside them. Every disagreement found late cost a rebuild.

If you're facing something similar, the fractional CTO page describes how I run these engagements, or analyse your challenge and bring the result to a call.

References
  1. 1
  2. 2
    Iceberg Table SpecApache Iceberg
  3. 3
    Open Data Contract Standard (ODCS)Bitol, Linux Foundation (GitHub)
  4. 4
FAQ

Common questions

Why an open table format for manufacturing data?

Plants and teams use different engines and tools. An open table format such as Apache Iceberg lets them read and write the same tables with consistent snapshots and schema evolution, without locking the data into one vendor's engine.

What does a data contract add?

A contract states what a producer promises: schema, semantics, freshness and quality checks, plus an owner. It turns silent breaking changes into failed checks at the boundary, where the producing team can fix them.

Do plants need to replace their MES or quality systems?

No. The lakehouse reads from existing systems through change data capture or extracts. The contract sits on the interface, not inside each plant's applications.

Keep reading

Related

Open to advisory, fractional CTO & select builds

Let's talk about what you're building.

The fastest route is a free 30-minute call. Prefer to write? Send a message and I'll reply personally within two business days.

Start a conversation

How would you like to reach me?

Book a 30-min callFastest. Pick any open slot on my calendar.→ Write in GmailOpens a pre-filled draft in your browser.→ Use my email appOutlook, Apple Mail or your default client.→

I reply personally within two business days. Time zones from the Americas and Europe to the Middle East and Asia-Pacific.