Who this was for
A consumer lending fintech in the United States originating loans through partner channels. The company name, origination volumes and product terms are withheld under NDA; the programme was run with the client's head of credit and head of engineering.
The problem pattern
Applications arrived as email attachments, were tracked in spreadsheets and approved through chat messages. Credit decisions existed mostly in memory, audits required archaeology, and the servicing system received data that a human had re-keyed — so errors surfaced only when a borrower called.
What made it hard
The workflow had to encode credit policy without freezing it, preserve separation of duties for approvals, keep every state change attributable, and integrate with an origination system the client could not replace during the programme — all while the existing process kept running.
How the work was sequenced
- Documented the current decision flow with credit officers, distinguishing policy from habit, then modelled it as explicit states with role-gated transitions and maker-checker approval.
- Built document intake with structured extraction and a human verification step, because an unreviewed extraction error in lending becomes a compliance issue rather than a typo.
- Integrated with the servicing system behind a versioned interface with signature verification, replay protection and daily reconciliation against the lending ledger.
- Ran parallel processing for six weeks where every live application entered both systems, comparing outcomes before switching the source of truth over.
The solution in operation
A workflow platform covering intake, verification, credit decisioning with configurable policy rules, approval controls, and export to the servicing system — with an undirected audit trail of every state change and actor, an operations queue ranked by ageing and missing information, and reporting that generates from transactional records rather than a parallel spreadsheet.
Solution architecture
Timeline
26 weeks in two phases: ten weeks to intake, verification and the operations queue; sixteen weeks to decisioning, approval controls and servicing integration, with six of those weeks running parallel to the legacy process.
Reported results
- Clean-file applications moved from decision to disbursement in under one working day, against three days previously.
- Underwriting work visible in a single ranked queue, replacing four overlapping spreadsheets as the operational source of truth.
- Every state change recorded with actor, timestamp and rationale — assembling the evidence pack for an external review took days rather than weeks.
- Re-keying into the servicing system removed from the standard path, with daily reconciliation covering the remainder.
What we took from it
- Separating policy configuration from engine behaviour let credit change rules without a deployment — which is what made operations willing to adopt it.
- Parallel running for six weeks was expensive and resolved the only question that mattered: whether recorded outcomes matched the old process.
- Building the audit trail continuously rather than at the end meant the evidence pack was a query, not a project.
Tools and technologies
TypeScript · Node.js · PostgreSQL · Document processing · Event queue · AWS