UPI fraud-pattern detection with a cost-based alert threshold
Train a fraud model on synthetic UPI transactions and pick the alert threshold by rupees saved, not by accuracy.
Industry project · for Sahyadri Co-operative Bank, a 140-branch co-operative bank in Pune that runs its own UPI switch
Sahyadri Co-operative Bank processes about 9 lakh UPI transactions a day. Around 1 in 2,000 is later reported as fraud: mostly "collect request" scams, SIM-swap takeovers and mule accounts that receive many small payments and empty out within an hour. Last quarter customers reported ₹3.1 crore of fraud, and the bank refunded about a third of it.
Today the bank uses three hand-written rules, such as "block any transfer over ₹50,000 to a payee added in the last 24 hours". The rules catch about 30% of fraud and raise 4,000 false alerts a week. The fraud desk has six analysts. Each can review about 120 alerts a shift, so anything above roughly 700 alerts a day is simply not looked at.
The risk head wants to know whether a simple machine-learning model can do better, and she wants the answer in rupees. Missing a fraud costs the bank the average refunded loss (about ₹18,000). A false alert costs about ₹40 of analyst time plus an annoyed customer.
Real transaction data cannot leave the bank, so you will generate a realistic synthetic dataset with the fraud patterns built in, or use the public PaySim dataset as a stand-in. You will build a baseline from the current rules, train two models, and choose a threshold that minimises total cost within the 700-alerts-a-day limit.
Done looks like a notebook anyone can re-run, a cost table comparing rules and models, and a one-page note for the risk head with the threshold you recommend.
GitHub repo with data generator, notebook and saved model + docs/cost_table.md + one-page note for the risk head
Stack: Python, pandas, scikit-learn, matplotlib, Jupyter
- Honest evaluation30
The test set is a later time period than training, no feature uses future data, and PR-AUC and recall at the alert limit are reported.
- Cost-based threshold30
The recommended threshold minimises total rupee cost within 700 alerts a day, and the cost table shows rules, both models and the chosen point.
- Useful features20
At least six behavioural features (velocity, new payee, time of day, amount versus history) are built, explained and shown to matter.
- Note for the risk head20
One page that leads with the recommendation, gives rupees saved per month and alerts per day, and lists the main limits.
Pass 60% · Merit 75% · Distinction 90%
Engineering Students
Diploma, B.Tech, B.E., BCA, MCA, or M.Tech students seeking practical experience.
Aspiring Developers
Developers who want to build proof-of-work capstone projects for tech resumes.
Job Seekers
Graduates looking for AI-evaluated code review & verified industry credentials.