Skip to main content
GoldenFlow standardizes, reshapes, and normalizes messy data before it enters a pipeline. In zero-config mode it auto-detects quality issues and applies safe transforms. It ships 92 built-in transforms across 11 categories (text, phone, name, address, date, categorical, numeric, email, identifiers, URLs, and auto-correct), plus domain packs for healthcare, finance, ecommerce, people/HR, real estate, and carceral. The identifiers group includes checksummed/structural validators/formatters for payment cards (Luhn), IBAN (mod-97), ISBN, EAN/UPC, EU VAT, SWIFT/BIC, US ABA routing numbers, and IMEI, running on owned Rust kernels. The name group includes two owned i18n kernels: name_transliterate (deterministic Unicode-to-ASCII fold via a curated map) and name_script (dominant-script detection). It scores 100/100 on the DQBench transform benchmarks.

CLI reference

Commands, flags, and the config format.

Performance

Vectorized fast paths and the optional Arrow-native phone kernel.

Install

Extras: goldenflow[check] adds GoldenCheck integration, goldenflow[mcp] adds the MCP server, and goldenflow[all] brings everything.

Quickstart

Zero-config auto-detect:
In Python:
In TypeScript:

Key features

  • Zero-config mode: auto-detects column types and applies safe transforms.
  • 113 transforms across 13 categories, including phonetic blocking keys (soundex, double_metaphone), company/org dedup, email/URL dedup keys, checksummed/structural identifiers (payment card, IBAN, ISBN, EAN/UPC, EU VAT, SWIFT/BIC, ABA routing, IMEI, ISIN, CUSIP, NPI, Luhn) and owned i18n name kernels (name_transliterate, name_script).
  • 6 domain packs: healthcare, finance, ecommerce, people/HR, real estate, and carceral.
  • Audit trail: a JSON manifest of every transform, which rows changed, and before/after samples.
  • Schema mapping: auto-map columns between systems by name similarity and data profiling.
  • Streaming: process large files in chunks via StreamProcessor.
  • Cloud connectors: transparent s3:// and gs:// paths.
  • Watch and schedule: auto-transform new files, or run on an interval.
  • LLM-enhanced mode: optional categorical corrections via --llm.
  • Polars-native, with Jupyter-friendly rich rendering. Date and phone normalization use vectorized fast paths (≈14× faster end-to-end), plus an optional Arrow-native Rust kernel for the phone tail.

Configured transforms

Polars-free transform()

goldenflow.transform() runs the same transforms on the native/Arrow substrate with Polars never imported. It takes a dict[str, list] or a file path (.csv / .parquet / .xlsx), and returns a ColumnarResult (.columns + .manifest, with an opt-in .to_polars()):
transform_df(pl.DataFrame) stays as the Polars-backend adapter. Install optional backends with pip install goldenflow[polars] (bulk-vectorized backend + pl.read_*) or goldenflow[parquet] (pyarrow, for Polars-free Parquet read).

Schema mapping

Streaming

SQL (DuckDB)

GoldenFlow’s transforms also ship as a zero-Python DuckDB extension (goldenflow-duckdb) — a compiled Rust extension that links the same reference kernels straight into DuckDB, so the transforms run natively in the query engine, byte-identical to the Python / TypeScript / WASM surfaces. 98 transforms are exposed as goldenflow_<kernel> SQL functions:
Download the per-platform zip from the goldenflow-duckdb-v* release assets (linux / macOS / Windows; loads on DuckDB >= 1.3.0).