Skip to main content

Open-DQI Core (Data Quality Index)

PyPI version npm version Python Versions License: Apache 2.0 Live Web Demo PRs Welcome

Schema-agnostic, zero-config Data Quality Index (DQI) scoring engine for any tabular dataset. Evaluates CSV, Excel, Parquet, or pandas DataFrames across four weighted dimensions: Completeness, Validity, Uniqueness, and Outliers — producing an auditable composite score (0–100) and letter grade (A–F) in sub-seconds.


🌐 Live Interactive Playground

Test Open-DQI directly in your browser with zero installation:
👉 Launch Live Web Demo (https://futuxagriconsult.github.io/open-dqi-core/)

Features in-browser client-side Web Worker execution, one-click Starter Template CSV download, audit defect inspector with dual-position pagination, and Dark/Light mode.


⚡ Quick Start

1. Installation

# Python (PyPI)
pip install open-dqi-core

# JavaScript / TypeScript (npm)
npm install @futux/dqi

2. Python 30-Second Example (Zero Config)

No schema file required. Open-DQI automatically samples your data, infers column types (IDs, phone numbers, GPS coordinates, dates, enums, numeric bounds), and computes the index:

from dqi import DQIEngine

# Score any tabular CSV in one line
engine = DQIEngine()
report = engine.evaluate("my_dataset.csv")

print(f"Overall DQI: {report.overall:.2f}/100 (Grade: {report.grade})")
print(f"Completeness: {report.dimensions.completeness.score:.1f}%")
print(f"Validity:     {report.dimensions.validity.score:.1f}%")
print(f"Uniqueness:   {report.dimensions.uniqueness.score:.1f}%")
print(f"Outliers:     {report.dimensions.outliers.score:.1f}%")

# Generate standalone offline HTML dashboard & JSON audit
report.export_html("dqi_audit_report.html")
report.export_json("dqi_audit_report.json")

3. Command-Line Interface (CLI)

Run zero-Python audits directly from your terminal or CI/CD pipelines:

# Audit a dataset and generate HTML + JSON reports
dqi audit --input registry.csv --format both --output-dir ./audit_reports

# Infer and export a customizable YAML schema
dqi init --input registry.csv --output custom_schema.yaml

# Audit against a custom schema with custom dimension weights
dqi audit --input registry.csv --schema custom_schema.yaml

🎯 Why Open-DQI?

Data Quality Debt in Digital Public Infrastructure (DPI), government registries, agricultural enumerations, and financial inclusion pipelines accumulates silently. When farmer registries have 25% malformed phone numbers or national rosters contain 8% fuzzy duplicate records, algorithmic interventions and subsidy distributions fail.

Traditional data validation frameworks (such as Great Expectations or Soda) require heavy configuration, proprietary cloud connections, or dozens of YAML expectation suites.

Open-DQI is built with a different philosophy:

  • Zero-Config Auto-Inference: Works immediately on any CSV out of the box.
  • Universal Single Metric: Delivers an intuitive 0–100 score and letter grade (A–F) that program managers, data engineers, and field auditors can all understand without training.
  • Privacy-by-Design: Executes 100% locally or inside the user's browser. Zero telemetry, zero private data leakage.
  • High Performance: Audits 100,000 records in under 2.5 seconds on a standard laptop.

📊 The Four DQI Dimensions

Open-DQI evaluates data across four orthogonal dimensions using the formula:

$$\text{DQI} = w_c \cdot S_{\text{completeness}} + w_v \cdot S_{\text{validity}} + w_u \cdot S_{\text{uniqueness}} + w_o \cdot S_{\text{outliers}}$$

(Default weights: $w_c = 0.35$, $w_v = 0.35$, $w_u = 0.15$, $w_o = 0.15$)

Dimension Default Weight What It Detects
Completeness 35% Missing, null, empty string, whitespace-only, and sentinel placeholder values (N/A, NULL, none, -, ?).
Validity 35% Schema compliance, regex patterns, ISO-8601 dates, E.164 phone formats, GPS coordinate bounds (lat $\pm 90^\circ$, lon $\pm 180^\circ$), and allowed category enums.
Uniqueness 15% Exact duplicate records, primary key collisions, and phonetic/fuzzy duplicate entities (Jaro-Winkler + Levenshtein).
Outliers 15% Statistical anomalies in numeric fields using Interquartile Range ($1.5 \times \text{IQR}$) and Modified Z-Score methods.

📦 Pre-Built Sector Schemas

Open-DQI comes with pre-configured, production-tested schemas for key sectors:

  • dqi/schemas/agriculture_v1.yaml — Farmer registries, farm size (ha), GPS, crops, cooperative IDs.
  • dqi/schemas/civil_registry_v1.yaml — National ID, DOB, gender, blood group, NIN format.
  • dqi/schemas/social_protection_v1.yaml — Vulnerability indices, household head, payment tokens.
  • dqi/schemas/credit_scoring_v1.yaml — Loan amounts, repayment terms, debt-to-income ratios.
  • dqi/schemas/patient_registry_v1.yaml — Hospital MRNs, vitals, admission dates.
# Using a pre-built sector schema
from dqi import DQIEngine, Schema

schema = Schema.from_preset("agriculture_v1")
engine = DQIEngine(schema=schema)
report = engine.evaluate("farmers_2026.csv")

💻 TypeScript / JavaScript Usage

Open-DQI is also published as a zero-dependency npm package for Node.js, Next.js, and browser frontends:

import { DQIEngine } from "@futux/dqi";

const engine = new DQIEngine();
const report = engine.evaluate([
  { id: "F-001", name: "Amina Bello", phone: "+254712345678", yield_kg: 420 },
  { id: "F-002", name: "Kofi Mensah", phone: "invalid", yield_kg: 8500 }
]);

console.log(report.overall); // 88.4
console.log(report.grade);   // "B"

📋 Comparison with Alternatives

Feature Open-DQI Great Expectations Soda Core Pandas Profiling
Zero-Config Evaluation ✅ Yes ❌ Requires YAML ❌ Requires YAML ✅ Yes
Single Composite Score (0–100) ✅ Yes (DQI) ❌ Pass/Fail only ❌ Checks only ❌ Summary stats only
Offline HTML Dashboard ✅ Self-Contained ⚠️ Data Docs tree ⚠️ Complex ✅ HTML Report
Native In-Browser (TypeScript) ✅ Built-in ❌ Python only ❌ Python only ❌ Python only
Privacy / No Cloud Telemetry ✅ 100% Offline ⚠️ Cloud prompts ⚠️ Cloud prompts ✅ Local
Execution Latency (10k rows) < 300ms ~3.5s ~2.8s ~4.2s

🏛️ Citation & Academic Attribution

If you use Open-DQI in academic research, government benchmarking, or DPI publications, please cite:

@software{futux_opendqi_2026,
  author = {FutuX Agri-consult Limited},
  title = {Open-DQI: Schema-Agnostic Data Quality Index Middleware for Digital Public Infrastructure},
  year = {2026},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/futuxagriconsult/open-dqi-core}}
}

