Master Data Quality Agent | ZMDM
ZMDM on ZFlow Agent 3 of 5

Master Data Quality Agent

A continuous perception layer over your live master data. It watches every record and every change as they happen, raises duplicates, anomalies, completeness gaps, and drift with evidence and confidence scores, and hands the findings to the agent or human best suited to act on them. It never changes records on its own.

Most quality programs run dark between audits

The classical pattern is the quarterly data-quality report. A consultant runs a profile. A 40-page deck lands. Three rules get added to a queue. The queue grows. The next quarter, the same exercise repeats — on data that has moved months past the report.

The work the business actually wants is the opposite: tell me what's wrong, right now, as it's happening, in a form I can act on. Continuous, scoped, scored, routed to the right responder. That's the work the Quality Agent does.

What continuous perception looks like

  • Every new record gets a duplicate check before commit.
  • Every field change gets a plausibility check against the established distribution.
  • Every nightly sync gets a profile-and-flag pass for drift.
  • Every assessment-time question (from the Expert Agent) gets a scored answer with cited evidence.
  • Every validation request (from the Steward Agent during intake) gets answered in milliseconds against authoritative sources.

What the Quality Agent watches for

Eight categories of finding, each scored, each evidenced, each routed to the agent or human best placed to act on it.

Duplicates

Suspect-record clusters scored against a configurable threshold. Embedding-based similarity + deterministic rule overlay. Auto-merge above the high band, queue between, ignore below — per domain.

Completeness gaps

Required-but-empty attributes, sparse hierarchies, stale freshness windows, mandatory-when violations that the static schema cannot catch.

Value anomalies

Distribution-aware: a price 4× the category median is flagged even when it passes schema validation. The same field changed by bulk import vs. UI edit gets different scrutiny.

Hierarchy inconsistency

Orphans, cycles, parent-child mismatches, classification rules where 9 of 14 records agree and 5 are outliers — the kind of question the Steward Agent asks during a classification review.

Drift & trend

Patterns that change over time without anyone changing a rule — lead-time staleness creeping up, completeness dropping after a source-system migration, valuesets accumulating one-off entries.

Cross-attribute rules

"If HazmatClass is set then HazmatPermitNumber is required." "If Country = EU then TaxID validates against VIES." Configurable per domain, learned from data when stewards approve them.

Validation requests

Synchronous answers to "is this tax ID valid?", "is this DUNS number registered?", "does this address resolve?" — used heavily by the Steward Agent during intake.

Enrichment opportunities

Fields that could be filled from a trusted source — D&B for corporate hierarchy, tax-authority lookups for VAT, classification services for material codes. Raised as proposals; never applied without approval.

The substrate: MDQ Workbench and MDQ Dashboard

Unlike the Design and Architect agents, the Quality Agent is not a new product line. The substrate is already shipping. The agent is the orchestration layer on top of two existing ZFlow tools.

In Production Today

MDQ Workbench

Eighteen AI-backed tools for matching, profiling, enrichment, and rule generation. Stewards use it interactively today; the Quality Agent calls the same tools programmatically.

In Production Today

MDQ Dashboard

The scope-aware quality KPI watchtower. Live counts of suspect clusters, completeness percentages, anomaly volumes, and rule-violation rates per domain, per category, per source system.

What the agentic layer adds on top

  1. Always-on operation. The Workbench tools run continuously over change events, not just on a steward-initiated session.
  2. Inter-agent dispatch. Findings route to the right consumer — Steward Agent's queue for resolution, Expert Agent's assessment rollup for scoring, Architect Agent for workflow gating when a systemic gap appears.
  3. Chat-driven configuration. Match thresholds, plausibility ranges, and rule learning happen through the same conversational surface as the rest of the agent family.
MDQ Dashboard · Finished Goods Live · refreshed 14s ago · 10,000 SKUs in scope
Suspect duplicates
147
+12 today
Anomalies (24h)
23
+12 vs avg
Completeness
84%
+0.4 wk
Rule violations
68
−9 today
Recent findings — 5 most recent
EU price for PainAway XS set to €41.99 by bulk import — 4.2× category median.
Steward queueP1
87% match: SUP-00432SUP-04891 (ChemCorp Industries cluster).
Steward queueP1
4,100 SKUs missing SEO keyword sets — concentrated in analgesics, vitamins.
Expert aggP3
Procurement lead times: 3,200 SKUs not refreshed in > 6 months. Trend started 2024-Q2.
ArchitectP2
Tax-ID 47-8829103 validated for NutraSource Health LLC (Steward intake request).
StewardP3

The eighteen tools

Every Quality-Agent action is one of these tools. Stewards see them as named operations in the MDQ Workbench; the agent calls them through the same registry. Grouped by category.

Match 4 tools
match_records

Embedding-based similarity match across a candidate set, with optional deterministic-rule overlay.

