{"adoption": {"forks": 283, "observed_at": "2026-08-28T04:06:50.413198+00:00", "stars": 2417}, "canonical_url": "https://ross.abutalabs.com/products/soda-core", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Data Contracts engine for the modern data stack. https://www.soda.io", "domain": ["analytics", "databases"], "enriched": true, "function": ["testing", "monitoring", "etl", "cli", "developer-tools"], "health_score": 100, "homepage": "https://go.soda.io/core-docs", "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["sodadata/soda-core"], "name": "sodadata/soda-core", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2026-08-26T08:28:03+00:00", "repo": "sodadata/soda-core", "stars": 2417, "tags": ["data-contracts", "data-quality", "data-observability", "yaml-configuration", "dbt", "snowflake", "bigquery", "data-pipelines", "data-engineering", "devops"], "topics": ["python", "data-engineering", "data-governance", "data-monitoring", "data-observability", "data-profiling", "data-quality", "data-quality-checks", "data-quality-monitoring", "data-reliability", "data-testing", "data-unit-tests", "data-validation", "dataquality", "datatesting", "dbt", "pipeline-testing", "snowflake", "data-quality-testing", "data-contracts"], "urls": [], "use_cases": ["validate data quality in pipelines before they run", "define data contracts in yaml for tables", "run data quality checks on snowflake and bigquery", "detect schema drift and anomalies in data warehouses", "embed data tests in airflow or dagster pipelines", "profile and monitor datasets for reliability issues"], "what_it_is": "Soda Core is a data quality and data contract verification engine that lets teams define data quality contracts in YAML and validate schema and data across their data stack. It ships as a Python library and CLI supporting many data sources like PostgreSQL, Snowflake, BigQuery, and Databricks, with 50+ built-in checks.", "when_to_avoid": ["you need a full data observability platform with anomaly detection without Soda Cloud", "your checks are only simple unit tests on Python code rather than data", "you require a GUI-first data quality tool"], "when_to_choose": ["you need declarative, YAML-based data quality checks across multiple warehouses", "you want to enforce data contracts as part of your ELT pipelines", "you need a CLI and Python API for data validation with broad data source support"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/soda-core", "repo": "sodadata/soda-core", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.413198+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:33:08.255698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c0f1f8dedeb976ca1f71148d8d3b9ce734f539fd7c0753f62ebb6c6cf1725dc4", "fetched_at": "2026-08-28T04:06:50.413198+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sodadata/soda-core"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 99}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2088, "days_push": 7, "days_rel": 8, "gap_med": 7, "n_releases_24m": 52}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}