Inspiration
Every data platform inherits the same mess: datasets with no owner, columns nobody documented, zombie tables kept alive "just in case", lineage pointing at upstreams that no longer exist. The chat agents everyone builds at an agent hackathon create new data. We wanted to build the opposite — an agent that cleans up the junk already living in your DataHub graph, and actually writes the fixes back instead of just reporting them.
What it does
GhostBuster scans your DataHub context graph and produces a concrete, LLM-written remediation plan:
- Scan — pull schemas, owners, lineage, glossary, tags, freshness and usage from DataHub.
- Diagnose — a fully deterministic rule engine flags 8 issue classes (missing owner, missing description, missing glossary, undocumented columns, orphan datasets, stale data, failing quality checks, broken lineage).
- Remediate — an LLM turns findings into a repair plan: add an owner, apply a glossary term, describe columns, deprecate, or fix lineage.
- Write back — the plan maps to DataHub mutations (corporateOwner, glossaryTerm, deprecation, field descriptions), closing the loop on the graph.
A healthy dataset passes with zero findings, so the agent never cries wolf.
How we built it
Python 3.10 standard library only, an OpenAI-compatible LLM layer (DeepSeek / any
GPT-compatible proxy), and a thin datahub_client.py adapter with two backends:
a bundled sample graph for zero-setup demos and a real DataHub backend over the GraphQL
API. We seeded a live DataHub instance with five tables, injected a broken-lineage
scenario (an upstream marked as removed), and watched GhostBuster detect it, write
the owner/documentation fixes back, and re-scan clean.
Challenges we faced
Lineage edges to removed "ghost" entities are invisible in the default GraphQL query —
we had to use includeGhostEntities: true to even see the break. DataHub's avro-based
SDK rejected our seeding lineage; we switched to the GraphQL updateLineage mutation.
Owner writes needed the right ownershipTypeUrn. Each of these became a fix that now
lives in the repo's real-backend code path.
Built With
- data-quality
- datahub
- datahub-graphql
- deepseek
- lineage
- llm
- metadata-governance
- openai
- python
Log in or sign up for Devpost to join the conversation.