Engineers Clinic
BeginnerSoftware trackFP-AI-02

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.

AI, Data & AnalyticsMachine Learning
6 Guided Steps47h Internship TierSubmit: GitHub repo with data generator, notebook and saved model + docs/cost_table.md + one-page note for the risk headVerified CertificateAI Rubric Graded
Program Overview

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.

Imbalanced classificationFeature engineering on transactionsPrecision-recall analysisCost-based thresholdingSynthetic data generationWriting for risk teams
What you submit

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

How it is graded
  • 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%

Learning Outcomes
Generate synthetic data with known patterns
build features from transaction histories without leaking the future
evaluate imbalanced models with PR curves
choose a threshold from business costs and capacity
explain a model decision to a risk owner
Target Audience

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.