How we crafted a loan e-service with a powerful decision engine Tiit, Erik, 06 May 2019
In early 2018 Coop Pank, a newcomer in the Estonian banking market was looking for partners to build a new loan system. The old system was not fulfilling all their needs. We thought - we know banking and we are ready for new challenges. We got the mandate to build it.
When one thinks of a loan system, then probably keywords like big, complex, slow, labour-intensive reporting and regulatory needs come into mind. Should it be like this? We proved that it can be done differently and in a reasonable time-frame. In short, initially seemingly complex systems do not require years to build. Having good focus and a good small team - a lot can be accomplished in a short time!
In less than a year, a full-blown loan system was ready.
Custom built from scratch with a strict deadline. Full cycle e-service including front end and back office. Full history migrated to the new system as well.
What else made this project so special?
1. Decision engine
The bank wanted a highly configurable engine which would be easy to configure, quick and reliable. Their wish to use Camunda BPMN backfired quickly as it provided none of the required qualities.
Instead, we built a custom engine, which:
- is configurable to the required extent
- provides a prompt answer to the customer
- makes queries to multiple external systems (both inside and outside of the bank)
- has a list of mandatory checks with some configurable properties
- retries on all failures with a backoff strategy
- has a scripting option for calculating the final offer which can be modified on-the-fly by the risk management team
- takes into account previous and existing liabilities and customer’s payment discipline
- has an upselling feature which the bank can use to make automatically larger loan offers
In short, a powerful tool to define a product, risk, interest, segment, you name it and operated daily by the bank staff without developers’ assistance.
2. Dynamic balance calculation
The system is able to quickly calculate the balance of any contract for any past or future date. Balance calculation does not require any overnight processes and only relies on the recorded facts of a contract - its payment schedule, actual payments, etc.
This allows for flexible adjustments in case of changes that affect past dates. It is the Event Sourcing pattern - we store the events that affect contract state and are able to calculate the state for any moment in time. This allows the system to be online all the time, there are no moments where the provided data is stale.
3. Accounting transactions & reporting
An important part of the system is the daily generation of accounting transactions which are then sent to Dynamics NAV. There is a long list of situations in each contract’s lifecycle which require specific accounting transactions - starting from daily accrual of interest, regular repayments, received penalties and ending with monthly provisions and income adjustments. Closely related are monthly reporting requirements to financial authorities.
Most reports are generated automatically and based on the same logic that is used for accounting. This results in minimal manual work for accountants and less errors. The numbers in the balance sheet match exactly the numbers in the reports.
The public side of the loan application
That all is packaged into a full cycle e-service from the end user perspective:
- Choose the loan product
- Upload required docs (e.g. account statement)
- Receive offer
- Accept and sign
- Get funds
- Start servicing (e.g. view status and schedule, manage contract parameters like debiting day etc and pay back.)