Product
Product7 min readBy The Data Workers Team

Inside the Data Change Review Agent

Code Review Was Only Ever Half a Review.

The PR looked fine and the data was broken for weeks. Meet the agent that reviews what a change did to the rows - before it can merge.

Meet our Data Change Review Agent - 6 stations along one path: a change arrives, diffs the impact, validates output, second opinion, blocks the bad, hands back fixes

The PR looked fine. The data was broken.

There's a confession that recurs on r/dataengineering: a dbt model change passed review, got approved, and broke the prod numbers - a join fan-out that quietly doubled revenue for weeks, discovered only when someone noticed downstream. The reviewers weren't careless. They read the SQL, and the SQL looked fine. Code review answers does this compile and read well? - it was never built to answer the only question that decides whether a data change is safe: what did it do to the data?

So teams fall back on either green CI - which only catches what someone wrote a test for - or a manual data-diff so laborious it lands on one senior engineer who becomes the bottleneck, and usually gets skipped. The distribution shift, the filter that drops 10% of rows, the "harmless refactor" that changes outputs: none of them show up in the diff a human reads.

Where a data-PR review actually goes: figure out blast radius 25%, ad-hoc count & spot checks 20%, eyeball distributions 20%, claim vs impact 15%, a trusted verdict 20% - the diffing and judgment eat the review, so teams skip it.
FIG.01 · WHERE THE REVIEW GOES - Reading the SQL is easy; diffing the data and judging impact is the work - so it gets skipped.

What our Data Change Review Agent actually does

The Data Change Review Agent is the missing half of code review: it runs the proposed change against your live data in both environments and renders a risk verdict before the change can merge.

It maps the blast radius - every downstream table, dashboard, and model a change touches - then diffs the data the way a careful engineer would by hand: a schema diff that grades each column change breaking or harmless, a cheap row-count pass that catches the fan-out instantly, a profile diff on nulls and distributions, and a value-level diff that joins on the primary key to show exactly which rows changed. It's cost-aware about it: it starts with free metadata, spends one cheap query on counts, and only pays for expensive value-level diffs where the evidence says it matters - so thorough review stops being too laborious to actually do. Every change comes back with a clear LOW, MEDIUM, or HIGH verdict. And a dangerous finding doesn't dead-end in a scary comment: it routes the fix to the right teammate - schema migration, incident diagnosis, governance sign-off.

The shape of the win is when you find out. The regression that used to surface in a dashboard days after merge gets caught at the pull request - a grounded verdict on the data impact while the change is still reviewable. It works on your warehouse, with or without dbt.

A risky change reviewed two ways: approving the SQL by reading lets a regression ship and surface in a dashboard days later; diffing the data first renders a verdict before it can merge.
FIG.02 · WHEN YOU FIND OUT - From a regression discovered days after merge to a grounded verdict before it ships.

Here's the reframe: a data change isn't a code diff to approve - it's a data outcome to verify. Reading the SQL was never the same as knowing what it did to the rows. And the review doesn't dead-end: where every other tool stops at showing a human the diff, this one hands the HIGH-risk finding into a fix - the schema agent for the migration, the incident agent for the diagnosis, the governance agent for sign-off.

A few of the agent's capabilities

The Data Change Review Agent ships with a deep toolkit. A sampling of what it can do:

CapabilityWhat it does
Pre-merge data reviewReviews a proposed change end-to-end and returns a LOW/MEDIUM/HIGH verdict before it can merge.
Impact / blast-radius diffMaps every downstream table, dashboard, and model a change touches, so nothing breaks by surprise.
Schema diffFlags added, removed, renamed, and type-changed columns and grades whether each is breaking.
Row-count diffA cheap first pass that catches fan-outs and dropped rows - the doubled-revenue join - instantly.
Profile diffCompares null rates, distinct counts, uniqueness, and min/max/avg per column across both environments.
Value-level diffJoins on the primary key and reports exactly which rows and columns changed, were added, or disappeared.
Distribution diffTop-category and histogram comparisons to see how a column's shape shifted, not just that it did.
Cost-aware escalationStarts free on metadata, spends cheap on counts, and only pays for expensive diffs where evidence warrants.
Intent-vs-impact checkCompares what the change claims to do against what the data actually did, and flags the mismatch.
Resolution hand-offRoutes HIGH-risk findings to the schema, incident, and governance agents instead of dead-ending in a comment.

…and these are just a few of many - the agent carries dozens more autonomy skills, with new ones added continuously.

How this is different from data-diff CI

The pre-merge data-review category is real and well-funded, and the incumbents are genuinely good at the half they own.

Recce is the closest pure-play - lineage, schema, row-count, profile, and value diffs with review checklists - but it's architecturally dbt-only and terminates at a human-readable summary. Datafold ships the strongest single mechanism in the space, a cross-database value-level diff used as an objective parity gate, but it's pointed mainly at migration cutover and stops once parity is proven. SQLMesh has the best deterministic foundation - column-level lineage and breaking-vs-non-breaking classification before execution - but it ends at the human plan-and-apply boundary inside one warehouse. dbt Cloud's advanced CI and Great Expectations in CI likewise surface impact or assert expectations, then post a comment or block the build for a human to act on.

The pattern across all of them is the same: they detect the breaking change and print it; a person still writes the fix. Our wedge is warehouse-generic review - not dbt-coupled - whose verdict hands off to remediation.

The takeaway

Code review stayed half a review because it answered "does this read well?" and never "what did this do to the data?" - so the regressions passed inspection and surfaced downstream weeks later. An agent that diffs the rows, distributions, and blast radius before a change can merge, and routes the dangerous ones into a fix, finally closes the other half. A change that looks fine in review and breaks the numbers in production was never actually reviewed.

See it on your next change

Point the agent at a pull request you'd normally approve on a read-through - and watch it diff the data impact, grade the risk, and catch the regression while the change is still a PR. Book a demo to see it on your stack.

Ready to go autonomous and agentic?

We’re building the future of data infrastructure right now. See how your enterprise data stack can operate fully agentic today.