Public Demo · Business Data Quality

Data Quality Agent

An LLM-ready data reliability agent that profiles business CSV exports, runs deterministic quality checks, and returns evidence-backed findings that can be attached to a data incident ticket.

146automated tests passing locally and in CI
1public fork tracked in the adoption baseline
10K × 80bounded CSV upload limit: rows × columns
4reproducible support-ticket issue categories
5recommended remediation actions from the business-impact artifact
0external feedback items tracked from public GitHub issues
16implemented LLM agent-readiness capabilities documented publicly
Guardrailsdeterministic report verification before incident export

Reproducible Business Case

The demo uses a support-ticket export with realistic data-quality failures. The deterministic report detects operational issues before they reach dashboards or downstream analytics.

Critical

Duplicate ticket ID

ticket_id contains one duplicate record, which can double-count support volume.

Medium

Missing routing fields

priority and team each have a 12.5% missing rate.

High

Negative amount

amount contains one negative value that should be separated from positive facts.

Medium

Extreme outlier

amount contains one value outside the expected IQR band.

Report Snapshot

This is the verified output from running the deterministic engine on examples/support_tickets.csv. The agent separates facts, likely causes, and remediation steps instead of returning a vague summary. A lightweight eval harness also verifies status accuracy, finding recall, evidence support, and fallback behavior. Each API report now returns a trace id for sanitized run review through /runs/{trace_id}, with optional SQLite persistence enabled through TRACE_DB_PATH. Reports include deterministic verification for evidence support, known field references, sensitive-value leakage, unsupported LLM evidence, action coverage, and score bounds. The support-ticket snapshot is also regenerated by a CI verifier and stored as verified JSON. A companion business-impact artifact quantifies 4 issue categories, 4 affected columns, and 5 recommended actions for the reproducible support-operations case. Public adoption metrics are tracked in adoption-metrics.json with a growth timeline in adoption-history.jsonl, and resume-ready claims are mapped to public proof in outcome-evidence.json plus a human-readable resume evidence page. External feedback is tracked from an honest zero baseline in feedback-log.md. A scheduled GitHub Actions workflow also checks public evidence health for the demo, release, business-impact artifact, outcome evidence, adoption metrics, and feedback metrics.

24 Quality Score · FAIL

Evidence-backed findings

  • Duplicate primary key: ticket_id contains 1 duplicate record.
  • Missing values: team and priority each have a 12.5% missing rate.
  • Negative value: amount contains 1 negative business value.
  • Outlier: amount has 1 value outside the IQR band; expected range is -60.18 to 194.29.

Business Rules

The report links generic checks to source-cited support-ticket rules. This gives the agent business context without sending private rows to a model or requiring paid embedding infrastructure.

R1

Unique ticket identity

ticket_id must identify exactly one support-ticket event.

R2

Required routing fields

team and priority are required before dashboard publication.

R3

No negative impact amounts

Refunds or credits must be modeled separately from positive customer-impact values.

R4

Review extreme amounts

Extreme amount values require review before publication.

Data Source Safety

Beyond CSV upload, the backend includes an optional read-only PostgreSQL adapter for real business tables. It is disabled by default and requires explicit environment configuration before use.

Read-only

Write operations rejected

INSERT, UPDATE, DELETE, DROP, and related statements are blocked.

Bounded

Row limits enforced

Queries must include LIMIT, with adapter row limits capped at 10,000.

Timed

Statement timeout

The adapter sets a local statement timeout before running table reads.

Tested

Mocked DB tests

CI validates adapter behavior without requiring live database credentials.

Docker

Seeded Postgres demo

docker compose up --build runs database-backed support-ticket report and agent routes locally.

Agent Shape

The default engine is deterministic. When an OpenAI-compatible key is configured, the LLM agent can choose a dataset-specific strategy, read structured tool results, re-plan across model calls, and must attach the source-of-truth quality report before finalizing.

01Load dataset contract from bounded CSV or read-only PostgreSQL data
02Select a quality strategy based on payment, customer, or generic table shape
03Profile columns, missingness, uniqueness, and samples
04Run schema, duplicate-key, freshness, domain, and outlier checks
05Return structured report, trace id, fallback state, and next steps

Run The Demo

Clone the repo, start FastAPI, and post the sample support-ticket CSV.

git clone https://github.com/sunnnn2005/data-quality-agent.git cd data-quality-agent python -m venv .venv source .venv/bin/activate pip install -r requirements.txt -r requirements-dev.txt uvicorn app.main:app --reload curl -X POST http://127.0.0.1:8000/business-data/quality-report \ -F "file=@examples/support_tickets.csv" \ -F "dataset_name=Support Tickets" \ -F "owner=support-ops" \ -F "primary_key=ticket_id" \ -F "expected_columns=ticket_id,team,priority,status,amount,created_at" curl -X POST http://127.0.0.1:8000/datasets/orders_daily/incident-report.md docker compose up --build curl -X POST http://127.0.0.1:8000/postgres/support-tickets/quality-report