Master data management, minus the enterprise.
Every warehouse fills with names nobody agrees on — BCG, B.C.G., Boston Consulting Group. Zug Zug pins them to one approved record, and keeps the lists everything downstream depends on. Right next to your warehouse. One command to run.
Read-only in. Agreed by a human. Written back to your warehouse.
One pipeline, three moves. The warehouse is never touched unless you explicitly wire a writable adapter.
Scan
Point Zugzug at a warehouse column with a read-only credential. It pulls the distinct values still waiting for a mapping — each with a frequency count.
read-only·select distinctCurate
The team maps each source value to an approved record in a spreadsheet-fast grid — bulk merge, comments, roles, and a full audit trail.
drafts→reviewPublish
One act folds the drafts into a numbered version and materializes dim_ / map_ — pulled by whatever reads your warehouse, or pushed straight in.
Not entity resolution. Not an app builder.
Curated lists, and the mappings into them — materialized right where your warehouse can read them.
Reconcile the mess
Turn thousands of raw variants into one agreed key. The crosswalk lands in map_partner — one join and messy input resolves, wherever you already query your warehouse.
- frequency-ranked Review inbox
- bulk merge, skip, map-to
- who published what, and when
Maintain the list
The one dim_country or dim_currency list your dashboards and finance close depend on — edited in place like a spreadsheet, with owners and CSV import/export.
- typed columns, validation rules
- self-referencing hierarchies
- published v18, diffable history