The VIVA Money mobile app is an example of the business transition from offline to online as a response to quarantine and restrictions on retail points of sale. According to local laws, loans requested via the Internet without full KYC procedure can only be issued for a limited amount (up to $200). Therefore, the goal was to develop a mobile application that provides full customer identification.
Android, Kotlin, Coroutines, MVVM, gRPC, Jetpack, Koin, Room, Firebase API (FCM, Config, Analytics), Golang, Camunda, REST / JSON, HTTP client-server, gRPC client-server, Key-Value, NoSQL
The main process performed with the app is the KYC (know your customer) procedure: to confirm their identities users, upload selfies and documents. This process is partially automated, but at a certain stage, operators participate in it. They check the documents and enter some of the information manually. It takes 10-15 minutes to complete the process, sometimes additional information is requested from the client.
Our analysts studied the procedure and found out that customers get tired of filling out long forms. We recommended the chat as a more convenient format. On the bank side, an information system participates in the dialogue, provides instructions and hints to a customer. When the application is approved, the client receives a PUSH notification, and a new message appears in the chat. While the loan application is pending, the client continues to browse the app and explore its functions and current offers of the company.
There are many steady banking business processes on the client-side. They are a chain of specific tasks, including data verification, loan offer preparation, processing a transaction, preparing documents, transferring money. Our task was to launch the lending processes from the mobile application and collect the data requested by these processes.
Together with the client, a Mobile Integration Service (MIS) was designed to interact between the services we have developed and its banking system. The client deployed MIS that is the API for two-way interaction: content from a mobile application and responses from business processes run through MIS.
The client chose a process management solution based on Camunda. This BPM eliminates the need for costly modifications to banking systems and frequent releases of mobile application updates. Camunda maps the business logic above banking systems. Camunda initiates processes in the bank system following the specified requirements.
The mobile application is a frontend for the following processes:
— sign up
— loan application
— transaction processing
— editing user data
— payments (including partial and early repayment)
— debt restructuring
These processes are implemented through Camunda as a sequence of specific typical tasks. User scenarios may differ. After uploading a passport photo, the application may ask for employment information, while another user gets a video selfie request. This flexible architecture allows us to create business processes from standard elements without modifying the mobile application.
Camunda supports Java language. 2 of our developers created business processes with Camunda.
In January 2021, the MVP was published on Google Play, then the product was updated in February. We developed a plan of new version releases and support until June 2021. There is only an Android app: the client doesn't need the iOS version.
The application allows VIVA Money customers to complete the KYC procedure. After that, they can receive loans in amounts more than $200. At the moment, the organization issues loans in amounts up to $1300 for 12 months with a high level of approval. This advantage distinguishes VIVA Money from most of its competitors and helps to expand distribution channels.
Only the apps certified according to PCI DSS can process, store, or transmit credit card information. The client's system is not certified according to this standard. Therefore, we used a third-party payment system.
The following process is implemented using the payment system:
1. When the user enters his bank card data, the application redirects him to a web page generated by the payment system (a browser component in the mobile application).
2. The user enters the details of his bank card.
3. The payment system saves the data and responds to the bank with the card identifier (token). All further operations with the card are carried out with the indication of the token.
We made a payment gateway to interact with the payment system and get the statuses of transactions. It contains high-level methods for a mobile application: add a card, pay. The gateway implements the rules of the payment system: invoice issues, holdings, cancellations of holding.
1 Go Senior developer worked on the payment gateway. Tech stack: Golang, REST / JSON, HTTP client-server, gRPC client-server, embedded and external data storage Key-Val / NoSQL, logging and message queuing services.
We agreed to work based on the T&M contract, but made a preliminary estimate. As the scope of works increased during the project, the budget was expanded by 15% of the original estimate.
The method of management is Kanban. On a special board in Jira, the client creates a change request. We translate the request into functional requirements on the developer board. All incoming requests are prioritized based on urgency and importance. Then we assess the scope of the tasks and specialists required to accomplish them.
We export tasks from Jira to the Merlin Project. PM builds there a so-called critical path that is the longest path that needs to be optimized. The goal of the optimization is to shorten release cycles by performing tasks in parallel and evenly distributing the workload to the team. For example, you can remove an insignificant feature and shorten the release period by a week. Based on the project plan, we give recommendations to the client, and he can change priorities, transferring features from release to release.
The project consists of stages with tasks and calendar terms. These stages end with releases. The release can be planned at any time at the request of the customer.