Open source · Python
data-doctor
Diagnose a data-pipeline failure against a version-aware knowledge bank, and get the exact fix. It runs offline. It suggests, it never touches your systems.
A curated bank, not another guess
It is not a model that guesses at your stack trace. It reads an error or a log. It matches that against a bank of known failures. Then it shows the fix, with its source, the versions it applies to, and how sure it is. You apply the fix and say whether it worked. The bank gets better with every correction.
Match an error
Pipe in an error or point at a file. Get the ranked fixes, each with a cause, a source, and a confidence.
Scan a whole log
Split a noisy log into distinct failures and match each one, so one repeated crash collapses to one result.
Prove the fix
Reproduce the error in a sandbox, or run an allowlisted tool against your project, then confirm the fix runs clean.
Catch an upgrade
Read the versions your project pins and warn about a breaking change before the upgrade bites.
Grow with feedback
A worked fix raises an entry's confidence. A failed one lowers it. The bank learns from you.
Stays on your machine
A local DuckDB bank and an instant lexical match. No model and no network in the core path.
Recover a lost Iceberg snapshot
A table read fine at 09:30. Then routine maintenance ran, and the same read failed. A scheduled job had expired the Iceberg snapshot behind that read, so time travel could no longer reach it. Spark could not find it. DuckDB returned zero rows.
The recovery rebuilds the lost state by hand from the files that survived. The path has many traps, so a clean but wrong row count is easy to produce. Frontier models miss it for this reason. data-doctor matches the error to the fix, hands you the exact recipe, and ships a runnable example that proves it.
The reference answer is 1375 rows, from snapshot 1418591960033102530, read against schema 3.
# install the reader extra, then reproduce, diagnose, and verify pip install "data-doctor[iceberg-demo]" python3 examples/iceberg_asof/naive_read.py # the failure, exit 1 data-doctor seed && data-doctor add examples/entries/iceberg-asof-demo.yaml data-doctor verify iceberg-asof-expired-snapshot --allow-commands \ --project examples/iceberg_asof # ✓ reproduced the error; the fix runs clean
Install
The core install is small and offline. The extras are optional.
pip install data-doctor # not yet on PyPI; for now, from source: pip install -e . pip install -e ".[iceberg-demo]" # adds the Iceberg example readers data-doctor seed # load 152 known failures data-doctor diagnose err.txt # match an error and print the fix