PR agent for data teams · protects production ML models
Know what a data change breaks, before it ships.
The moment you open a pull request, Pathfinder reads DataHub's lineage, traces every downstream table, dashboard, and production ML model, and tells you what breaks, who to warn, and how to fix it. It posts the answer as a comment, right where you already work.
Apache-2.0 · built on DataHub's open GraphQL + MCP lineage · 26 passing tests · verdicts are deterministic
The 3am problem
One rename. A silent break three systems away.
Data flows from raw tables, through transformations, into the dashboards people read and the ML models that make live decisions. Change one column and something downstream breaks, but the person making the change can't see that far. They find out in production, at 3am. Tools like dbt docs and Recce show impact inside the dbt project; they can't see the Looker dashboard or the production model that reads the column you're about to rename.
Cross-stack lineage
dbt tools stop at the project edge. Pathfinder walks past it.
One searchAcrossLineage call on DataHub returns the whole blast radius, tables, dashboards, ML features, and the models in production.
changeorders.customer_id
reads it directly
tableanalytics.daily_orders
only DataHub sees past this line
dashboardExec Revenue (Looker)
ml featurecustomer_value
ml modelchurn_model · production
The output
It comments on the pull request. In plain language.
No new dashboard, no new habit. Pathfinder writes the verdict where engineers already are, and it's the same comment on a real PR, generated from a live DataHub.
pathfinder commented on #1 · rename orders.customer_id → cust_idbot
Pathfinder, BREAKING
This PR affects 5 downstream assets across your stack, including 2 in production.
orders, renamed customer_id → cust_id
Sev
Downstream asset
Type
Owner
Why
break
analytics.daily_ordersprod
dataset
@dana
reads customer_id directly; the reference fails to resolve
break
churn_modelprod
ml model
@maria
consumes it as a feature; the model breaks at serve time
break
customer_value
ml feature
—
feeds the model; renaming breaks it upstream
break
Exec Revenue
dashboard
@finance-team
binds to customer_id by name; the tile goes blank
partial
analytics.ltv_calcprod
dataset
@dana
2 hops down; an intermediate model may shield it, verify
Suggested fix, compatibility alias
-- keep customer_id available while consumers migrate to cust_id
select
*,
cust_id as customer_id -- deprecated alias
from {{ ref('orders') }}