A dataset contains a country column. Most records say CHINA. Six say
CHINO. Nobody typed CHINO on purpose — it arrived through a keying error, a bad import
mapping, or a supplier's export that was never validated. Six records out of fifty-three. It looks trivial.
It is not.
An illustration of the four steps: look at the impact, get consent, merge the wrong item into the right one, and keep the audit record. Press Replay to watch it again.
Cleansing is deliberately a two-step consent flow with a permanent record. Nothing is modified until the impact has been shown and accepted.
Select the offending value to request a cleanup.
Sales into China report 47 records instead of 53. The figure is plausible, internally consistent, and
understated by 11%. Nothing raises an error, because nothing is malformed —
CHINO is a perfectly valid string.
A user filtering on CHINA gets 47 records and has no indication that six more
exist. The six are not flagged; they are simply not there.
This is the consequence most often discovered last. A record carrying CHINO cannot
link to one carrying CHINA. The six records do not merely report separately — they
fall out of the join entirely. Dirty values do not just distort a merge, they defeat it.
In a relational database the value CHINO exists once per row that
mentions it. Six rows hold six independent copies of the string, and correcting them means rewriting each
one.
In AtomicDB a value is stored once per concept. The six records do not each hold the text
CHINO; they hold associations to the single item that is
CHINO. Correcting the data is therefore one item being merged into another — and every association
follows.
WHERE clause to get wrong, no risk of matching more rows than intended,
and no possibility of correcting the value in one table but not another — because there is only one place
the value lives.| Step | Action |
|---|---|
| Find the bad value | It appears in the concept's value list beside the correct one |
| Assess the damage | Request the cleanup; read the impact report |
| Choose the sources | Tick the datasets to correct — a value may be wrong in several |
| Correct it | Enter the correct spelling and confirm |
| Verify | The value list now shows one entry; the record count has moved |
| Explain it later | The history entry records the change and its operator |
No SQL is written. No migration is scheduled. No downstream job is triggered. The person who knows that CHINO should be CHINA is the person who fixes it, at the moment they notice.
Here it is a three-step, fully recorded transaction.
Before anything changes you are shown every system the value appears in, which column it sits in, how many records are affected, and example records to spot-check. You then tick which systems to correct.
nothing is implicit · a preview never writesEvery affected record is rewritten, the links pointing at the old value are repointed, and the two spellings become one — across every system you ticked, in one action.
if any record fails, the values are deliberately NOT mergedA correction writes a NEW record and retires the old one rather than overwriting it. The tamper-evident ledger keeps the original, with who changed it and when.
auditable · attributable · reversibleIn a conventional stack, correcting the source is the beginning of the work. The warehouse copy must be reloaded, dependent transformations re-run, extracts regenerated, dashboard caches invalidated, and any downstream mart rebuilt. Until each of those completes, different parts of the organisation report different numbers — and the correction itself becomes a small project.
In AtomicDB retrieval reads live state. There is no materialised copy to refresh, so the corrected value is what every reader sees at the next read: the source model, every merged model drawing on it, Ask's answers, and ATLAS's graph.
One real-world entity represented by several distinct items. Each is the same operation: two items that should be one, made one, with the records following automatically.
| Kind | Example | Correction |
|---|---|---|
| Typographical | CHINO → CHINA | merge into the correct item |
| Synonym / abbreviation | USA · U.S.A. · United States | merge all into one |
| Legacy naming | ACME Corp → Acme Industries | merge forward |
| Inconsistent capitalisation | Chicago vs CHICAGO | resolved by the store's case handling |
| Stray whitespace | "CHINA " with a trailing space | merge into the trimmed item |
The cleansing behaviour described here is the engine's documented two-step consent flow; CHINO → CHINA is the canonical example carried in the engine's own interface specification.