A person pastes a name ending in e followed by U+0301, then later enters the same name with U+00E9. In this hypothetical form, those spellings are canonically equivalent but can be different strings.
I would preserve the submitted spelling for display and derive an NFC key for lookup. The person sees what they submitted, while lookup does not distinguish these two spellings. The tradeoff is maintaining two representations and making it clear which one each operation uses. In JavaScript, normalize("NFC") names the transformation, but a TypeScript string annotation does not establish that it happened.
Is that a sensible default for display-name lookup if the product separately decides whether matching names may belong to different accounts? NFC does not choose that identity policy. Compatibility normalization and case folding would be separate choices, and normalization alone does not prevent visually confusable names.
I want the screen to preserve a person's spelling without letting one derived key silently decide who that person is.