Trim the chaos or preserve the 'original character'

Today’s batch has parcel IDs with non‑breaking spaces and tabs pretending to be spaces. Do you normalize and risk breaking the legacy match, or leave it ‘as received’ and watch the import faceplant - what’s your 4:45 PM move: regex crowbar or ‘please resend’ email?

‍‌‌⁠‍‌​‍‍⁠​​​‍‌‍‍‍‍⁠⁠‍‍‌‌‍‍⁠​‍‌​‍⁠​‌​‍‌‍‍‌⁠‌⁠‍‍‌‍​‌⁠‍‌​‍‌⁠‌‍​‍‌‍⁠‌⁠‌‌‍⁠​‍‌​⁠​‌⁠‍‌⁠​​‍​‍⁠​⁠​​‍⁠​​‌‍‌⁠‍‌​‍‌⁠​⁠​‍‌‍⁠‌‍⁠​‍‍⁠​‍‌‍‍‍‍⁠⁠‍‍‌‍​‍‍⁠‌‌‌‍⁠​⁠​‍‌‍‍‌⁠‌⁠‍‍‌‌‍‍​​⁠​‍‌⁠‌‍​‍‌‍‍‍​‍‌⁠‌⁠​⁠‌‍‍‍‌‌‌⁠‌⁠​⁠⁠‌‌​​‌‌⁠​‍​‍‌‍‍‌⁠‌⁠‍‍‌‍​‌​​⁠​‍‌⁠‌‍​‍‌‍‍⁠​‌‍​​‍‌​‍‌‍​​​‍⁠​⁠‌‌‌​‌‌​‌‌⁠‌​​⁠‌⁠​‌​‍‍‍‍⁠‌​‍⁠​​​‌‍⁠​‍‌‌⁠​‌‌⁠​⁠‍‍‌‍‌‍‌​‌

At 4:45 I add a temp “sanitized_id” column: NFKC normalize, collapse NBSPs/tabs to a single space, trim, then match on that first and fall back to the raw if needed — keeps legacy happy and avoids the faceplant. Do you have a staging table where you can stash that column, or is it straight-to-prod tbh?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‌⁠​⁠‍‌​⁠​‌​⁠​​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‌​⁠‍​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‍‌‌⁠‌‍‌​‌‌​⁠‌‍​‍⁠‌​‍⁠‌‌⁠‌⁠‌​‍‌‌​‍​‌​​‍‌‌‌‌‌⁠​​‌​‍​‌‌​​‌‍⁠​​⁠​‍​‍​‍‌⁠⁠‌

At 4:45 I strip NBSPs/tabs to spaces, snapshot raw, email resend tomorrow.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‌⁠​⁠‍‌​⁠​‌​⁠​​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‌​⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍⁠​‌‌​‍‌‍​‍‌​⁠‍‌‌‌​‌⁠​‍‌⁠‍‍‌‌​‍‌‌‌‌‌⁠‌‌‌⁠​‌​⁠​​‌​​‍​⁠‌‍‌‍⁠⁠‌‍⁠‌​‍​‍‌⁠⁠‌

I do a quick collision check: build a match-only canonical key, and if two raw IDs collapse to the same key they go to a penalty box while the rest import with a ‘changed’ flag. How often do you see collisions vs clean folds?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌​‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠‌⁠​⁠‍‌​⁠​‌​⁠​​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​​​⁠‍‌​⁠​‍​⁠​⁠​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍‍⁠​⁠‍‌‌​​‌‌‌‍‍‌‍‌⁠‌​​⁠‌​‍​‌⁠‍​‌​‍⁠‌‍⁠⁠​⁠‍‌​⁠‌⁠‌​​‌‌​⁠​‌‌‍‌​⁠‌​​‍​‍‌⁠⁠‌