All projects

Quadrant Technologies

Scoring Service

A credit-scoring and loan-decisioning engine built on scorecards and a rules layer.

Role — Primary implementer of the current scoring architecture.

PythonDjangoDRFPostgreSQLCeleryRedisPMMLDocker

Problem

Lending partners needed a way to turn raw banking data into approve or reject decisions and approved limits, without hardcoding a new scorecard for every product. That meant supporting several scorecards at once, scoping decisions by organization and product, and keeping things fast even as score requests piled up.

My role

I took over the scoring service during its current phase and pushed it forward: multi-scorecard support, org and product scoping, dedup work to speed up repeated score requests, hardening around edge cases in the rules layer, and getting the whole thing running reliably in Docker. Some of the original foundation predates me. I focused on the parts that made it production-ready at scale.

Architecture

A Django/DRF service sits in front of PostgreSQL. Score requests carry customer banking signals, salary, account age, transaction and turnover history, loan history. PMML scorecards produce a score, and a configurable rules engine turns that into a decision: approve, reject, rejection reason, and approved limit. Celery and Redis handle the async and scheduled pieces. The service supports several scorecard variants, including MSME and IFB-oriented paths, scoped by organization and product so different partners can share the same engine without forking the logic.

Technical highlights

  • Multi-scorecard support scoped by organization and product, so new lending products reuse the engine instead of forking it.
  • Dedup and indexing work on score requests to keep decisioning fast under repeated load.
  • Multi-stage Docker setup so local and production environments actually match.

Simplified flow

Banking features in

Request payload

PMML scorecards

Score evaluation

Rules engine

Rule evaluation

Decision out

Approve / reject + limit

Celery / Redis

Async layer