[ master data · next to your warehouse ]

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.

dim_partner · junction v18 · published
source values approved record
"BCG"×4,102
"B.C.G."×880
"Boston Consulting Group"×213
published
key · boston_consulting_group
Boston Consulting Group
dim_partner
map_partner
left join map_partner using (raw_partner_name) left join dim_partner using (key)
[ the loop ]

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.

1 warehouse column

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 distinct
2 the review grid

Curate

The team maps each source value to an approved record in a spreadsheet-fast grid — bulk merge, comments, roles, and a full audit trail.

draftsreview
3 dim_ / map_ tables

Publish

One act folds the drafts into a numbered version and materializes dim_ / map_ — pulled by whatever reads your warehouse, or pushed straight in.

v18·pull-first
[ two surfaces, one grid ]

Not entity resolution. Not an app builder.

Curated lists, and the mappings into them — materialized right where your warehouse can read them.

value mapping

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
reference tables

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
[ no warehouse or account needed ]

See it agree on a name in 30 seconds.

zugzug — bash
$ git clone https://github.com/Fredehagelund92/zugzug.git
$ cd zugzug
$ docker compose up
# http://localhost:8080 — first user becomes admin