Inspiration
A “forget me” request looks simple until you open the warehouse. Customer identity is scattered across tables, aggregates, BI extracts, and ML features. Catalogs show assets; they rarely hand you an ordered remediation plan with SQL you can review, a human approval gate, and durable evidence the next engineer can inherit.
We were inspired by that gap: not another compliance chatbot, and not an autonomous production eraser—an engineering compile loop grounded in DataHub’s context graph. The pitch we kept returning to: compile the forget request; don’t guess it.
What it does
Forget-Me Flow is a DataHub-grounded technical remediation planner:
- Intake a subject (masked in the UI); match via server-side HMAC fingerprint (never returned to the client).
- Compile against DataHub lineage, owners, tags, and schema (≥3 downstream assets in the demo graph).
- Trust View — impact nodes, confidence, blockers from the context graph (not an LLM inventing deletes).
- Approve, then run allow-listed DuckDB SQL with
$subject_idbinds in a local sandbox only. - Write back (release demo) a public
plan.jsonURL + checksum onto the anchor via Rest.liinstitutionalMemory, verified with read-after-write. - Short-circuit on rematch so completed work is inherited on this deployment.
Honest DataHub claim: we use DataHub OSS / Core Platform — GMS GraphQL (reads) and Rest.li (writeback). There is no MCP Server, Agent Context Kit, Skills, or Analytics Agent in this repo.
This is not a legal determination tool, compliance certification product, or production delete engine.
How we built it
- UI: Next.js trust flow (intake → compile → trust → approve → execute → writeback).
- API: FastAPI case lifecycle, approval gate (execute without approve → HTTP 409), privacy redaction.
- Adapters:
fixturemode for offline/CI;gmsmode for live DataHub GMS GraphQL + Rest.li. - Planner / codegen: Deterministic Python planner + SQLGlot-validated DuckDB SQL.
- Sandbox: Local DuckDB with
DEMO_SANDBOX+ path confinement. - Private registry: SQLite HMAC fingerprints for match / short-circuit.
- Demo graph: Fiction-retail assets emitted into quickstart GMS (
make emit-datahub), with search-lag polling onmake seed.
Architecture diagrams: assets/System Context.png, assets/Component View.png, assets/Architecture.png.
Repo: https://github.com/nag-gude/forget-me-flow
Challenges we ran into
- Search-index lag after emit. Fresh quickstart GMS often returned <3 downstream assets for tens of seconds after ingest. We added poll/retry (~60s) in seed so demos and bootstrap don’t flake mid-take.
- Honest integration surface. Early scaffolding flirted with “MCP mode” naming. We standardized on a real GMS GraphQL + Rest.li client and documented that
mcpis only a legacy alias—so judges hear an accurate claim on camera. - Privacy vs. artifacts. Keeping raw subject IDs out of DataHub, commits, logs, and API fingerprint fields forced HMAC matching,
$subject_idbinds, and redacting exception handlers—easy to get wrong under time pressure. - Writeback URL shape. Institutional memory must point at a public
http(s)plan.json(notfile://), which pushed us to committed sample outputs underexamples/cases/.
Accomplishments that we're proud of
- End-to-end read + write against live DataHub GMS (GraphQL context + Rest.li writeback with read-after-write).
- A human-gated sandbox path that refuses execute without approve.
- Short-circuit inheritance—rematch returns the prior case instead of starting from zero.
- Committed, reviewable artifacts judges can open without running the stack (
examples/cases/case-release-demo-001/). - Clear docs: pitch, workflows, deployment, architecture, DataHub connectivity—and an under-3-minute demo video.
What we learned
- DataHub’s value for agentic workflows is the context graph + durable writeback, not wrapping the catalog in another chat UI.
- Search/indexing lag is a real demo risk; treat “just ingested” as eventually consistent.
- Trust boundaries (what an LLM may not decide) are a product feature, not just a footnote—especially for deletion-shaped work.
- Sample outputs in-repo are part of submission quality for judges who never clone.
What's next for Forget-Me Flow
- Tagging / classification conventions beyond the demo
forget-me-flow:type:*tags so real warehouses map cleanly. - Stronger multi-owner / missing-ownership routing and org-ready review workflows.
- Optional staging adapters beyond DuckDB sandbox (still never “autonomous prod erase”).
- Hosted demo URL +
RELEASE_PLAN_JSON_URLpointing at
https://raw.githubusercontent.com/nag-gude/forget-me-flow/main/examples/cases/case-release-demo-001/plan.json
Built With
- data-governance
- datahub
- docker
- duckdb
- fastapi
- gdpr
- graphql
- lineage
- metadata
- nextjs
- open-source
- privacy
- python
- remediation
- restli
- sqlglot
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.