cluster_suspects

Group probabilistic-match outputs into clusters above a per-domain confidence threshold.

propose_merge

Compute survivorship for a duplicate cluster and produce a merge proposal for steward approval.

unmerge_record

Reverse a merge using object-level lineage. Field-level unmerge is on the roadmap.

Profile 4 tools
profile_field

Distribution profile for an attribute: cardinality, top values, length stats, null rate, format distribution.

detect_anomaly

Score a value against the field's distribution; flag values beyond a configurable SD threshold.

profile_dataset

Population-level profile producing the inputs the Expert Agent rolls up into completeness and freshness scores.

check_completeness

Required-when rule evaluation across a population. Produces per-record completeness percentages.

Validate 4 tools
validate_taxid

Tax-ID validation against the appropriate authority (IRS EIN, EU VIES, country-specific).

validate_duns

DUNS validation against Dun & Bradstreet. Returns entity status, last review date, sanctions match.

validate_address

Postal address validation and normalization. Multi-region.

screen_sanctions

OFAC + global sanctions screening against the validated entity.

Enrich 3 tools
enrich_corporate

D&B corporate-hierarchy enrichment. Returns parent / ultimate-parent / subsidiary structure.

enrich_classification

UNSPSC / GS1 / GPC classification suggestions from product attributes.

enrich_address

Address enrichment: geocoding, time zone, delivery-zone metadata.

Learn · Gate · Explain 3 tools
propose_rule

Mine observed data for candidate quality rules — "if X then Y" patterns at > 95% support. Surfaces them for steward approval before they're enforced.

plausibility_check

Inline gate function used by the Architect Agent in workflows. Returns score; workflow uses score against threshold to pause for human review.

explain_finding

Produce a stewardable explanation of any flagged finding, including the data evidence and the rule that fired.

Embedding-based similarity, with the math in the open

The match tools use OpenAI's text-embedding-3-small (1,536-dimensional vectors), stored as BLOBs in your master-data store, with brute-force cosine similarity in the current implementation. That sounds primitive and it is — deliberately. It works comfortably up to about 50,000 vectors per scope, which is far past the working-set size of most domain populations.

Today

Brute-force cosine over BLOB-stored 1,536-d vectors. Comfortable up to ~50K vectors per scope. No new infrastructure required.

Forward-compatible

Swap to pgvector or OpenSearch when scale demands it. The Quality Agent's matching contract doesn't change when the index does. Configuration change, not agent rewrite.

Deterministic rules layer on top: exact tax-ID match jumps the score to a near-certain band; address-Levenshtein distance under 0.05 lifts the score; name-token Jaccard under a threshold subtracts. The composite score is what the steward sees, with the constituent signals all visible in the explanation.

The posture: raise, don't change

The Quality Agent never writes to records on its own.

It produces findings — scored, evidenced, recommended. Action is the Steward Agent's job (or a human steward's, when policy or confidence require it).

The discipline matters: it keeps the agent auditable, keeps the steward decision-loop in the workflow engine, and makes it safe to run the agent continuously without supervision. If the Quality Agent is wrong, no master data has moved.

Where the Steward Agent has marked an activity as agent-completable above a confidence threshold, the Steward Agent does the writing, citing the Quality Agent finding as its evidence. The two agents collaborate; they do not blur.

Cross-agent conversations

The Quality Agent earns its keep by feeding three other agents. Below are three real conversations, taken from the seed work-item data the Steward Agent UI ships with.

① Steward Agent asks Quality during a PDF intake
SA
Steward Agent Quality Agent
validate-requesttax ID 47-8829103 and DUNS 078234119 for NutraSource Health LLC.
QA
Quality Agent Steward Agent
validate-responsetax-ID matches IRS EIN validator for entity 'NutraSource Health LLC'. DUNS validated against D&B — entity active, last reviewed 2025-11-04, no sanctions matches. Confidence 98% that this is a real, distinct entity.
SA
Steward Agent Quality Agent
duplicate-checkname='NutraSource Health LLC', taxId='47-8829103'.
QA
Quality Agent Steward Agent
duplicate-responseno matches above 70% confidence. Closest match: 'NutraSource Inc' (SUP-02118) at 41% — different tax-ID, different state. Safe to create new.
② Quality finds a systemic gap, Steward asks Architect to gate the workflow
QA
Quality Agent Steward Agent
anomaly-flagpricing distribution anomaly on SKU-PAINAWAY-XS-50CT.RegionalPrice.EU. Value EUR 41.99 is 4.2 SD above the analgesics-category EU distribution. Field changed 5h ago by bulk import.
SA
Steward Agent Quality Agent
context-requestwas this the same bulk import that touched other SKUs? Are any others anomalous?
QA
Quality Agent Steward Agent
context-responsebulk import touched 1,847 SKUs. 12 of them now anomalous per the same rule.
SA
Steward Agent Architect Agent
policy-queryshould the BulkPriceImport workflow have an inline Quality Agent plausibility gate before commit? 12 of 1,847 are now anomalous.
AA
Architect Agent Steward Agent
policy-responsedrafting a PreFunction2 hook on the Apply activity that calls Quality Agent's plausibility_check. Would block commits where any row scores > 3 SD. Routing the workflow change to data-governance for approval.
③ Steward delegates a bulk fill, Quality runs the plausibility stream
SA
Steward Agent Quality Agent
validation-batch-requestI am about to generate SEO keyword sets for 312 SKUs. Please run plausibility on each generation in stream — flag any off-category, trademark-conflicting, or prohibited terms.
QA
Quality Agent Steward Agent
acknowledgestream open. I'll flag inline.
SA
Steward Agent Quality Agent
batch-complete312 of 312 generations submitted. Median confidence 93%.
QA
Quality Agent Steward Agent
batch-acknowledgeno flags raised. All 312 passed plausibility.

