One person. One history. Every business.
Every call, text, note and permission becomes one timestamped record with the evidence attached. Your AI agents read from it, so each business remembers its own customers warmly, and no business ever repeats what a customer told a different one.
Sarah Okafor is an illustration. The four counts are measured from the live store at build time | 2026-09-06 | reproduce with ledgerctl.py shipstate
Your customer does not know which CRM they are in.
They call the directory on Monday, the voice agent on Thursday, and the shop on Saturday. Three systems, three half records, and three different answers to the only question that matters before you dial: who is this, and what are we allowed to do with them.
Split memory
Identity lives in two places, so resolve and file disagree about who a number belongs to. The record you read is not the record you wrote.
Unprovable consent
You can see that a customer said yes. You cannot prove the row was not written afterwards, which is the only part a regulator cares about.
Leaky agents
An agent that knows everything will eventually say everything. Prompt wording is a request, not a boundary, and it fails silently.
Everything you know, in the order it happened.
One person, one history, and a stamp on every line saying which of your businesses captured it. Today that is 626 events across 5 brands, and 8 people who have dealt with more than one of them without either business learning about the other. See how the timeline works.
Illustration, stamped DEMO so nobody mistakes it for production data | the counts above it are real | brands in the live store: afterhai 421, toprated 165, aiexec 20, haygood 19, breakingchains 1
The ledger is not yet the only place customer facts land. The store it is replacing took 106 writes in the last seven days, mostly calls. One record per human is the design and it is true of everything the ledger holds; it is not yet true of everything we capture. The release gate covering this is one of the gates currently failing, and we would rather you read that here than discover it later.
Contacts were only the beginning.
Every surface reads the same record. Follow any of these into the detail, including the parts that are designed and not yet built, which say so on their own pages.
One customer identity
236 people, 422 phone numbers and addresses resolved onto them.
Everything, in order
626 events, each stamped with the business that captured it.
Read it, or read the point of it
604 call records across 25 agents. Nothing records audio.
Designed, not built
The commitments a customer made and the ones you made back. No code exists yet.
Designed, not built
Mail organised around the person rather than the thread. Hardest, and last.
Memory without everything
The field that will carry it exists in the schema. 0 rows populate it.
Trust should not depend on a prompt behaving itself.
The boundaries in this system are in the data and in the code paths, not in wording we hope a model respects. Each of these has its own page, its own measured state, and its own list of what is not done yet.
Store what actually happened
333 consent events, each carrying the wording the customer agreed to.
Who sees what, and why
Every fact stamped with the brand that captured it and the audience allowed to see it.
How the record holds
4 append only tables, 0 broken chain rows at build time.