Inspiration
Over a billion people worldwide have no credit history, so traditional scoring can’t see them. Many of them still pay rent on time, recharge their phones regularly, and use UPI every day. We wanted to see whether that behavior could become a fair credit assessment. We also felt a score alone isn’t enough: if a model affects someone’s loan, that person should understand why. That led us to HI-04, Alternative Credit Scoring for the Unbanked, with explainability and fairness built in from the start.
What it does
CreditLens scores thin-file applicants from 0 to 100 using financial data plus alternative signals such as mobile recharge frequency, UPI transactions, and rent payment regularity. For each applicant it returns:
A risk tier (Low, Medium, or High) and a suggested loan band The top 3 factors that raised the score and the top 3 that lowered it, in plain language A fairness dashboard showing approval rates, disparate impact, and equal opportunity metrics across gender and region Batch scoring from CSV, plus model performance and calibration views How we built it Data pipeline: We cleaned a large public credit dataset (675 columns), engineered 21 features, and added alternative-data features. Those alternative features are synthetic, and we say so openly. We used a stratified 70/15/15 split and kept sensitive attributes out of the model. Models: A logistic regression baseline and a LightGBM classifier with 5-fold cross-validation, early stopping, and isotonic calibration. Explainability: SHAP TreeExplainer, with plain-language templates that turn feature impacts into sentences. Fairness: Fairlearn audits across gender and region, with mitigation analysis. Backend: FastAPI with Pydantic v2 validation and 8 REST endpoints, plus a pytest suite. Frontend: Next.js, React, TypeScript, Tailwind, and shadcn/ui, with TanStack Query and Recharts. Tooling: Docker and setup scripts for running locally. AI tools: We used Kiro IDE, Claude, and ChatGPT for code generation, debugging, documentation, and repo cleanup. We reviewed, tested, and integrated the output ourselves. Challenges we ran into Messy source data: The raw data had sentinel values, outliers, and heavy missingness that had to be fixed without leaking information across splits. No real alternative data: Real UPI, recharge, and rent data isn’t publicly available, so we generated synthetic stand-ins. That limited how much those features could help, and our AUC was about 0.55 against a 0.75 target. Keeping SHAP fast: We needed an explanation with every prediction while staying under about 2 seconds. Fairness is harder than dropping a column: Excluding gender and region from the model doesn’t remove proxy effects, so we built an audit to measure outcomes instead of assuming fairness. Connecting the full stack: Getting CORS, schemas, and typed API contracts to agree between Python and TypeScript took several rounds. Accomplishments that we’re proud of A complete working pipeline, from raw data to a usable UI, with an explanation on every score Fairness auditing treated as a core feature, not an afterthought Calibrated probabilities and plain-language explanations that a non-technical loan officer can read A tested backend (40+ tests) and a documented API Being upfront about our limitations, including the weak AUC and synthetic data, instead of presenting inflated claims What we learned An explainable, auditable model matters as much as an accurate one, especially in lending. Fairness takes ongoing measurement, and removing sensitive columns doesn’t remove bias. Synthetic data can demonstrate a pipeline, but it can’t prove predictive value. Real signal needs real data. Calibration and honest reporting build more trust than a headline metric. AI coding tools speed up development a lot, but they still need careful review, testing, and integration by people who understand the system. What’s next for CreditLens Validate on real alternative data (UPI, telecom, rent) with proper user consent, ideally with a lender, fintech, or NBFC partner Improve the model against real outcomes and test it on actual thin-file populations Add stronger bias mitigation, such as constrained training and drift monitoring Add consent management, privacy safeguards, and audit logs Add multilingual explanations for applicants and loan officers Deploy publicly with a live demo and an applicant-facing “how to improve your score” view
Built With
- claude
- docker
- fairlearn
- fastapi
- joblib
- kiro
- lightgbm
- next.js
- numpy
- pandas
- pyarrow
- pydantic
- pytest
- python
- react
- recharts
- scikit-learn
- shadcn-ui
- shap
- tailwind-css
- tanstack-query
- typescript
- uvicorn
- zod
Log in or sign up for Devpost to join the conversation.