{"id":47622513,"url":"https://github.com/benzsevern/goldenmatch","last_synced_at":"2026-05-13T06:05:07.736Z","repository":{"id":344911111,"uuid":"1183640892","full_name":"benzsevern/goldenmatch","owner":"benzsevern","description":"Entity resolution toolkit — deduplicate, match, and create golden records. 27 MCP tools on Smithery. Zero-config. 97.2% F1.","archived":false,"fork":false,"pushed_at":"2026-03-31T16:14:47.000Z","size":48972,"stargazers_count":27,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-31T18:23:09.080Z","etag":null,"topics":["a2a","agent","data-engineering","data-quality","dbt","deduplication","entity-resolution","fellegi-sunter","fuzzy-matching","golden-record","golden-suite","llm","mcp-server","polars","pprl","privacy-preserving","python","record-linkage","record-matching","remote-mcp"],"latest_commit_sha":null,"homepage":"https://smithery.ai/servers/benzsevern/goldenmatch","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/benzsevern.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"benzsevern"}},"created_at":"2026-03-16T20:13:08.000Z","updated_at":"2026-03-31T16:14:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/benzsevern/goldenmatch","commit_stats":null,"previous_names":["benzsevern/goldenmatch"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/benzsevern/goldenmatch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benzsevern%2Fgoldenmatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benzsevern%2Fgoldenmatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benzsevern%2Fgoldenmatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benzsevern%2Fgoldenmatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benzsevern","download_url":"https://codeload.github.com/benzsevern/goldenmatch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benzsevern%2Fgoldenmatch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["a2a","agent","data-engineering","data-quality","dbt","deduplication","entity-resolution","fellegi-sunter","fuzzy-matching","golden-record","golden-suite","llm","mcp-server","polars","pprl","privacy-preserving","python","record-linkage","record-matching","remote-mcp"],"created_at":"2026-04-01T22:23:28.735Z","updated_at":"2026-05-07T00:03:04.917Z","avatar_url":"https://github.com/benzsevern.png","language":"Python","funding_links":["https://github.com/sponsors/benzsevern"],"categories":[],"sub_categories":[],"readme":"\u003c!-- mcp-name: io.github.benzsevern/goldenmatch --\u003e\n\u003cdiv align=\"center\"\u003e\n\n# 🟡 Golden Suite\n\n**A polyglot data-quality and entity-resolution toolkit. Polished, opinionated, AI-native.**\n\n*GoldenCheck profiles → GoldenFlow standardizes → GoldenMatch deduplicates → GoldenPipe orchestrates. With InferMap for schema mapping and a Rust extension layer for Postgres / DuckDB.*\n\n\u003cbr\u003e\n\n\u003c!-- Headline package: goldenmatch --\u003e\n[![PyPI — goldenmatch](https://img.shields.io/pypi/v/goldenmatch?color=d4a017\u0026label=pypi%3Agoldenmatch\u0026logo=pypi\u0026logoColor=white)](https://pypi.org/project/goldenmatch/)\n[![npm — goldenmatch](https://img.shields.io/npm/v/goldenmatch?color=cb3837\u0026label=npm%3Agoldenmatch\u0026logo=npm\u0026logoColor=white)](https://www.npmjs.com/package/goldenmatch)\n[![Python](https://img.shields.io/badge/python-3.11%2B-3776ab?logo=python\u0026logoColor=white)](https://python.org)\n[![Node](https://img.shields.io/badge/node-%3E%3D20-5fa04e?logo=nodedotjs\u0026logoColor=white)](https://nodejs.org)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n\n\u003c!-- Quality / proof --\u003e\n[![CI](https://github.com/benzsevern/goldenmatch/actions/workflows/ci.yml/badge.svg)](https://github.com/benzsevern/goldenmatch/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/benzsevern/goldenmatch/graph/badge.svg)](https://codecov.io/gh/benzsevern/goldenmatch)\n[![DQBench ER](https://img.shields.io/badge/DQBench%20ER-95.30-d4a017)](https://github.com/benzsevern/dqbench)\n[![DBLP-ACM F1](https://img.shields.io/badge/DBLP--ACM%20F1-97.2%25-d4a017)](packages/python/goldenmatch/README.md#benchmarks)\n\n\u003c!-- Reach --\u003e\n[![PyPI downloads (suite)](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbenzsevern%2Fgoldenmatch%2Fbadges%2Fpypi-downloads.json)](https://pepy.tech/projects?q=goldenmatch+goldencheck+goldenpipe+goldenflow+infermap+goldencheck-types)\n[![npm downloads (suite)](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fbenzsevern%2Fgoldenmatch%2Fbadges%2Fnpm-downloads.json)](https://www.npmjs.com/~benzsevern)\n[![GitHub stars](https://img.shields.io/github/stars/benzsevern/goldenmatch?style=flat\u0026color=d4a017\u0026logo=github)](https://github.com/benzsevern/goldenmatch/stargazers)\n\n\u003c!-- Ecosystem --\u003e\n[![Docs](https://img.shields.io/badge/docs-bensevern.dev-d4a017)](https://bensevern.dev/)\n[![Wiki](https://img.shields.io/badge/wiki-github-d4a017)](https://github.com/benzsevern/goldenmatch/wiki)\n[![Web UI](https://img.shields.io/badge/web%20ui-FastAPI%20%2B%20React-d4a017?logo=react\u0026logoColor=white)](https://github.com/benzsevern/goldenmatch/wiki/Web-UI)\n[![Smithery MCP](https://img.shields.io/badge/MCP-smithery-6e40c9)](https://smithery.ai/servers/benzsevern/goldenmatch)\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/benzsevern/goldenmatch/blob/main/packages/python/goldenmatch/scripts/gpu_colab_notebook.ipynb)\n\n\u003c!-- Activity --\u003e\n[![GitHub Discussions](https://img.shields.io/github/discussions/benzsevern/goldenmatch?color=d4a017\u0026logo=github\u0026label=discussions)](https://github.com/benzsevern/goldenmatch/discussions)\n[![Last commit](https://img.shields.io/github/last-commit/benzsevern/goldenmatch?color=d4a017\u0026label=last%20commit)](https://github.com/benzsevern/goldenmatch/commits/main)\n\n\u003c/div\u003e\n\n[![GoldenMatch web workbench — pair drilldown with NL prose](packages/python/goldenmatch/docs/screenshots/web/web-inspector.png)](https://github.com/benzsevern/goldenmatch/wiki/Web-UI)\n\n\u003cp align=\"center\"\u003e\u003csub\u003e\u003cem\u003ePair drilldown in the web workbench: cluster members, field-level diff, and a one-line NL explanation per pair. \u003ccode\u003epip install goldenmatch[web]\u003c/code\u003e then \u003ccode\u003egoldenmatch serve-ui \u0026lt;project\u0026gt;\u003c/code\u003e. \u003ca href=\"https://github.com/benzsevern/goldenmatch/wiki/Web-UI\"\u003eMore screenshots →\u003c/a\u003e\u003c/em\u003e\u003c/sub\u003e\u003c/p\u003e\n\n```bash\n# Headline package: dedupe a CSV in 30 seconds\npip install goldenmatch \u0026\u0026 goldenmatch dedupe customers.csv\n\n# TypeScript / Edge runtimes\nnpm install goldenmatch\n```\n\n\u003e **🆕 v1.7.0 (Python) — web workbench** — `pip install goldenmatch[web]` then `goldenmatch serve-ui \u003cproject\u003e` opens a localhost browser workbench (FastAPI + React, editorial gold-on-cream theme). Edit matchkey / standardization / blocking rules with live Pydantic validation, run sampled previews, save back to `goldenmatch.yml`. Inspect saved runs (cluster table + pair drilldown + one-line NL prose explanations + F1/precision/recall vs steward labels). One-to-many `match` workflow, run-vs-run comparison (CCMS), parameter sensitivity sweeps, Learning Memory browser. Single-process, no auth — for dev-on-a-laptop. See [packages/python/goldenmatch/README.md#web-ui](packages/python/goldenmatch/README.md#web-ui).\n\u003e\n\u003e v1.6.0 (Python) + v0.4.0 (npm) — **cross-language Learning Memory parity**. A correction written by Python applies identically in TypeScript and vice versa: byte-identical SHA-256 hashes, the same SQLite schema, the same collision-safe re-anchor algorithm, verified every CI run by JSON + SQLite + apply-outcome parity tests on both sides. Steward decisions, unmerges, LLM votes, and agent approvals persist to a local store, re-anchor across row reorders via record-hash, and apply automatically on the next run. Each runtime ships its own CLI subgroup (`goldenmatch memory` / `goldenmatch-js memory`), MCP tools (35 Python / 24 TS), and programmatic API (`add_correction()` / `learn()` / `memory_stats()`). Off by default. See [Learning Memory docs](https://benzsevern.github.io/goldenmatch/learning-memory).\n\u003e\n\u003e v1.5.0 — auto-config preflight + postflight verification layer. Built by [Ben Severn](https://bensevern.dev).\n\n---\n\n## Why a suite?\n\nEach tool stands alone, but they compose into a single pipeline:\n\n```mermaid\nflowchart LR\n    raw([raw rows])\n    golden([golden records])\n\n    subgraph orchestration [\"GoldenPipe orchestrates\"]\n        direction LR\n        infermap[InferMap]\n        goldencheck[GoldenCheck]\n        goldenflow[GoldenFlow]\n        goldenmatch[GoldenMatch]\n        infermap --\u003e goldencheck --\u003e goldenflow --\u003e goldenmatch\n    end\n\n    raw --\u003e infermap\n    goldenmatch --\u003e golden\n```\n\n| Step | Role |\n|---|---|\n| **InferMap** | schema mapping — auto-aligns columns across heterogeneous sources |\n| **GoldenCheck** | profile + validate — encoding, format, anomaly detection |\n| **GoldenFlow** | standardize + transform — phone, date, address, categorical normalization |\n| **GoldenMatch** | dedupe + cluster + survivorship — fuzzy / exact / probabilistic / LLM |\n| **GoldenPipe** | orchestrator — declarative YAML pipeline wiring the four steps |\n\n- **Zero-config defaults that admit when they're unsure** — every step has a self-verifying preflight + postflight; results carry an inspectable report instead of failing silently.\n- **97.2% F1 on DBLP-ACM out of the box** for entity resolution. [DQBench ER score: 95.30](https://github.com/benzsevern/dqbench).\n- **Learning Memory** — corrections persist across runs and re-anchor across row reorders, so the system stops needing the same correction twice (GoldenMatch v1.6.0; off by default).\n- **Privacy-preserving record linkage** — match across organizations without sharing raw data (PPRL, 92.4% F1 on FEBRL4).\n- **AI-native by design** — every package ships an MCP server, a REST API, and an A2A agent surface. 35+ MCP tools across the suite.\n- **Polyglot parity** — Python and TypeScript implementations track the same scorer outputs to 4-decimal precision via a parity harness.\n- **Production paths** — Postgres sync, daemon mode, lineage tracking, review queues, dbt integration, GitHub Actions, and a Rust extension layer for Postgres / DuckDB.\n\n---\n\n## The Suite\n\n| Package | Lang | What it does | Install |\n|---|---|---|---|\n| **[GoldenMatch](packages/python/goldenmatch/README.md)** 🟡 | Python · TS | Zero-config entity resolution. Fuzzy + exact + probabilistic + LLM. Headline package. | `pip install goldenmatch` · `npm i goldenmatch` |\n| **[GoldenCheck](packages/python/goldencheck/README.md)** | Python · TS types | Data-quality scanning: encoding, Unicode, format validation, anomaly detection. | `pip install goldencheck` |\n| **[GoldenFlow](packages/python/goldenflow/README.md)** | Python · TS | Transforms \u0026 standardizers: phone, date, address, categorical normalization. | `pip install goldenflow` |\n| **[GoldenPipe](packages/python/goldenpipe/README.md)** | Python | Orchestrator that wires Check → Flow → Match into one declarative pipeline. | `pip install goldenpipe` |\n| **[InferMap](packages/python/infermap/README.md)** | Python · TS | Schema mapping engine — auto-aligns columns across heterogeneous sources. | `pip install infermap` · `npm i infermap` |\n| **[goldenmatch-extensions](packages/rust/extensions/README.md)** | Rust | Postgres extension (pgrx) + DuckDB UDFs. SQL-native fuzzy matching. | source build |\n| **[dbt-goldencheck](packages/dbt/goldencheck/README.md)** | dbt | dbt package — data-quality tests for warehouse models. | dbt deps |\n| **[goldencheck-action](packages/actions/goldencheck/README.md)** | YAML | GitHub Action — fail PRs that introduce data-quality regressions. | Marketplace |\n\n\u003e Headline pitch and the deepest docs live in **[packages/python/goldenmatch/README.md](packages/python/goldenmatch/README.md)** (910 lines, full feature list, CLI, architecture, benchmarks).\n\n---\n\n## Choose your path\n\n| I want to... | Go here |\n|---|---|\n| Deduplicate a CSV right now | [`packages/python/goldenmatch`](packages/python/goldenmatch/README.md#quick-start) |\n| Use from Claude Desktop / Code | [`packages/python/goldenmatch` — MCP](packages/python/goldenmatch/README.md#remote-mcp-server) |\n| Edit rules in a browser, label pairs, compare runs | [`packages/python/goldenmatch` — Web UI](packages/python/goldenmatch/README.md#web-ui) |\n| Build AI agents that deduplicate | [ER Agent / A2A wiki page](https://github.com/benzsevern/goldenmatch/wiki/ER-Agent) |\n| Profile data quality before matching | [`packages/python/goldencheck`](packages/python/goldencheck/README.md) |\n| Standardize messy fields (phone, date, address) | [`packages/python/goldenflow`](packages/python/goldenflow/README.md) |\n| Run the full pipeline declaratively | [`packages/python/goldenpipe`](packages/python/goldenpipe/README.md) |\n| Map columns across schemas | [`packages/python/infermap`](packages/python/infermap/README.md) |\n| Write TypeScript / Node.js / Edge | [`packages/typescript/goldenmatch`](packages/typescript/goldenmatch/README.md) |\n| Match in Postgres / DuckDB SQL | [`packages/rust/extensions`](packages/rust/extensions/README.md) |\n| Add data-quality gates to dbt | [`packages/dbt/goldencheck`](packages/dbt/goldencheck/README.md) |\n| Block bad data in GitHub PRs | [`packages/actions/goldencheck`](packages/actions/goldencheck/README.md) |\n| Run as Airflow DAGs | [`examples/airflow/`](examples/airflow/README.md) — 12 drop-in DAGs |\n| Run from a single MCP container | [`docker run ghcr.io/benzsevern/goldensuite-mcp:latest`](packages/python/goldensuite-mcp/README.md) |\n| Pull every Suite container | [GitHub Packages](https://github.com/benzsevern?tab=packages) |\n\n---\n\n## Quick examples\n\n### Python — dedupe in 30 seconds\n\n```python\nimport goldenmatch as gm\n\n# Zero-config\nresult = gm.dedupe(\"customers.csv\")\nprint(result)  # DedupeResult(records=5000, clusters=847, match_rate=12.0%)\nresult.golden.write_csv(\"deduped.csv\")\n\n# Or be explicit\nresult = gm.dedupe(\"customers.csv\",\n    exact=[\"email\"],\n    fuzzy={\"name\": 0.85, \"zip\": 0.95},\n    blocking=[\"zip\"],\n    threshold=0.85)\n```\n\n### TypeScript — edge-safe core\n\n```typescript\nimport { dedupe } from \"goldenmatch\";\n\nconst result = dedupe(rows, {\n  fuzzy: { name: 0.85 },\n  blocking: [\"zip\"],\n  threshold: 0.85,\n});\nconsole.log(result.stats);  // { totalRecords, totalClusters, matchRate, ... }\n```\n\nRuns in browsers, Vercel Edge, Cloudflare Workers, Deno. 478 tests, strict TypeScript (`noUncheckedIndexedAccess`, `exactOptionalPropertyTypes`).\n\n### Web workbench — browser UI for matching\n\n```bash\npip install 'goldenmatch[web]'\ngoldenmatch serve-ui my-project   # opens http://localhost:5050\n```\n\n![GoldenMatch web UI](packages/python/goldenmatch/docs/screenshots/web/web-inspector.png)\n\nEdit rules with live validation, preview against a sampled slice, label pairs\n(mirrored into Learning Memory automatically), compare runs (CCMS), sweep\nparameters, browse the corrections store. Single-process localhost workbench\nshipped as the optional `[web]` extra.\n\n### Composed pipeline\n\n```python\nimport goldenpipe as gp\n\npipeline = gp.Pipeline.from_yaml(\"pipeline.yaml\")  # check → flow → match\nresult = pipeline.run(\"customers.csv\")\nresult.report.write_html(\"report.html\")\n```\n\n**More**: [`examples/`](examples/README.md) has runnable demos for every Suite scenario:\n[Python](examples/python/README.md) (quickstart, full pipeline, customer 360, PPRL, review workflow, MCP client) ·\n[TypeScript](examples/typescript/README.md) (quickstart, Vercel Edge route, MCP client) ·\n[Airflow DAGs](examples/airflow/README.md) (12 production-shaped pipelines).\n\n---\n\n## Install variants\n\nGoldenMatch ships fat optional extras so you only pay for what you use:\n\n```bash\npip install goldenmatch                    # core (CSV in, CSV out)\npip install goldenmatch[embeddings]        # + sentence-transformers, FAISS\npip install goldenmatch[llm]               # + Claude / OpenAI for LLM boost\npip install goldenmatch[postgres]          # + Postgres sync\npip install goldenmatch[snowflake]         # + Snowflake connector\npip install goldenmatch[bigquery]          # + BigQuery connector\npip install goldenmatch[databricks]        # + Databricks connector\npip install goldenmatch[salesforce]        # + Salesforce connector\npip install goldenmatch[duckdb]            # + DuckDB out-of-core backend\npip install goldenmatch[ray]               # + Ray distributed backend (50M+ rows)\npip install goldenmatch[quality]           # + GoldenCheck integration\npip install goldenmatch[transform]         # + GoldenFlow integration\npip install goldenmatch[mcp]               # + MCP server for Claude Desktop\npip install goldenmatch[agent]             # + A2A agent (aiohttp)\npip install goldenmatch[web]               # + localhost browser workbench (FastAPI + React)\n\ngoldenmatch setup    # interactive wizard: GPU, API keys, database\n```\n\nSister packages compose: `pip install goldenpipe[full]` brings in Check + Flow + Match together.\n\n---\n\n## Remote MCP Server\n\nGoldenMatch is hosted as an MCP server on [Smithery](https://smithery.ai/servers/benzsevern/goldenmatch) — connect from any MCP client without installing anything.\n\n```json\n{\n  \"mcpServers\": {\n    \"goldenmatch\": {\n      \"url\": \"https://goldenmatch-mcp-production.up.railway.app/mcp/\"\n    }\n  }\n}\n```\n\n35+ MCP tools across the suite: deduplicate, match, explain, review, link privately, configure, scan quality, transform, synthesize golden records, and manage Learning Memory corrections.\n\n---\n\n## Container images\n\nEvery Suite package ships as a multi-arch container image (linux/amd64 + linux/arm64) on GitHub Container Registry. Pull anonymously, no auth needed:\n\n```bash\n# One container, every Suite tool — the convenience option\ndocker run -p 8300:8300 ghcr.io/benzsevern/goldensuite-mcp:latest\n\n# Per-package containers — narrower deployments\ndocker run -p 8200:8200 ghcr.io/benzsevern/goldenmatch-mcp:latest\ndocker run -p 8100:8100 ghcr.io/benzsevern/goldencheck-mcp:latest\ndocker run -p 8150:8150 ghcr.io/benzsevern/goldenflow-mcp:latest\ndocker run -p 8250:8250 ghcr.io/benzsevern/goldenpipe-mcp:latest\ndocker run -p 8400:8400 ghcr.io/benzsevern/infermap-mcp:latest\n\n# Postgres + extension preinstalled\ndocker run -e POSTGRES_PASSWORD=secret ghcr.io/benzsevern/goldenmatch-extensions:latest\n```\n\nTags:\n- `:latest` — current `main`\n- `:main-\u003csha7\u003e` — every push to main, immutable\n- `:vX.Y.Z` and `:vX.Y` — pushed when a `\u003cpackage\u003e-vX.Y.Z` tag is created\n\nSee [`packages/python/goldensuite-mcp/README.md`](packages/python/goldensuite-mcp/README.md) for the aggregator's tool-collision behaviour.\n\n---\n\n## Airflow\n\n12 drop-in DAGs at [`examples/airflow/`](examples/airflow/README.md), grouped by lifecycle stage:\n\n| Group | DAGs |\n|---|---|\n| **Core pipeline** | `daily_dedupe`, `incremental_match`, `warehouse_native` (Snowflake), `customer_360` (multi-source) |\n| **Privacy** | `pprl_linkage` (two-party PPRL) |\n| **Onboarding \u0026 monitoring** | `schema_align_and_load`, `schema_drift_alarm`, `quality_gate` |\n| **Feedback loop** | `review_worker`, `active_learning` |\n| **Operationalize** | `reverse_etl` (Salesforce/HubSpot), `backfill` |\n\nTaskFlow API, Airflow 2.7+ (compatible with 3.x). Each DAG has tunable knobs at the top, idempotent retries, and is marker-protected against double-processing. Drop the file you want into your Airflow `dags/` folder.\n\n---\n\n## Repository layout\n\n```\ngoldenmatch/\n├── packages/\n│   ├── python/\n│   │   ├── goldenmatch/      # entity resolution — headline package\n│   │   ├── goldencheck/      # data quality scanning\n│   │   ├── goldenflow/       # transforms \u0026 standardizers\n│   │   ├── goldenpipe/       # orchestrator\n│   │   └── infermap/         # schema mapping\n│   ├── typescript/\n│   │   ├── goldenmatch/      # full TS port (edge-safe core)\n│   │   ├── goldencheck/      # TS implementation\n│   │   ├── goldencheck-types/ # shared TS types\n│   │   ├── goldenflow/       # TS transforms\n│   │   └── infermap/         # TS schema mapping\n│   ├── rust/\n│   │   └── extensions/       # Postgres pgrx + DuckDB UDFs (own Cargo workspace)\n│   ├── python/goldensuite-mcp/ # aggregator MCP server (one container, all tools)\n│   ├── dbt/goldencheck/      # dbt package\n│   └── actions/goldencheck/  # GitHub Action\n├── examples/\n│   ├── python/               # 6 runnable Python scripts (quickstart → MCP)\n│   ├── typescript/           # 3 TS scripts (quickstart, Vercel Edge, MCP)\n│   └── airflow/              # 12 drop-in Airflow DAGs\n├── docs/superpowers/         # design specs and implementation plans\n├── justfile                  # install / test / lint / build, all languages\n├── pyproject.toml            # uv workspace (root)\n├── package.json              # per-package npm (Windows-symlink-safe; no root workspace)\n└── .github/workflows/ci.yml\n```\n\n### Why no root Cargo or npm workspace?\n\n- **Cargo:** `packages/rust/extensions/` is itself a Cargo workspace (the `postgres` crate is excluded for pgrx-specific build requirements). Cargo doesn't allow nested workspaces sharing members. Cargo commands run from inside `packages/rust/extensions/`.\n- **npm:** A real npm workspace causes Windows symlink issues for some users. Each TypeScript package installs independently. The root `package.json` provides convenience scripts (`install:all`, `test:all`, `build:all`) but isn't a workspace.\n\n### Build / test / lint everything\n\n```bash\njust install   # uv sync + per-package npm install + cargo fetch\njust test      # all languages\njust lint\njust build\n```\n\n---\n\n## Contributing\n\n- Feature work goes on `feature/\u003cname\u003e` branches; merge via squash PR.\n- PR title format: `feat: \u003cdescription\u003e`, `fix: \u003cdescription\u003e`, `docs: \u003cdescription\u003e`.\n- Tests must pass on all three languages where the change applies; the parity harness in `packages/typescript/goldenmatch/tests/parity/` enforces 4-decimal-tolerance Python ↔ TypeScript scorer parity.\n- See `docs/superpowers/specs/` for design rationale on architectural decisions.\n\n### TypeScript dev setup (pnpm + Turborepo)\n\nThe TypeScript packages live in a single pnpm workspace orchestrated by Turborepo. From the repo root:\n\n```bash\ncorepack enable                               # one-time, picks up pnpm@9.15.0 from package.json\npnpm install                                  # installs all workspace packages\npnpm turbo run build test typecheck lint      # full pipeline (cached after first run)\npnpm --filter goldenmatch test                # single package\n```\n\n**Windows: enable Developer Mode for pnpm.** `pnpm install` creates symlinks under `node_modules/`. Settings → For Developers → Developer Mode → On. If you see `EPERM: operation not permitted, symlink ...` during install, Dev Mode is off.\n\nIf `corepack enable` fails (often needs an admin shell on Windows), the fallback is `npm i -g pnpm@9.15.0` — functionally equivalent.\n\n---\n\n## History\n\nThis repository was formed on **2026-05-01** by folding 8 sibling repos into the existing `goldenmatch` repo using `git filter-repo`. Full commit history is preserved for every source. See [`docs/superpowers/specs/2026-05-01-goldenmatch-monorepo-fold-in-design.md`](docs/superpowers/specs/2026-05-01-goldenmatch-monorepo-fold-in-design.md) for the design rationale and [`docs/superpowers/plans/2026-05-01-goldenmatch-monorepo-fold-in.md`](docs/superpowers/plans/2026-05-01-goldenmatch-monorepo-fold-in.md) for the step-by-step migration plan.\n\n---\n\n## Author \u0026 License\n\nBuilt by **[Ben Severn](https://bensevern.dev)**.\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenzsevern%2Fgoldenmatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenzsevern%2Fgoldenmatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenzsevern%2Fgoldenmatch/lists"}