So, we trawl IMAP to extract the addresses and find close matches for open orders with Levenshtein. Not perfect, especially when one customer places more than one order, but saves us a lot of time.
So, we trawl IMAP to extract the addresses and find close matches for open orders with Levenshtein. Not perfect, especially when one customer places more than one order, but saves us a lot of time.
We do use SmartyStreets to normalize the address before submitting, but the 3rd party uses something else. Also, address correction is a weird space. UPS, for example, delivers to many places that the USPS does not. Rural communities are especially tricky. UPS, Fedex, and USPS disagree on things like "Rural Route 24" vs "State Route 24" versus "Arizona Route 24".
That should give you the necessary match.
Also, address correction doesn't know anything about people's names, business names, etc. Sometimes you need those to disambiguate.
The best change I made was having them first enter zip code, then pick city/state from a list that goes with that zip code. Both Google and the USPS have apis for that mapping.
Also, fun fact: UPS charges me $15 if they have to make an address correction at delivery time. So, for example, if a customer fails to put a Suite number in, and the UPS software doesn't tell me it's missing, UPS charges me $15. I've complained that I shouldn't have to pay when their software fails. They don't care. Argh!
What I have works well enough. It shows the matches in a UI, so a human has final say.
The UI looks like this: https://imgur.com/a/C0GziSe (redacted to hide store/customer info). So it's easy to eyeball the match and make sure it's okay. One button to assign the tracking number. The "match %" field is derived from the Levenshtein distance.