The schema-first vs. contract-first debate has consumed countless hours of engineering time. Schema-first advocates argue for defining data structures up front. Contract-first teams insist on API specifications first, with schemas derived from usage.
We think they’re both solving the wrong problem.
The Real Problem
Both approaches assume you control the entire pipeline. But modern data systems don’t work that way. You’re consuming from third-party APIs. You’re publishing to message queues that multiple teams read from. You’re working with legacy systems that have their own ideas about data shape.
The question isn’t “schema first or contract first?” It’s “how do we make data shape changes visible and survivable across systems we don’t control?”
Enter c28n
c28n doesn’t pick a side. It sits between your systems and theirs. It validates incoming data, yes. But it also tracks drift. It shows you when upstream schemas change. It lets you define transformations that coerce data into the shape you need.
Most importantly, it records everything. Every mismatch. Every coercion. Every transformation. So when something breaks at 2am, you have a complete audit trail.
The Payoff
We’ve been running c28n in production for six months. In that time, we’ve caught 14 upstream schema changes before they caused incidents. We’ve debugged data issues in minutes that used to take days. We’ve slept through the night.
Schema-first, contract-first — it doesn’t matter. What matters is having a system that can handle the messiness of real-world data pipelines. That’s c28n.