The orchestrator that chains data-quality checking, transformation, and deduplication into a single adaptive pipeline.
GoldenPipe chains GoldenCheck, GoldenFlow, and GoldenMatch into one pipeline. It profiles your data, conditionally routes it through transformation, deduplicates it (or routes sensitive fields to privacy-preserving matching), and emits golden records. Its logic is adaptive: it validates stage wiring (each stage’s inputs must be produced upstream), skips transformation when no issues are found, and explains the reasoning behind every decision.It runs in Python and TypeScript, on the CLI, and behind MCP, REST, and A2A servers.
Install
pip install goldenpipepip install goldenpipe[mcp] # MCP server mode
npm install goldenpipe # edge-safe; enableWasm() opts into the Rust planner
Quickstart
import goldenpipe as gpresult = gp.run("customers.csv")print(result.status) # PipeStatus.SUCCESSprint(result.stages) # dict[str, StageResult]: per-stage status + outputprint(result.artifacts) # dict, e.g. {"golden": ..., "manifest": ...}print(result.reasoning) # why each decision was madeprint(result.skipped) # stages that were skipped, and why
import { runDf } from "goldenpipe";const result = await runDf(rows); // zero-config: scan -> transform -> dedupeconsole.log(result.status); // "success"console.log(result.artifacts.golden);
On the CLI:
goldenpipe run customers.csv # full pipelinegoldenpipe run customers.csv --verbose # show reasoninggoldenpipe run customers.csv -c pipeline.yml # custom stage config (e.g. skip a stage)goldenpipe run customers.csv -o golden.csv # save golden recordsgoldenpipe stages # list registered stagesgoldenpipe validate -c pipeline.yml # dry-run wiring validationgoldenpipe serve | mcp-serve | agent-serve # REST / MCP / A2A servers
Key features
Orchestrates the full pipeline (Check → Flow → Match) in one call.
Wiring validation that auto-prepends the load stage, checks each stage’s declared consumes against the artifacts produced by earlier stages (in declared order), and raises a typed WiringError when an input isn’t available. Or errors on an unknown stage use.
Adaptive logic that skips transformation when there are no quality issues.
Privacy-preserving routing that detects sensitive fields and routes to PPRL.
Reasoning transparency that reports why each stage ran or was skipped.
Column-context enrichment that builds targeted dedupe config from GoldenCheck profiles and column-name heuristics.
Polyglot planner, one source of truth. The planner (stage ordering, decision routing, auto-config, skip_if) is a pyo3-free goldenpipe-core Rust kernel; Python and edge-TS compute it identically, locked byte-for-byte by a CI parity gate. TypeScript opts into the WASM kernel with enableWasm(); pure-TS is the default. Only the planner is in Rust, stage execution and IO stay a per-language host.
Four server surfaces: MCP (goldenpipe mcp-serve, 4 tools), REST (goldenpipe serve), and A2A (goldenpipe agent-serve), plus the local CLI.
GoldenPipe scores 88.07 on the DQBench Pipeline category.See the API surface for every entry point in one place.
Selective stages
Run only part of the pipeline by specifying stages:
Pipeline.run() returns a PipeResult, not the output DataFrame:
result.status # PipeStatus enum: SUCCESS, PARTIAL, FAILEDresult.input_rows # intresult.stages # dict[str, StageResult]result.artifacts # dict[str, Any], e.g. {"manifest": Manifest}result.errors # list[str]result.reasoning # dict[str, str], why each stage ran or was skippedresult.timing # dict[str, float]result.skipped # list[str]
A few sharp edges from the package docs: PipeResult does not expose the output DataFrame directly. Use gp.run(path) (file-based) rather than gp.run_df(df), since GoldenCheck needs a file extension. And cast mixed-type columns (for example a birth_year that is sometimes an int and sometimes a string) to a single type before dedup, or GoldenMatch will raise.
Servers
GoldenPipe ships three server surfaces. MCP and A2A expose all four operations:
list_stages, validate_pipeline, run_pipeline, explain_pipeline; REST
exposes list / validate / run (no explain):
MCP. Remote https://goldenpipe-mcp-production.up.railway.app/mcp/ or local goldenpipe mcp-serve --transport http --port 8250 (4 tools).
REST.goldenpipe serve (GET /stages, POST /validate, POST /run).
A2A.goldenpipe agent-serve (agent card at /.well-known/agent.json, 4 skills).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Golden Suite","description":"A polyglot data-quality and entity-resolution toolkit. Zero-config, AI-native, MIT-licensed.","colors":{"primary":"#8a6d0f","light":"#e8b923","dark":"#b8860b"},"favicon":"https://mintcdn.com/bensevern/6XyH2a44KoKm-HfS/favicon.svg?fit=max\u0026auto=format\u0026n=6XyH2a44KoKm-HfS\u0026q=85\u0026s=6bba801ac9c630754b24b0bb70ca4841","navbar":{"links":[{"href":"https://github.com/benseverndev-oss/goldenmatch","label":"GitHub"}],"primary":{"type":"button","label":"PyPI","href":"https://pypi.org/project/goldenmatch/"}},"footer":{"socials":{"github":"https://github.com/benseverndev-oss/goldenmatch"}},"seo":{"metatags":{"canonical":"https://docs.bensevern.dev"}},"integrations":{"posthog":{"apiKey":"phc_REPLACE_WITH_POSTHOG_PROJECT_KEY","apiHost":"https://us.i.posthog.com"}},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bensevern","hasAudioNarration":false,"actualSubdomain":"bensevern","customDomains":["docs.bensevern.dev"],"gitSource":{"type":"github","owner":"benseverndev-oss","repo":"goldenmatch","deployBranch":"main","contentDirectory":"docs-site","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ab70d92c1ef5a2ff16ad13c","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"Documentation","count":95},{"language":"default","tag":"GoldenMatch","count":41},{"language":"default","tag":"Features","count":18},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"GoldenAnalysis","count":7},{"language":"default","tag":"GoldenCheck","count":7},{"language":"default","tag":"GoldenFlow","count":7},{"language":"default","tag":"APIs \u0026 integrations","count":6},{"language":"default","tag":"API reference","count":6},{"language":"default","tag":"InferMap","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"goldenpipe/overview","slug":"/goldenpipe/overview","pageMetadata":{"title":"GoldenPipe overview","description":"The orchestrator that chains data-quality checking, transformation, and deduplication into a single adaptive pipeline.","keywords":["goldenpipe","orchestration","pipeline","check","flow","match"],"href":"/goldenpipe/overview"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"The orchestrator that chains data-quality checking, transformation, and deduplication into a single adaptive pipeline.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`GoldenPipe chains GoldenCheck, GoldenFlow, and GoldenMatch into one pipeline. It profiles your data, conditionally routes it through transformation, deduplicates it (or routes sensitive fields to privacy-preserving matching), and emits golden records. Its logic is adaptive: it validates stage wiring (each stage’s inputs must be produced upstream), skips transformation when no issues are found, and explains the reasoning behind every decision.`}),`\n`,_jsx(_components.p,{children:`It runs in Python and TypeScript, on the CLI, and behind MCP, REST, and A2A servers.`}),`\n`,_jsx(Heading,{level:`2`,id:`install`,children:`Install`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`pip`,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` goldenpipe`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` goldenpipe[mcp]`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # MCP server mode`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`npm`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` goldenpipe`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # edge-safe; enableWasm() opts into the Rust planner`})]}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`quickstart`,children:`Quickstart`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Python`,numberOfLines:`9`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` goldenpipe `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`as`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` gp`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` gp.run(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"customers.csv\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(result.status) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# PipeStatus.SUCCESS`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(result.stages) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# dict[str, StageResult]: per-stage status + output`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(result.artifacts) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# dict, e.g. {\"golden\": ..., \"manifest\": ...}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(result.reasoning) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# why each decision was made`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(result.skipped) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# stages that were skipped, and why`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`5`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`runDf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"goldenpipe\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` result`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` runDf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`rows`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// zero-config: scan -> transform -> dedupe`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// \"success\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`artifacts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`golden`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})})]}),`\n`,_jsx(_components.p,{children:`On the CLI:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`goldenpipe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` customers.csv`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # full pipeline`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`goldenpipe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` customers.csv`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --verbose`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # show reasoning`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`goldenpipe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` customers.csv`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pipeline.yml`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # custom stage config (e.g. skip a stage)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`goldenpipe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` customers.csv`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` golden.csv`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # save golden records`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`goldenpipe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` stages`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # list registered stages`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`goldenpipe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` validate`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pipeline.yml`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # dry-run wiring validation`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`goldenpipe`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` serve`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` mcp-serve`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` agent-serve`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # REST / MCP / A2A servers`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`key-features`,children:`Key features`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Orchestrates the full pipeline`}),` (Check → Flow → Match) in one call.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Wiring validation`}),` that auto-prepends the `,_jsx(_components.code,{children:`load`}),` stage, checks each stage’s declared `,_jsx(_components.code,{children:`consumes`}),` against the artifacts produced by earlier stages (in declared order), and raises a typed `,_jsx(_components.code,{children:`WiringError`}),` when an input isn’t available. Or errors on an unknown stage `,_jsx(_components.code,{children:`use`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Adaptive logic`}),` that skips transformation when there are no quality issues.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Privacy-preserving routing`}),` that detects sensitive fields and routes to PPRL.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reasoning transparency`}),` that reports why each stage ran or was skipped.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Column-context enrichment`}),` that builds targeted dedupe config from GoldenCheck profiles and column-name heuristics.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Polyglot planner, one source of truth.`}),` The planner (stage ordering, decision routing, auto-config, `,_jsx(_components.code,{children:`skip_if`}),`) is a pyo3-free `,_jsx(_components.code,{children:`goldenpipe-core`}),` Rust kernel; Python and edge-TS compute it identically, locked byte-for-byte by a CI parity gate. TypeScript opts into the WASM kernel with `,_jsx(_components.code,{children:`enableWasm()`}),`; pure-TS is the default. Only the planner is in Rust, stage execution and IO stay a per-language host.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Four server surfaces`}),`: MCP (`,_jsx(_components.code,{children:`goldenpipe mcp-serve`}),`, 4 tools), REST (`,_jsx(_components.code,{children:`goldenpipe serve`}),`), and A2A (`,_jsx(_components.code,{children:`goldenpipe agent-serve`}),`), plus the local CLI.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`GoldenPipe scores 88.07 on the DQBench Pipeline category.`}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/reference/api-surface#goldenpipe`,children:`API surface`}),` for every entry point in one place.`]}),`\n`,_jsx(Heading,{level:`2`,id:`selective-stages`,children:`Selective stages`}),`\n`,_jsx(_components.p,{children:`Run only part of the pipeline by specifying stages:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` goldenpipe `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Pipeline, PipelineConfig, StageSpec`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`config `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` PipelineConfig(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` pipeline`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"check-and-flow-only\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` stages`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` StageSpec(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`use`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"goldencheck.scan\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` StageSpec(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`use`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"goldenflow.transform\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # omit goldenmatch.dedupe to skip dedup`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Pipeline(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`config`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`config).run(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`source`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"data.csv\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`the-piperesult`,children:`The PipeResult`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`Pipeline.run()`}),` returns a `,_jsx(_components.code,{children:`PipeResult`}),`, not the output DataFrame:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result.status `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# PipeStatus enum: SUCCESS, PARTIAL, FAILED`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result.input_rows `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# int`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result.stages `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# dict[str, StageResult]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result.artifacts `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# dict[str, Any], e.g. {\"manifest\": Manifest}`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result.errors `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# list[str]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result.reasoning `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# dict[str, str], why each stage ran or was skipped`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result.timing `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# dict[str, float]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result.skipped `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# list[str]`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`A few sharp edges from the package docs: `,_jsx(_components.code,{children:`PipeResult`}),` does not expose the output DataFrame directly. Use `,_jsx(_components.code,{children:`gp.run(path)`}),` (file-based) rather than `,_jsx(_components.code,{children:`gp.run_df(df)`}),`, since GoldenCheck needs a file extension. And cast mixed-type columns (for example a `,_jsx(_components.code,{children:`birth_year`}),` that is sometimes an int and sometimes a string) to a single type before dedup, or GoldenMatch will raise.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`servers`,children:`Servers`}),`\n`,_jsxs(_components.p,{children:[`GoldenPipe ships three server surfaces. MCP and A2A expose all four operations:\n`,_jsx(_components.code,{children:`list_stages`}),`, `,_jsx(_components.code,{children:`validate_pipeline`}),`, `,_jsx(_components.code,{children:`run_pipeline`}),`, `,_jsx(_components.code,{children:`explain_pipeline`}),`; REST\nexposes list / validate / run (no explain):`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`MCP.`}),` Remote `,_jsx(_components.code,{children:`https://goldenpipe-mcp-production.up.railway.app/mcp/`}),` or local `,_jsx(_components.code,{children:`goldenpipe mcp-serve --transport http --port 8250`}),` (4 tools).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`REST.`}),` `,_jsx(_components.code,{children:`goldenpipe serve`}),` (`,_jsx(_components.code,{children:`GET /stages`}),`, `,_jsx(_components.code,{children:`POST /validate`}),`, `,_jsx(_components.code,{children:`POST /run`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A2A.`}),` `,_jsx(_components.code,{children:`goldenpipe agent-serve`}),` (agent card at `,_jsx(_components.code,{children:`/.well-known/agent.json`}),`, 4 skills).`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"GoldenPipe overview","description":"The orchestrator that chains data-quality checking, transformation, and deduplication into a single adaptive pipeline.","keywords":["goldenpipe","orchestration","pipeline","check","flow","match"],"href":"/goldenpipe/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Install","slug":"install","depth":2,"children":[]},{"title":"Quickstart","slug":"quickstart","depth":2,"children":[]},{"title":"Key features","slug":"key-features","depth":2,"children":[]},{"title":"Selective stages","slug":"selective-stages","depth":2,"children":[]},{"title":"The PipeResult","slug":"the-piperesult","depth":2,"children":[]},{"title":"Servers","slug":"servers","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"bensevern","siteName":"Golden Suite","title":"GoldenPipe overview - Golden Suite","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-17T22:03:13.509Z","originalFileLocation":"goldenpipe/overview.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The orchestrator that chains data-quality checking, transformation, and deduplication into a single adaptive pipeline.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Golden Suite\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"GoldenPipe overview - Golden Suite\">\u003cmeta data-mint-head property=\"og:description\" content=\"The orchestrator that chains data-quality checking, transformation, and deduplication into a single adaptive pipeline.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Golden Suite\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.bensevern.dev/goldenpipe/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bensevern.mintlify.site/docs/_mintlify/api/og/v2?division=GoldenPipe\u0026amp;title=GoldenPipe+overview\u0026amp;description=The+orchestrator+that+chains+data-quality+checking%2C+transformation%2C+and+deduplication+into+a+single+adaptive+pipeline.\u0026amp;theme=642c4ff138d3739db8553d23\u0026amp;signature=4af389580b6780a718ead2dbc74cbed8233ee8cddfe82b0379dff7970a9ba75d\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"GoldenPipe overview - Golden Suite\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The orchestrator that chains data-quality checking, transformation, and deduplication into a single adaptive pipeline.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bensevern.mintlify.site/docs/_mintlify/api/og/v2?division=GoldenPipe\u0026amp;title=GoldenPipe+overview\u0026amp;description=The+orchestrator+that+chains+data-quality+checking%2C+transformation%2C+and+deduplication+into+a+single+adaptive+pipeline.\u0026amp;theme=642c4ff138d3739db8553d23\u0026amp;signature=4af389580b6780a718ead2dbc74cbed8233ee8cddfe82b0379dff7970a9ba75d\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/bensevern/0WeZmo84diIbX0Sx/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Golden Suite\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#8a6d0f\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.bensevern.dev/goldenpipe/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/goldenpipe/overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.bensevern.dev/#organization\",\"name\":\"Golden Suite\",\"url\":\"https://docs.bensevern.dev\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.bensevern.dev#website\",\"name\":\"Golden Suite\",\"url\":\"https://docs.bensevern.dev\",\"publisher\":{\"@id\":\"https://docs.bensevern.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.bensevern.dev/goldenpipe/overview#webpage\",\"url\":\"https://docs.bensevern.dev/goldenpipe/overview\",\"name\":\"GoldenPipe overview\",\"description\":\"The orchestrator that chains data-quality checking, transformation, and deduplication into a single adaptive pipeline.\",\"dateModified\":\"2026-08-17T22:03:13.509Z\",\"isPartOf\":{\"@id\":\"https://docs.bensevern.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.bensevern.dev/goldenpipe/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.bensevern.dev/goldenpipe/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Golden Suite\",\"item\":\"https://docs.bensevern.dev\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GoldenPipe overview\",\"item\":\"https://docs.bensevern.dev/goldenpipe/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.bensevern.dev/goldenpipe/overview#article\",\"headline\":\"GoldenPipe overview\",\"name\":\"GoldenPipe overview\",\"description\":\"The orchestrator that chains data-quality checking, transformation, and deduplication into a single adaptive pipeline.\",\"url\":\"https://docs.bensevern.dev/goldenpipe/overview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.bensevern.dev/goldenpipe/overview#webpage\"},\"dateModified\":\"2026-08-17T22:03:13.509Z\",\"keywords\":\"goldenpipe, orchestration, pipeline, check, flow, match\",\"publisher\":{\"@id\":\"https://docs.bensevern.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.bensevern.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Golden Suite\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Golden Suite\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/goldenpipe/overview.md","siteName":"Golden Suite","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Get started","pages":[{"title":"Golden Suite","href":""},{"title":"Quickstart","href":"/quickstart"},{"title":"Web workbench (no code)","href":"/web-ui"},{"title":"For researchers","href":"/for-researchers"}]},{"group":"Concepts","pages":[{"title":"Architecture","href":"/concepts/architecture"},{"title":"Entity resolution","href":"/concepts/entity-resolution"},{"title":"Scale envelope","href":"/concepts/scale-envelope"},{"title":"Cross-language parity \u0026 phase-handoff limits","href":"/concepts/cross-language-parity"}]},{"group":"GoldenMatch","pages":[{"title":"GoldenMatch overview","href":"/goldenmatch/overview"},{"group":"Guides","pages":[{"title":"GoldenMatch quickstart","href":"/goldenmatch/quickstart"},{"title":"Installation","href":"/goldenmatch/installation"},{"title":"GoldenMatch CLI","href":"/goldenmatch/cli"},{"title":"Interactive TUI","href":"/goldenmatch/tui"},{"title":"Migrating from Splink","href":"/goldenmatch/migrating-from-splink"},{"title":"Migrating from hand-rolled dbt","href":"/goldenmatch/migrating-from-dbt"},{"title":"Migrating to v3","href":"/goldenmatch/migrating-to-v3"},{"title":"Migrating to v2.0","href":"/goldenmatch/migrating-to-v2"},{"title":"What changed from 1.0 to 2.0","href":"/goldenmatch/v1-to-v2"},{"title":"v1 vs v2 at a glance","href":"/goldenmatch/v1-vs-v2"}]},{"group":"Features","pages":[{"title":"Document ingest","href":"/goldenmatch/documents"},{"title":"Auto-config","href":"/goldenmatch/auto-config"},{"title":"Config suggestions (the healing loop)","href":"/goldenmatch/config-suggestions"},{"title":"Scoring","href":"/goldenmatch/scoring"},{"title":"Blocking strategies","href":"/goldenmatch/blocking"},{"title":"Data-quality–aware matching","href":"/goldenmatch/data-quality"},{"title":"Pipeline","href":"/goldenmatch/pipeline"},{"title":"Backends and scale","href":"/goldenmatch/backends-and-scale"},{"title":"Native acceleration","href":"/goldenmatch/native"},{"title":"Privacy-preserving linkage","href":"/goldenmatch/pprl"},{"title":"LLM integration","href":"/goldenmatch/llm"},{"title":"Learning memory","href":"/goldenmatch/learning-memory"},{"title":"Identity graph","href":"/goldenmatch/identity-graph"},{"title":"Semantic-layer key integrity","href":"/goldenmatch/semantic-key-integrity"},{"title":"Domain packs","href":"/goldenmatch/domain-packs"},{"title":"Reference data","href":"/goldenmatch/reference-data"},{"title":"Streaming \u0026 incremental","href":"/goldenmatch/streaming"},{"title":"Evaluation","href":"/goldenmatch/evaluation"}]},{"group":"APIs \u0026 integrations","pages":[{"title":"Python API","href":"/goldenmatch/python-api"},{"title":"TypeScript API","href":"/goldenmatch/typescript"},{"title":"REST API","href":"/goldenmatch/rest-api"},{"title":"MCP server","href":"/goldenmatch/mcp"},{"title":"ER agent","href":"/goldenmatch/agent"},{"title":"Knowledge-graph framework integrations","href":"/goldenmatch/kg-integrations"}]},{"group":"API reference","pages":[{"title":"Configuration","href":"/goldenmatch/configuration"},{"title":"Config matrix","href":"/goldenmatch/config-matrix"},{"title":"Configuration recipes","href":"/goldenmatch/recipes"},{"title":"Tuning \u0026 opt-ins","href":"/goldenmatch/tuning"},{"title":"Config linter","href":"/goldenmatch/config-linter"},{"title":"GoldenMatch API quick reference","href":"/goldenmatch/api-quick-reference"}]}]},{"group":"GoldenCheck","pages":[{"title":"GoldenCheck overview","href":"/goldencheck/overview"},{"title":"Checks","href":"/goldencheck/checks"},{"title":"Config matrix","href":"/goldencheck/config-matrix"},{"title":"Validation recipes","href":"/goldencheck/recipes"},{"title":"GoldenCheck CLI","href":"/goldencheck/cli"},{"title":"Native acceleration \u0026 deep profiling","href":"/goldencheck/native"},{"title":"GoldenCheck integrations","href":"/goldencheck/integrations"}]},{"group":"GoldenFlow","pages":[{"title":"GoldenFlow overview","href":"/goldenflow/overview"},{"title":"Transforms","href":"/goldenflow/transforms"},{"title":"Config matrix","href":"/goldenflow/config-matrix"},{"title":"Transform recipes","href":"/goldenflow/recipes"},{"title":"GoldenFlow CLI","href":"/goldenflow/cli"},{"title":"Native acceleration","href":"/goldenflow/native"},{"title":"Performance","description":"How GoldenFlow stays fast: vectorized Polars fast paths with a per-row fallback, and an optional Arrow-native Rust kernel for phone normalization.","href":"/goldenflow/performance"}]},{"group":"GoldenPipe","pages":[{"title":"GoldenPipe overview","href":"/goldenpipe/overview"},{"title":"Stages","description":"The GoldenPipe stage and adapter catalog: every built-in stage, the PipelineConfig / StageSpec shape, status enums, and how a pipeline is wired end to end.","href":"/goldenpipe/stages"},{"title":"Config matrix","href":"/goldenpipe/config-matrix"},{"title":"Pipeline recipes","href":"/goldenpipe/recipes"},{"title":"GoldenPipe CLI","href":"/goldenpipe/cli"}]},{"group":"GoldenAnalysis","pages":[{"title":"GoldenAnalysis overview","href":"/goldenanalysis/overview"},{"title":"Analyzers","href":"/goldenanalysis/analyzers"},{"title":"Cross-run analysis","href":"/goldenanalysis/cross-run"},{"title":"Config matrix","href":"/goldenanalysis/config-matrix"},{"title":"Analysis recipes","href":"/goldenanalysis/recipes"},{"title":"GoldenAnalysis CLI","href":"/goldenanalysis/cli"},{"title":"Native accelerator","href":"/goldenanalysis/native"}]},{"group":"InferMap","pages":[{"title":"InferMap overview","href":"/infermap/overview"},{"title":"Mapping","href":"/infermap/mapping"},{"title":"Config matrix","href":"/infermap/config-matrix"},{"title":"Mapping recipes","href":"/infermap/recipes"},{"title":"InferMap CLI","href":"/infermap/cli"},{"title":"Native acceleration","href":"/infermap/native"}]},{"group":"GoldenGraph","pages":[{"title":"GoldenGraph overview","href":"/goldengraph/overview"}]},{"group":"GoldenMatch KG","pages":[{"title":"GoldenMatch KG overview","href":"/goldenmatch-kg/overview"}]},{"group":"GoldenSuite MCP","pages":[{"title":"GoldenSuite MCP overview","href":"/goldensuite-mcp/overview"}]},{"group":"GoldenCheck types","pages":[{"title":"GoldenCheck types overview","href":"/goldencheck-types/overview"}]},{"group":"Golden Suite","pages":[{"title":"Golden Suite meta-package overview","href":"/golden-suite/overview"}]},{"group":"SQL extensions","pages":[{"title":"SQL extensions","href":"/extensions/sql"}]},{"group":"Reference","pages":[{"title":"Suite surface matrix","href":"/suite-matrix"},{"title":"Repo thesis weaknesses","href":"/thesis-weaknesses"},{"title":"API surface","href":"/reference/api-surface"},{"title":"Versioning policy","href":"/reference/versioning"},{"title":"ER vendor comparison","href":"/reference/vendor-comparison"}]},{"group":"Case studies","pages":[{"title":"Zero-config vs. hand-tuned Splink","href":"/case-studies/zero-config-vs-splink"}]},{"group":"Research","pages":[{"title":"Amortized Bayesian ER (exploratory)","href":"/research/amortized-bayesian-er"},{"title":"Landscape-sculpting ER (exploratory)","href":"/research/landscape-sculpting-er"}]}]}]},"basePath":"","title":"GoldenPipe overview - Golden Suite","buildId":"dpl_Aw98ji4XvBsgtZwL1VrkUF9ehFqz","deploymentId":"dpl_Aw98ji4XvBsgtZwL1VrkUF9ehFqz","dynamics":[],"chunks":[]}