A data engineer opens a PR that drops a column or replaces a view. The reviewer has no way to know, at review time, what that change actually breaks: which dashboards go blank, which ML models lose a feature, whether the column was PII, and who owns the things downstream. That knowledge lives in DataHub — but nobody cross-references it by hand on every PR.

Point it at a .sql change and it:

Parses the change (sqlglot) to find exactly which tables and columns are touched, and whether the operation is destructive (drop column, drop table, replace view, rename). Walks DataHub lineage downstream from each affected table (DataHubClient.lineage.get_lineage), up to N hops — collecting every dependent dataset, dashboard, chart, and ML model. Enriches the blast radius with each asset's owners and tags, flagging anything marked PII / sensitive / GDPR / confidential. Hands that structured impact graph to an AI agent (Claude) which returns a BLOCK / WARN / SAFE verdict, the specific breaking changes, sensitive-data exposure, the exact owners to notify per asset, and ordered migration steps — as a ready-to-paste PR comment. The agent reasons only from the metadata DataHub supplies. It never invents a downstream asset or an owner — every claim traces to a real edge in the graph. That's the point: DataHub is the ground truth, the agent is the judgment layer on top.

Exit code is 2 on BLOCK, so it drops straight into CI as a merge gate.

Autonomous agent handling a real data problem — change-impact review is a genuine, painful, recurring data-platform task. Metadata-aware by construction — the agent's entire context window is DataHub metadata; remove DataHub and it has nothing to reason about. Protects production ML — ML models are first-class in the blast radius; a dropped feature column surfaces as model risk.

Technologies used: DataHub Python SDK (DataHubClient), the Lineage API (get_lineage for downstream traversal), Metadata / entities (ownership + global tags reads), the DataHub REST emitter (to seed the demo warehouse), and self-hosted DataHub (the OSS Docker quickstart).

Built With

  • anthropic-claude
  • datahub
  • python
  • sqlglot
Share this project:

Updates