A mid-size Indian NBFC with a multi-lender Line of Credit (LoC) book of 7,55,037 active loan accounts - and a roadmap to more than double that to 20,00,000 within two years. The business pledges loan receivables as collateral against credit lines from 20 institutional lenders. Every lender agreement carries its own eligibility rules for what can be pledged: DPD limits, CIBIL thresholds, state exclusions, employment type, loan product - and in two cases, portfolio-level constraints on average loan size and residual maturity that can't be evaluated loan-by-loan.
None of that was managed on a platform. Every month, the treasury team ran this entire cycle in Excel.
The allocation had a fixed deadline: before market open on the 1st of every month. Miss it, and the lender relationships are at risk.
At 7,55,000+ loans across 20 lender rule sets, that deadline was already hard to hit on a good month. Two people were spending 20 working days on the allocation, which meant the team was almost perpetually mid-cycle. Before the allocation could even start, someone spent 5 days manually scrubbing the loan file for bad records. And after all of that, the spreadsheet couldn't enforce the most basic compliance rule: no loan may be hypothecated to more than one lender in the same month. The team was logging roughly 850 double-hypothecation incidents a year - each one a technical breach of a lender agreement.
Two of the 20 lenders made the problem worse. Their agreements required the entire allocated pool to stay inside a target average POS band of ₹40,000-₹60,000 and a weighted average residual maturity of 12-15 months - simultaneously. That is a portfolio optimization problem; you cannot solve it by checking loans one by one. There was no realistic way to meet those constraints manually without also missing the monthly SLA.
The client came to KGT looking for a SaaS system that could replace Excel entirely.
No off-the-shelf treasury or loan management platform is built for 20 distinct, custom-versioned lender eligibility profiles - let alone the portfolio-level optimisation constraints two of those lenders required. The client needed a team that could work from a blank-page specification and deliver something production-ready, not a vendor pitching a configured product that would need workarounds for every non-standard rule. KGT's track record of building data-heavy, process-critical software in regulated environments - across financial services and industrial operations - and the ability to move from scoping to go-live in weeks rather than quarters, was what drove the decision.
We designed and deployed a full-stack hypothecation allocation platform: a step-by-step execution wizard for the treasury team on the front end, an automated allocation engine and data validation pipeline on the back end, and hard database-level compliance controls underneath all of it.
Each piece was built to close a specific gap in the old process:
Automated data validation. The treasury team uploads the monthly loan Excel file directly into the system, and it goes through a health-check pipeline immediately on upload: null checks, negative POS, state-name normalization, duplicate IDs. Flagged records route to a queue the team fixes and re-validates inline - no manual scrubbing, no separate Excel process. What used to take 5 days now runs in 15 minutes.
Rules engine for all 20 lenders. Every lender's eligibility criteria (DPD, CIBIL, state, employment type, product, age bands) is modeled as an independently versioned condition group the treasury team can clone and edit from the UI. No rule logic buried in spreadsheet columns.
6-step monthly waterfall. Handles breach re-validation, unmapping, free-pool aggregation, gap analysis, priority-ordered allocation, and concentration-cap checks in sequence, automatically. The process that took two people 20 days now runs in 3 hours.
Portfolio-level solvers for the two complex lenders. Two custom algorithms: a midpoint-convergence solver that optimizes the eligible pool toward the centre of the target POS and tenure bands, and a state-concentration solver that enforces a 10% per-state floor with automatic equal-split fallback. These are the constraints that had no manual solution.
Double-hypothecation lock. A unique constraint at the database level makes it structurally impossible to assign the same loan to two lenders in the same month. Every field change across the system writes to an immutable audit log.
What was genuinely hard: The portfolio-level constraints for two lenders had no off-the-shelf answer. An average POS band and a weighted average residual maturity can both be gamed by cherry-picking loans, but they cannot both be satisfied simultaneously without solving an optimization problem across the full eligible pool - at 7,55,000+ accounts. We had to design and test two separate solver algorithms against real loan data before we had confidence either would converge reliably inside the month-end deadline.
Tech Stack:
FastAPI · PostgreSQL · Redis (back end)
React 18 · TypeScript · TailwindCSS (front end)
Docker · Nginx (deployment)
Role-based access across Treasury User, Admin and Auditor roles
Timeline: 7 weeks, kickoff to production go-live. We ran it as an agile build, shipping each module to the client for review before moving to the next - which kept rework low and the pace fast.
A mid-size Indian NBFC with 7,55,037 active loan accounts replaced a 20-day, 2-person Excel-based hypothecation process with a 3-hour automated cycle, and went live in 7 weeks from kickoff.
Metric | Before KGT | After Deployment |
|---|---|---|
Month-end allocation cycle | 20 days, 2-person manual effort | 3 hours, 1 person, automated |
Double-hypothecation incidents / year | ~850 | 0 |
Time to validate & quarantine bad records | 5 days, manual Excel scrub | 15 minutes, automated |
Treasury person-hours per cycle | ~320 hours | ~3 hours |
The deployment recovered its full cost within three months of go-live - driven by the reduction in manual effort from ~320 person-hours per month-end cycle to 3 hours, and the elimination of compliance exposure from approximately 850 annual lender-agreement breaches.

