Engineers Clinic
AdvancedSoftware trackFP-AI-10

Credit-default model with fairness checks and a reason for every decision

Build a default-risk model on a public credit dataset, check it for unfair outcomes across age and sex, and give every declined applicant specific, accurate reasons.

AI, Data & AnalyticsAI Model Fine-Tuning
6 Guided Steps45h Internship TierSubmit: GitHub repo + reports/validation.md + reports/fairness.md + reason-code module with tests + two-page committee memoVerified CertificateAI Rubric Graded
Program Overview

Industry project · for Harbourline Credit, a digital lender issuing credit cards and small personal loans to about 210,000 customers

Harbourline approves about 6,000 credit-card applications a month. Its current scorecard was built five years ago and the regulator has asked two pointed questions: can you show the model treats similar applicants similarly regardless of sex and age, and can you tell every declined customer the main reasons in plain language?

The chief risk officer wants a replacement model, but she is clear that accuracy alone will not get it approved. The model-risk committee will look at three things: how well it ranks risk, whether approval and error rates differ across groups by more than agreed limits, and whether the reasons given to customers are faithful to what the model actually did.

You will use the public UCI "Default of credit card clients" dataset (30,000 customers, 23 features including credit limit, payment history and bill amounts, plus sex, education, marriage and age). You will train an interpretable baseline and a gradient-boosted model, pick an approval cut-off for a target default rate of 6% among approved applicants, and then audit both models for group fairness. Sex and age must not be model inputs, but you will keep them aside for the audit.

The committee's limits: - approval rates between groups within a ratio of 0.8; - true-positive rates within 5 percentage points; - each decline must come with up to four reasons, each tied to a feature that genuinely lowered the score.

Done looks like a model pack: code, a validation report with AUC and calibration, a fairness report with the numbers against the limits and any mitigation you tried, a reason-code generator with tests, and a short memo to the committee.

Credit risk modellingModel calibrationFairness metricsExplainability (SHAP and reason codes)Model documentationBias mitigation
What you submit

GitHub repo + reports/validation.md + reports/fairness.md + reason-code module with tests + two-page committee memo

Stack: Python, scikit-learn, LightGBM, SHAP, Fairlearn, pandas

How it is graded
  • Sound risk model25

    Both models are validated on a held-out set with AUC, a calibration plot and a cut-off that achieves about 6% default among approved applicants.

  • Fairness audit30

    Approval-rate ratio and true-positive-rate gap are reported for sex and age bands against the committee limits, with intervals and at least one mitigation tested.

  • Faithful reasons25

    Every decline gets up to four plain-language reasons tied to features that lowered its score, and tests prove the reasons match the model.

  • Committee-ready documentation20

    The memo states the recommendation, the trade-offs between accuracy and fairness, and the conditions for approval.

Pass 60% · Merit 75% · Distinction 90%

Learning Outcomes
Build and calibrate a credit-default model
choose a cut-off from a target default rate
measure group fairness with standard metrics
try and evaluate a mitigation
generate faithful reason codes
document a model for a risk committee
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.