Data foundation
Client Identity & Data Quality Layer
A reusable client directory that resolves inconsistent identities and gives downstream reporting a dependable foundation.
How it resolves
Every system spells the client differently
Every system writes the client down in its own dialect. The layer takes each line as it arrives, applies the same ladder of checks, and either lands it on an existing record or stops and asks a person.
Pick a line as it arrives
What the layer checks
- 01Source identifier
Tax ID, IBAN or the system’s own key, matched exactly against what the record already holds.
- 02Normalised name
Case, punctuation, spacing and legal form are removed, then the remaining string is compared.
- 03Known alias
Every spelling ever accepted stays on the record, so the same line matches instantly the next time.
- 04Human review
Anything under the threshold stops here. Nothing is guessed, and the decision becomes a new alias.
The tax ID is already on the record, so the spelling never has to be argued about.
Case, spacing, quotes and the legal form are stripped before two names are ever compared.
The statement carries no identifier, but this exact string was accepted once before and kept.
Close to an existing name, but the identifier had never been seen. It waited for a person instead of guessing.
Same name, different legal entity. A person decided they bill separately — so they stay separate, linked as one group.
What comes out
- Legal name
- Meridian Foods LLC
- Tax ID
- 35217049
- Sources
- 3 systems
- Owner
- Finance
- ТОВ «Меридіан Фудс»
- меридіан фудс
- MERIDIAN FOODS LLC
- Meridian Foods
- Legal name
- Northstar Logistics LLC
- Tax ID
- 41220397 — added on review
- Sources
- 2 systems
- Owner
- Finance
- Northstar Logistic
- ТОВ «Норстар Логістикс»
- Northstar Logistics
- Group
- Ember Works Group
- Entities
- 2, billed separately
- Tax IDs
- 44907712 · 44907889
- Owner
- Finance
- Ember Works
- Ember Works Group
- ТОВ «Ембер Воркс»
Why it sits underneath
Speed, automation and AI are multipliers
Applied to data nobody trusts, they only return the wrong answer faster. Every one of them is standing on the same thing, and it is never the tooling.
Three versions of the same number.
Nothing above stops. The report still renders, the invoice still goes out, the assistant still answers in full sentences — each of them about a different number.
The business running on it
A price agreed, an invoice sent, a forecast signed off, a headcount planned. Each one is a number somebody trusted enough to act on.
AI & assistants
Only ever as right as the rows they read. On duplicates they do not hesitate — they answer wrongly, fluently, and in full sentences.
Automation
The invoice, the report and the reminder all have to reach the same client. One mismatch and they quietly stop doing so.
Reporting & decisions
One client should be one line. Three lines is not a formatting problem, it is a pricing decision made on the wrong number.
Data you can stand on
One record per thing, every spelling mapped onto it, every exception owned by a named person. Nothing above this can be better than this.
What one record gives back
- Maintains itselfEvery accepted decision is written back as an alias, so the same spelling is never reviewed twice.
- Correctable in minutesA wrong match is one click to undo, with the history kept — not a migration.
- Reused, not rebuiltReporting, billing and automation read the same directory, not three private lists.
What it changed
The same client, with and without the layer
The source systems do not change. What changes is whether they are all talking about the same client — and whether anyone can prove it.
| What changes | Without the layerEvery flow resolves clients on its own | With the layerOne directory, reused everywhere |
|---|---|---|
| Who the client is | Without the layerEach report rebuilds its own list of client names, and no two lists agree | With the layerOne canonical record with one ID, read by every flow that needs it |
| A client renames or re-registers | Without the layerSilently becomes a second client, and the history splits in two | With the layerBecomes one more alias on the record the history already sits on |
| Joining two systems | Without the layerMatched on name — whatever fails to match is quietly dropped | With the layerMatched on identifiers, and every miss is queued rather than lost |
| A wrong match | Without the layerFound months later, inside a number nobody can explain | With the layerStops in review before it ever reaches a report, and is undone in one click |
| Adding a new source | Without the layerAnother mapping table, maintained by whoever happened to build it | With the layerThe source registers its own identifiers against records that already exist |
| Automation and AI on top | Without the layerConfident answers assembled from duplicates, with no way to notice | With the layerAnswers that trace back to a row with an owner and a decision behind it |