Skip to main content
The config matrix is the exhaustive reference for every knob. This page is the opposite: a short set of task-shaped starting points. Find the row that looks like your problem, copy the config, point it at your columns, and run. You usually do not need a config at all. goldenmatch dedupe your.csv auto-tunes everything. Reach for a config when you want to pin the behavior for reproducible runs, override one decision the auto-tuner got wrong, or document the matching policy for review. Every config below is a complete, valid file (CI validates each one against the live schema, so they can’t drift). Run any of them with:

Deduplicate a customer list

You have a contact list under ~500K rows with names, emails, and addresses. You want to collapse duplicates with high precision. Match on exact normalized email first (near-zero false merges), then fall back to a fuzzy name comparison. adaptive blocking buckets on a last-name prefix and recursively splits any oversized bucket.
You have two systems (say a CRM and a billing export) totaling millions of rows on one machine. You want to link the same person across both without running out of memory. The chunked backend streams and caps peak memory. Block on a selective key (dob) so per-chunk pair counts stay bounded, and match on a name plus date-of-birth. date is typo-tolerant over ISO date digits; most_recent keeps the freshest value.

Match typo-heavy names

You have names full of transpositions, misspellings, and OCR noise. You want recall without exploding the comparison count. ensemble takes the best of several name scorers (Jaro-Winkler / token-sort / Soundex), so no single typo pattern sinks a true match. sorted_neighborhood slides a window over sorted records, which catches pairs an exact blocking key would miss when the key itself has a typo. longest_value keeps the most complete spelling.

Match messy postal addresses

You have addresses with inconsistent formatting, abbreviations, and unit ordering. You want them to match despite the noise. Standardize the address, state, and ZIP up front so formatting differences never reach the scorer. token_sort makes the street comparison order-insensitive (“12 Main St Apt 4” vs “Apt 4, 12 Main Street”), and an exact ZIP agreement anchors precision.

Deduplicate near-identical images

You have an image library with resized, re-encoded, or lightly edited duplicates. You want to find them by visual similarity, not by filename or bytes. phash scores perceptual-hash Hamming similarity, so a re-saved JPEG still matches its original. perceptual blocking is banded-Hamming LSH over those hashes, so only plausibly-similar images get compared.

Deduplicate at 100M+ rows

You have hundreds of millions of rows and a Ray cluster. You want a run that never materializes the full graph on the driver. The config below is an ordinary matching policy; what makes the run distributed is how you invoke it (backend: ray plus the distributed-pipeline env vars and a global __row_id__ column). Keep matchkeys cheap at scale and block on a high-cardinality key so per-partition pair counts stay small.
See Backends and scale for the cluster setup, the __row_id__ requirement, and the full distributed env reference.

Control the golden record

You have clusters that resolve fine, but the surviving values are wrong: a stale email wins, or a truncated name. You want per-field survivorship rules. Set a default_strategy for every field, then override the ones that matter. Here email follows a trusted source ranking and phone takes the most recently updated value. See the Survivorship strategies table for every option and when to pick it.