Per-source quality scoring implemented
Why it matters
Per-contact quality flags (bounce, invalid email) are only useful if you can trace them back to the source that produced them. Without per-source quality scoring you have no way to quarantine a bad purchased list, deprioritize a scraper hitting stale pages, or negotiate data credits with a vendor whose records are 40% invalid. ISO 25010:2011 §4.2.7 (data quality) requires that data accuracy be measurable and traceable. Absence of source-level aggregation means data rot goes undetected until deliverability collapses.
Severity rationale
Medium because the gap is an operational blind spot rather than an immediate data breach, but it allows quality degradation to accumulate undetected across entire sources.
Remediation
Add a data_sources table with a quality_score column, then populate it via a periodic aggregation query that computes bounce and invalid-email rates per source.
CREATE TABLE data_sources (
id TEXT PRIMARY KEY,
source_type TEXT NOT NULL,
display_name TEXT,
quality_score NUMERIC(5,2), -- 0–100
last_scored_at TIMESTAMPTZ
);
-- Periodic update (run hourly or daily)
UPDATE data_sources ds
SET quality_score = (
SELECT 100.0 * COUNT(*) FILTER (WHERE c.email_valid AND NOT c.bounced)
/ NULLIF(COUNT(*), 0)
FROM contacts c
WHERE c.source_id = ds.id
AND c.acquired_at > NOW() - INTERVAL '30 days'
),
last_scored_at = NOW();
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Data Sourcing & Provenance Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · functional-suitability.functional-correctness — Data quality / functional suitability
Taxons
History
- 2026-04-18·v1.0.0·Initial import from data-sourcing-provenance·automated