Financial institutions need to classify customers into Low, Medium, or High Risk for AML (Anti-Money Laundering) purposes.
This is often done manually, which is slow and inconsistent.
This project demonstrates a rules-based KYC risk scoring engine built in SQL, with results visualised in a Power BI dashboard.
- Mock dataset with 1,500 synthetic customers.
- Fields include:
customer_id
– Unique IDname
– Customer namecountry
– Country of residenceindustry
– Industry sectormonthly_txn_volume
– Avg monthly transactionspep_flag
– Politically Exposed Person (0/1)adverse_media_flag
– Adverse media (0/1)onboarding_date
– When customer was onboarded
Disclaimer: Data is fully synthetic, for demo purposes only.
-
SQL (MSSMS)
- Created
kyc_customers
table. - Built
kyc_risk_scores
view with scoring rules:- High-risk country → +50
- Medium-risk country → +25
- High-risk industry → +30
- Medium-risk industry → +15
- High transaction volume → +20
- Medium transaction volume → +10
- PEP flag → +40
- Adverse media flag → +40
Risk tiers:
- 0–40 → Low
- 41–70 → Medium
- 71+ → High
- Created
-
Power BI Dashboard
- KPI cards: Total customers, % PEP, % Adverse Media
- Donut chart: Risk tier distribution
- Stacked bar: Risk by Country, Risk by Industry
- Scatter plot: Transaction Volume vs Risk Score
- Slicers: Risk Tier + Industry
- Run
sql/create_table.sql
to create thekyc_customers
schema. - Import
data/mock_kyc_customers.csv
into the table. - Run
sql/create_view.sql
to generate thekyc_risk_scores
view.
- Open
dashboards/kyc_risk_dashboard.pbix
. - Connect to SQL Server database (
KYCRiskDB
). - Use slicers to filter by industry or risk tier, and explore the dashboard.
kyc-risk-dashboard/ README.md LICENSE .gitignore data/ mock_kyc_customers.csv sql/ create_table.sql create_view.sql dashboards/ kyc_risk_dashboard.pbix docs/ dashboard_overview.png risk_by_country.png scatter_plot.png
MIT License