01
Matching inconsistent employer names
During my summer placement at Fairstone Bank, I developed a program to compare a list of 770 employer names against more than 735,000 reference names using fuzzy matching. The purpose was to identify likely matches despite differences in how employer names were written.
I developed and iterated the program during the placement. This overview covers an early implementation; subsequent work added further features and optimizations.
Developed for internal use at Fairstone Bank. Source code and company data are not shared publicly; this case study summarizes my contribution and the workflow.
02
Early implementation
- Normalize names by standardizing case, punctuation, spacing, and common trailing company suffixes.
- Use RapidFuzz similarity scoring to rank likely candidates while preserving the original names for review.
- Apply configurable match and review thresholds, keeping uncertain results distinct from stronger candidates.
- Export a summary, ranked candidates, and action items to Excel for review.
The early Python version uses pandas for tabular processing, RapidFuzz for matching, openpyxl for workbook output, and Tkinter for its desktop interface. It pre-processes reference names once, caches repeated normalized queries, and limits retained candidates rather than building a full table of every possible pair.
03
Engineering considerations
Normalization helps reconcile naming variations, but can also erase distinctions between different employers. Similarity scores therefore support a review workflow rather than proving that two records identify the same organization.
The key tradeoff was finding useful candidate matches while keeping the output manageable and making ambiguous cases visible.
04
Weekly workflow impact
I built the program for the fraud team and continued to add features and optimizations after the early implementation described above. The weekly matching task previously took approximately 8 hours manually; with the program, it took about 5 minutes per week. These are workflow times from my experience, not a controlled benchmark.