Trusting Data
Trust is not a feeling about a dashboard — it is a set of questions a consumer can answer without asking you. It is built slowly, lost in one incident, and rebuilt at a much higher price.
Who needs this, what one row is, and why the obvious build breaks
Every lesson starts from the consumer, because designing from the source outward is this domain's characteristic mistake.
What has to be true about a number before someone should act on it, and how would they check without asking the person who built it?
Everyone who reads an output and cannot inspect the pipeline: the analyst quoting a figure in a deck, the controller filing it, the product manager ending an experiment on it, the model training on it, the agent answering a customer from it. Trust is the entire interface they have with this domain.
The unit is one published number, together with the artefacts that stand behind it — its lineage, its grain, its freshness, its tests, its definition and its owner. Trust does not attach to a platform or a team; it attaches to specific outputs, and it is lost one output at a time.
Build the pipeline carefully, get the numbers right, and trust follows. Competent work speaks for itself, and asking people to trust you is not something engineers should have to do.
The numbers are right and nobody can tell. A consumer with no way to check treats a correct dataset and a broken one identically, which means correctness that cannot be demonstrated buys nothing (Data Lineage).
- The numbers are right and nobody can tell. A consumer with no way to check treats a correct dataset and a broken one identically, which means correctness that cannot be demonstrated buys nothing (Data Lineage).
- One incident erases a year of quiet correctness. A figure quoted externally turns out to be wrong, and every number from the same platform is now suspect regardless of provenance (Reconciliation).
- Two teams present different values for the same metric in the same meeting. Both are defensible, neither is wrong, and the audience concludes the data cannot be relied on — which is a conclusion about the platform, not about either number (The Metrics Layer).
- A dataset is quietly corrected and republished. The consumer discovers the change themselves, weeks later, and now believes numbers change without notice — which is exactly what happened (What Backfills Break).
- Alerts fire often enough to be muted. The muting is rational and it removes the only mechanism that would have caught the next real incident (Quality Alerting).
What is actually happening
- Trust is an engineering property because it decomposes into answerable questions. Where did this come from; what does one row mean; is it complete; how fresh is it; can it be reproduced; what exactly does the metric mean; who owns it. A number that answers all seven is trustworthy in a way that has nothing to do with how anyone feels about it (Data Contracts).
- Each question is satisfied by an artefact rather than by a reassurance: lineage answers provenance, a declared grain answers meaning, reconciliation answers completeness, a freshness signal answers currency, immutable raw plus deterministic transformation answers reproducibility, a metrics definition answers semantics, a catalog entry answers ownership (Metadata: Technical, Operational and Business).
- Trust is asymmetric in time. It accrues from many uneventful months in which nothing was noticed, and it is destroyed by a single event that is noticed by the wrong person. There is no proportionality between how large the error was and how much trust it cost — what matters is who saw it and whether they found it themselves.
- The reason it is so much harder to rebuild is behavioural. A consumer who has been burned starts verifying independently: they build their own extract, their own definition, their own spreadsheet. That fork is rational, it is very hard to undo, and it permanently removes the platform's ability to be the single answer (Data Platform Anti-Patterns).
- Which means the operationally important quantity is not error rate but who discovers the error. The same bug found by a freshness alert and announced proactively costs almost nothing; found by a controller during a close, it costs a year (Data Incidents).
Seven questions, seven artefacts
Ask someone why they do not trust a number and you will get an answer about a feeling. Ask them what they would need in order to act on it and you get a list, and the list is always some subset of the seven below.
The middle column is the point. Each question is satisfied by an artefact that exists or does not — a lineage graph, a declared grain, a scheduled reconciliation, a freshness signal, an immutable raw layer, a reviewed definition, a catalog owner. None of them is satisfied by assurance, and a platform can be audited against the list in an afternoon.
The last column is what a consumer experiences when the artefact is missing. It is worth reading on its own, because those five words are what actually gets said in the meeting where the platform loses its reputation, and none of them sound like the engineering problem underneath.
| The question a consumer is really asking | What answers it | What its absence feels like |
|---|---|---|
| Where did this number come from? | A lineage graph from the metric back through every model to the source, generated by the transformation tool rather than maintained by hand (Data Lineage). | "Nobody can tell me what feeds this." The number becomes an opinion held by whoever built it. |
| What does one row of this mean? | A declared, tested grain — a uniqueness assertion on the key the table claims, documented next to the table (Grain: What Does One Row Represent?). | "I got a different total than you did." Two correct queries at different assumed grains, and no way to adjudicate. |
| Is everything here that should be? | A scheduled reconciliation against the source for closed periods, on count and on a summed measure, with a published history (Reconciliation). | "It looks a bit low." An unfalsifiable suspicion that is never resolved and never quite goes away. |
| How current is it? | A freshness signal per dataset, measured by an observer outside the pipeline, published against a stated SLO (Freshness Monitoring). | "Is this today's?" Every use of the number begins with a question the platform should have already answered. |
| If I run it again next year, will I get this? | Immutable raw data plus transformations that are pure functions of their inputs — no now(), no mutable dimension, no non-idempotent merge (Idempotent Data Pipelines). | "The number changed and nobody knows why." The most corrosive of the seven, because it undermines every past number too. |
| What exactly does this metric mean? | A definition in a reviewable metrics layer, in business terms, owned by someone who is accountable for it (The Metrics Layer). | "That is not how we define revenue." Two defensible figures in one meeting, and an audience that stops believing both. |
| Who is responsible if it is wrong? | A catalog entry naming an owning team, with an on-call path and a stated support expectation (Data Ownership). | "I raised it and nothing happened." The dataset is still there, still wrong, and now known to be unowned. |
How trust is actually lost
Trust is rarely lost through a large error. It is lost through a small one that the wrong person found first, at the wrong moment, with no warning — and in almost every case the technical fault was recoverable and the trust damage was not.
The pattern in the table below repeats: something changes, nobody is told, a consumer discovers it while doing something that mattered to them, and the resolution is a technical fix delivered without a structural change. The consumer is left with a corrected number and no reason to believe the next one is different.
Notice how little of the response column is about pipelines. Most of it is communication — announcing before discovery, publishing evidence, saying what structurally changed. That is not a soft substitute for engineering; it is the part of the engineering that faces the consumer, and it is the part that is routinely skipped (Data Incidents).
| Trigger | Symptom | Cause | Response |
|---|---|---|---|
| A logic fix is backfilled across six months of history, and the table is republished. | A controller notices that a figure they filed externally last quarter no longer matches the warehouse. | The revision policy was never stated, so the platform behaved as though closed periods were mutable — which, to finance, is the same as saying no number is ever final (What Backfills Break). | State the revision policy per dataset. Announce every restatement, with the affected range and the size of the change, before anyone can discover it (Validating a Backfill Before You Publish). |
| Two teams present the same metric with different values in one meeting. | The audience concludes that the data cannot be relied on, and both figures are dropped from the decision. | The definition lived in two SQL files rather than in one reviewable place, and both implementations were defensible (Two Dashboards, Two Numbers). | Move definitions into a metrics layer with an owner and a review path, and treat a duplicate definition as a defect rather than as a preference (The Metrics Layer). |
| A quality alert fires most weeks for a benign reason and is eventually muted. | A real incident runs for eleven days. The alert fired on day one, into a channel nobody reads. | The check was tuned for sensitivity rather than for action, so the rational response was to stop looking (Quality Alerting). | Cut the alert set until every alert is acted on, and move the rest to a dashboard. An unactioned alert is a check that everyone believes exists and nobody runs (The Data Quality Dashboard). |
| A consumer asks where a number comes from and the answer takes three days. | They build their own extract from the source. Within a quarter their department reports from it. | Provenance was not published, so the fastest path to confidence was to rebuild rather than to verify (Data Lineage). | Generate lineage from the transformation tool and expose it to consumers directly. The cost of not answering this question is a permanent fork in the definitions (The Data Catalog). |
| An incident is fixed quickly, and the follow-up says only that it has been resolved. | The same consumer treats the next surprising number as a probable defect, and verifies independently before using it. | Nothing structural was communicated, so there was no reason to expect a different outcome next time. Speed of fix is not evidence of change. | Say what was wrong, who was affected, what the corrected values are, and specifically what changed so it cannot recur. The fourth item is the one that rebuilds anything (Debugging a Data Incident). |
Rebuilding: evidence, not assurance
The asymmetry is the practical fact to internalise. Trust accrues from long stretches in which nothing was noticed, and it is spent in single events. Nothing you can do makes the accrual faster; quite a lot makes the spending slower.
Rebuilding is harder than building because the consumer has changed behaviour. They now verify, which means they have a second source, which means every future disagreement is between two systems rather than between a system and a hunch. Getting them to retire that second source requires the governed dataset to be not merely correct but visibly correct for longer than the fork took to build (Data Platform Anti-Patterns).
What works is publishing evidence continuously rather than defending correctness episodically. A dataset page that a sceptical consumer can open and read for themselves — freshness against SLO, last reconciliation, test state, incident history, owner, grain, definition — moves the conversation from "do I believe you" to "let me look", and that is the whole transition.
The single highest-leverage habit costs nothing: tell them before they find it. Every restatement, every definition change, every incident, announced to the named consumers of that dataset, with the size of the change. Being informed is routine. Discovering is what costs a year.
Respond to each challenge individually. Explain why the number is right, show the query, point out that the pipeline ran successfully, and ask the consumer to trust the process.
Maintain a dataset page like the one above, updated automatically, that a sceptical consumer can read without asking anyone — including the incident history and the known gaps. Announce every restatement before it can be discovered.
A defence is a claim made by the interested party and can only be evaluated by trusting them, which is precisely what is in question. Published evidence is checkable by the consumer directly, it includes the failures, and including the failures is what makes the successes credible. The known-gaps section does more work than any other line, because a platform that volunteers its limits is one whose silence elsewhere means something.
dataset: revenue_daily
owner: data-platform · #data-platform · business owner: finance-ops
grain: one row per (country, order_date) [asserted: unique, not null]
definition: net revenue = gross - refunds - chargebacks, order currency
converted at the rate on order_date [metrics layer: rev.net_v3]
freshness: SLO 06:00 local · met 98 of last 100 runs · now 24 min behind
completeness: reconciled vs source nightly for closed periods
last run: 0 rows / 0 minor units divergence (history: 90d chart)
tests: 14 assertions, all passing last failure: 41 days ago
lineage: source.orders -> stg_orders -> fct_orders -> revenue_daily
generated on every run · 12 known downstream consumers
revisions: closed periods are NEVER restated without an announcement
last restatement: 2026-02-11, Jan 1-31, +0.4%, announced 2026-02-10
incidents: 3 in the last 12 months · median time-to-detection 40 min
2 found by signal, 1 found by a consumer <- the one that cost
KNOWN GAPS: marketplace orders are excluded before 2025-06-01
refunds settled after 90 days are not reflectedHow to build it
Most important first.
- Publish the evidence, not the assurance. A dataset page showing current freshness against its SLO, the last reconciliation result, the test suite's pass state and the incident history does more for trust than any amount of stated confidence (The Data Quality Dashboard).
- Make the seven questions answerable without a human in the loop. If the fastest way to learn what one row of a table means is to ask its author, the dataset is not trustworthy yet regardless of how correct it is (Dataset Documentation).
- Announce every restatement before the consumer finds it, including the small ones. Being told a number moved is a routine event; discovering it is a trust event (Rolling Back Data).
- Reconcile against the source on a schedule and publish the result whether or not it diverged. A green reconciliation nobody sees provides no trust; the same check with a visible history provides a lot (Reconciliation).
- Keep the alert set small enough that every alert is acted on. An alert that is routinely ignored is worse than no alert, because it converts an absent check into a check everyone believes exists (Quality Alerting).
- Centralise definitions where consumers can read and review them, so that two teams presenting the same metric are presenting the same computation (The Metrics Layer).
What this actually promises
Naming the guarantee you do not have is worth more than naming the one you do — everything downstream inherits the weakest promise in the chain.
- None of this guarantees the numbers are right. It guarantees they are checkable, which is the strongest property actually available and the one consumers are really asking for.
- A published freshness signal guarantees currency and says nothing about correctness. A green test suite guarantees the assertions somebody wrote hold. Neither should be presented as more than it is, and presenting them as more is itself a trust risk (Data Tests).
- Reproducibility is guaranteed only if raw is retained and transformations are pure. A transformation that reads
now()or a mutable dimension cannot reproduce last month's number, and any claim that it can is false (Idempotent Data Pipelines). - Nothing guarantees a consumer will look at the evidence. Publishing it makes trust possible; it does not make it automatic, and the first time it is used is usually during an incident.
Can I trust it?
A green pipeline is evidence that code ran. These four fields are the evidence that the data is right.
- The check that measures trust directly is the source of incident discovery: what fraction of data incidents in the last quarter were found by a signal, and what fraction by a consumer. A platform where consumers find most incidents has no trust to spend (Data Observability).
- Pair it with reconciliation divergence as a published time series, because it is the one artefact that speaks to completeness end to end and that a sceptical consumer can read for themselves (Reconciliation).
- Both miss the consumers who have already forked. Someone maintaining a private spreadsheet generates no incidents, reads no dashboard, and is invisible to every signal you have (Data Discovery).
- A stale number and a wrong number are indistinguishable to a consumer, and both are experienced as untrustworthy. This is why freshness is a trust signal rather than a performance one (Freshness Monitoring).
- The number that determines how much an incident costs is time to detection: how long the data was wrong before anyone knew. It is the one metric that directly tracks trust, and almost nobody records it (Data Incidents).
- Freshness must be published as an achieved distribution rather than a promise. "Usually hourly" tells a consumer nothing about the day they need it; "hourly, met 99 of the last 100 runs, currently 20 minutes behind" tells them everything (The Freshness SLO).
- Definitions change, and how the change is handled is the whole trust question. A definition that changes with an announcement, a version and a restatement of the affected history is normal engineering; the same change made silently is the single most efficient way to lose a finance team (Semantic Changes).
- As a platform grows, trust stops being transferable by reputation and has to be carried by artefacts. Ten datasets and three consumers can run on personal credibility; five hundred and eighty cannot (The Data Catalog).
- Trust in a dataset does not survive a change of owner unless the artefacts do. An owner leaving is a trust event, and the mitigation is that nothing important was only in their head (Data Ownership).
- Recovering a number is a re-run. Recovering trust is a sequence: say what was wrong, say who was affected, say what the corrected values are, say what changed so it cannot recur, and then be visibly correct for a long time (Debugging a Data Incident).
- Skipping the fourth step is the usual failure. A consumer who is told "it is fixed" without being told what structurally changed has been given no reason to expect a different outcome, and will keep their private extract.
- The one recovery that never works is arguing that the number was defensible. It may well have been; the consumer's experience was that they were surprised, and the surprise is what has to be addressed.
What can go wrong
- Correct numbers that cannot be verified, so correctness buys nothing.
- A trust dashboard that reports on the pipeline rather than the data, giving consumers a green light that means "the code ran" (The Pipeline Succeeded. The Data Is Wrong.).
- Alert fatigue, which removes the checks by making them ignorable rather than by deleting them (Quality Alerting).
- Silent restatements, which teach consumers that numbers move without notice.
- A shadow spreadsheet that becomes the de facto source for a whole department, invisible to every signal and impossible to reconcile (Data Engineering Anti-Patterns).
- Over-promising to restore confidence — committing to a freshness or a completeness the platform cannot hold — which converts one trust event into a recurring one (Pipeline SLOs).
- "The data is correct, so it is trustworthy." Correctness that cannot be demonstrated is indistinguishable from luck. Trust is about checkability (Data Lineage).
- "We need better tests." Usually the gap is not test coverage but the absence of provenance, definition and ownership — the questions consumers actually ask are rarely questions a test answers (Data Quality).
- "Trust is a soft problem." It decomposes into seven answerable questions, each with a concrete artefact and a concrete owner. What makes it feel soft is that the artefacts are usually missing (Data Contracts).
- "One bad number will not matter, it was small." Magnitude is close to irrelevant. What matters is whether the consumer found it themselves and whether they had been told it could happen.
- "If we fix it fast enough, nobody notices." Speed of fix matters far less than speed of *telling*. Being informed is a routine event; discovering is a trust event (Data Incidents).
- A trustworthy number is also an auditable one: who could see the inputs, who changed the definition, when the value was published and by which version of the code. Audit and trust need the same artefacts, which is one of the few places where a compliance requirement pays for something the consumers wanted anyway (Audit Logs for Privileged Actions).
- Restating a published figure has consequences beyond the platform where the figure was filed externally or used in a regulated process. The revision policy is therefore a governance decision, not only a modelling one (Data Retention).
Operating it
- Incident discovery source: signal versus consumer, as a ratio over time. The clearest single measure of whether the platform can see itself (Data Observability).
- Time to detection and time to communication per incident. The second is often longer than the first and matters more (Data Incidents).
- Reconciliation divergence per dataset, published as a visible history rather than as an alert that only fires on failure (Reconciliation).
- Catalog completeness: proportion of serving datasets with an owner, a declared grain, a freshness SLO and a documented definition. Trust is not possible above the datasets that lack these (The Data Catalog).
- Query concentration: how many consumers read the governed model versus their own extracts. A rising share of private extracts is trust leaving, measured before anyone says so (Data Discovery).
- At small scale trust runs on relationships: the consumer knows who built the table and asks them. This works well and does not survive the first person leaving.
- At 10x datasets, trust must be carried by published artefacts, because no one can hold the provenance of fifty datasets in their head and everyone will guess (Metadata: Technical, Operational and Business).
- At 100x consumers, trust becomes a platform property expressed through contracts and certification tiers — a small set of datasets that carry stated guarantees, and a large set that explicitly does not (Data Products).
- The artefacts that make trust possible — lineage capture, scheduled reconciliation, freshness monitoring, catalog metadata — cost continuous compute and continuous maintenance, and none of them produce a number anyone reports (What Actually Drives Data Platform Cost).
- They are therefore chronically under-funded until an incident, at which point they are funded urgently and built badly. The cheapest version is to build the smallest one of each early (The Data Quality Dashboard).
- The cost of lost trust does not appear in any platform budget. It appears as duplicated analysis, shadow pipelines, slower decisions and a data team that spends its time answering "is this right" instead of building (Cost Attribution).
- Publishing evidence exposes the platform's weaknesses to its consumers. A visible reconciliation history includes the times it diverged, and that is uncomfortable and is precisely why it works.
- Announcing every restatement, including small ones, generates noise and occasionally alarm. It is still cheaper than the alternative, and the volume drops as the platform improves.
- Certification tiers make guarantees legible and create a second class of datasets that consumers will use anyway. Being explicit about which datasets are not guaranteed is better than implying all of them are (Data Products).
Dataset review questions
This lesson uses the shared review exercise.
Where this applies
Almost nothing here is universal. These labels say what each claim is specific to, and where a different engine, format, warehouse or scale would differ.
- GENERALThe seven questions and the asymmetry between building and losing trust apply to any published data output, from a warehouse table to a weekly emailed spreadsheet. What changes with scale is whether the answers can live in a person's head or must be published as artefacts.
- ORG-SPECIFICHow much a single incident costs depends entirely on who saw it: a wrong number caught internally is a bug, and the same number quoted to a board or a regulator is a different event. Companies with external reporting obligations should weight the revision policy far more heavily than product-led ones.
- SIMPLIFIEDTrust is modelled here as a property of individual datasets, which is how it is lost. It is recovered more collectively than that — consumers generalise from one bad dataset to the platform — so the recovery advice is deliberately broader than the loss mechanism would suggest.
Where the depth lives
This domain teaches how data moves and how you know it arrived intact. It hands the rest off by name.
- — Distributed Systems owns why two copies of a value can legitimately disagree, which is the technical fact underneath most trust disputes — the consumer experiences it as a defect and it is frequently a guarantee nobody stated.
- — DevOps / Production Engineering owns incident communication as a practice: a defined first responder, a shared timeline, a review that must produce a structural change before it closes. This lesson is that practice applied to data, where the discovery source matters more than the mean time to repair.