No app calls another app’s API for data. The database is the contract. It sounds conservative. It is the reason the platform grew from about 10 products to 35+ without integration work eating the project.
The arithmetic of a mesh
If every app can talk to every other app, the number of possible connections grows as n × (n − 1). With one shared contract it grows as n. The gap is small at five apps and absurd at thirty.
What 87 tables are made of
DDS v3 shipped as one 1,571-line SQL migration: 87 tables and 73 enum types.
Decisions, written down and locked
Nine structural decisions were recorded before the first table was created, so nobody had to rediscover them under pressure. Among them:
A schema that describes itself
A schema-discovery call returns every table with its columns, types, foreign keys, constraints and human-written descriptions as JSON. Every downstream app and every AI code generator reads that one document, so generated integration code never guesses a column name.
When sources disagree
A CRM, a meeting transcript and an agent can all claim a different value for the same field. A system-of-record priority model resolves those conflicts deterministically, field by field, so the answer doesn’t depend on which write arrived last.
A shared schema is slower to design and faster to live with. That trade is almost always worth it.
Saad Al-Tamari