We recently shipped a huge improvement to our merchant extraction API (which you can try in the link above), and I wanted to share it and get your thoughts.
Our new approach consists of using custom Natural Language Processing and Named Entity Recognition models to predict
a) what substring of a bank transaction string represents a merchant e.g. "FACEBK" and
b) which canonical merchant e.g. "Facebook" this substring corresponds to in our merchant DB.
The toughest steps were to manually label thousands of bank transactions very carefully to use as training data, and to deploy the models in a production env where we need API response times to be under 200ms (usually what's required in order to incorporate this API in a payment auth flow).
We always optimize for accuracy (>99% currently), because we never want to return an incorrect merchant, but with this new approach our coverage is now at 80% of all bank transactions we see through our system.
We would love any feedback and comments, and also happy to answer any questions about the product or how we productionized it!