Sanctions & PEP Screening Demo
Problem
Financial institutions must screen clients against sanctions and Politically Exposed Persons (PEP) lists every day.
Exact matching often fails because of spelling mistakes, different formats, or special characters.
This project shows how to use fuzzy matching to detect possible matches.
Data
- Sanctions list: OFAC SDN list (public data)
- Customers: Fake names generated with Python Faker
Approach
1. Take names from sanctions list
2. Generate fake customer names
3. Clean the names (uppercase, remove accents, punctuation, extra spaces)
4. Use rapidfuzz to calculate similarity scores
5. Flag customers if score is above a threshold (e.g. 85)
6. Show results in a Streamlit dashboard
Repo Structure
sanctions_pep_screening/
README.md
requirements.txt
.gitignore
LICENSE
data/
sdn.csv
sanctioned_names.csv
customers.csv
src/
screening.py
dashboards/
streamlit_app.py
docs/
screenshot.png
tests/
test_screening.py
How to Run
1. Clone the repo and go into the folder
git clone
cd sanctions_pep_screening
2. Create a virtual environment
python -m venv .venv
.venv\Scripts\activate (Windows)
source .venv/bin/activate (Mac/Linux)
3. Install requirements
pip install -r requirements.txt
4. Run the app
streamlit run dashboards/streamlit_app.py
5. Run tests
pytest -v