Configuration is a conversation

Match thresholds, plausibility ranges, completeness rules, and learned proposals all happen through the same chat surface as the rest of the agent team. You don't open a settings page. You say it.

  • "Loosen the duplicate threshold for the analgesics category to 75% — the brand-extension SKUs are noisy."
  • "Why did you flag SUP-04891 and SUP-00432 as duplicates?"
  • "Propose a rule based on the last 30 days of supplier intakes — what consistently shows up that I'm not asking for yet?"
  • "For EU customers, validate the tax ID synchronously at intake time — not after the workflow completes."

30 days, end to end

Point the Quality Agent at your live finished-goods data. Here's what the first month looks like.

Week 1
The Quality Agent turns on against your live finished-goods data. The MDQ Dashboard populates: 147 suspect duplicates, 23 24h anomalies, 84% completeness, 68 rule violations. None of those are new realities — they were already true. You just couldn't see them.
Week 2
The agent runs the first pass of propose_rule over a year of intake history. Twelve candidate rules surface: "If Country = EU then TaxID must validate against VIES" was already in your spec but never enforced. Three others are patterns you didn't realize were patterns. You approve nine of the twelve.
Week 3
The Steward Agent's queue starts filling from Quality findings. A bulk-price-import bug shows up as 12 anomalous rows across one batch — the Architect Agent gets pulled in to gate the workflow. The systemic fix lands by end of week.
Week 4
The Expert Agent starts running its weekly aggregate assessment. The Quality Agent's findings feed dimension scores directly — Supply Chain Readiness moves from 76% to 82% as the lead-time-refresh action lands. The dashboard, the work queue, and the assessment are now telling one continuous story instead of three disjoint ones.

What the Quality Agent doesn't do (yet)

Honest scope. One is a short config change, three are short roadmap items.

  • Sub-100ms synchronous match at full scale The brute-force cosine implementation is fast up to ~50K vectors. Sub-100ms responses past that need the pgvector / OpenSearch swap that's on the roadmap.
  • Field-level lineage and unmerge Object-level merge / unmerge is in place. Field-level unmerge (revert one attribute while keeping the rest of the merge) is on the roadmap, gated on the lineage store extension.
  • Streaming detection on Kafka events The agent runs over change events on the workflow engine today. A native Kafka-source detection pipeline (for organizations that put master-data change events on Kafka outside of the ZFlow workflow engine) is on the roadmap.
  • Automatic threshold tuning Thresholds are configured by conversation. The agent doesn't yet propose threshold changes based on observed false-positive / false-negative rates — that's a planned learning loop.

How it fits with the rest of ZMDM

The Quality Agent is the third of five — and the only one that speaks to every other agent in the team.

1
Design

Canonical model + lifecycle workflows

2
Architect

Workflow templates + integration wiring

3
Quality

Continuous perception + scored findings

4
Steward

Activity execution alongside human stewards

5
Expert

Grounded answers from live entities + lineage

  • It reads the canonical model from the Design Agent — knows which attributes are unique-key candidates, which valuesets exist, which fields are mandatory-when conditioned on other fields.
  • It is called by the Architect Agent's workflows at the right activity — duplicate-check at DataPreparation, plausibility gate before commit, completeness check before Approval.
  • It feeds the Steward Agent's queue — findings become work items. Confidence threshold determines whether the agent completes or a human reviews.
  • It feeds the Expert Agent's rollup — record-level signals (completeness, freshness, validation pass-rate, duplicate confidence) are the inputs the Expert Agent rolls up into consumer-domain dimension scores.
The Quality Agent is the agent that the other agents call. Its quality — its calibration, its tool surface, its responsiveness — is the quality of the whole team. None of the rest of ZMDM works well if the perception layer is wrong.

Start Your Success Story

Join the growing list of manufacturers who have transformed their master data management with ZMDM.