📄 License

Open-DQI Core is open-sourced under the Apache-2.0 License.
Maintained with ❤️ by FutuX Agri-consult Limited (info@futuxconsult.com).

Metadata

Release files for open-dqi-core 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for open-dqi-core 0.1.1
File Size Uploaded Provenance
open_dqi_core-0.1.1.tar.gz 91.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for open-dqi-core 0.1.1
File Interpreter ABI Platform
open_dqi_core-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 120.3 kB

Release files / open_dqi_core-0.1.1.tar.gz

Download URL open_dqi_core-0.1.1.tar.gz
Size 91.8 kB
Tags Source
SHA-256 checksum
How to use checksums
072dc7f15215c4dc05b9c4fbc2e8a50e6f23a34833e3c740ab1d5b28d37877bb
BLAKE2b-256 checksum
How to use checksums
be0af6df7ba481719f9c6c00fad729d0dc4c037deda80a5a4556ade942506669
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / open_dqi_core-0.1.1-py3-none-any.whl

Download URL open_dqi_core-0.1.1-py3-none-any.whl
Size 28.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c755fa9ff92c1126e3d5491a9b32b0badb4783d6dc5210c58a21cc174afd991a
BLAKE2b-256 checksum
How to use checksums
075ac715d2f6ff4cccf1492885a0a1fee13b863bddf04313a71f7085ca84fde8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for open-dqi-core 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page