jakloan

Redefining Retail Banking: How We Built JakLoan, Bank DKI’s Enterprise-Grade Mobile Lending Ecosystem
Every modern bank faces a defining moment when legacy systems transition from being dependable workhorses to operational bottlenecks. For Bank DKI, a premier regional financial institution, that moment arrived in their loan origination department. Historically, when a small business owner sought a micro-loan, or a civil servant applied for multi-purpose financing, they embarked on a paper-heavy journey. Credit officers spent days traveling between field audits, regional offices, and physical filing cabinets. Collecting applicant documents, manually checking credit bureaus, and drafting paper-based risk assessments regularly stretched turnaround times from days to weeks.
As a product and engineering team, we were tasked with a massive undertaking: completely digitize and automate Bank DKI’s end-to-end loan origination and credit underwriting lifecycle. The result of our work was JakLoan, an enterprise-grade suite of native Android applications that transformed the bank's manual workflows into a highly efficient, mobile-first experience.
To cater to different lending markets, we split the platform into two distinct applications: a multi-product core application supporting Micro (Mikro) and Sharia-compliant (Syariah) financing, and a specialized, streamlined app built exclusively for Multi-Purpose Loans (Kredit Multiguna - KMG) targeting payroll clients and civil servants. This is the story of how we designed, architected, and delivered this transformation.
The Challenge: Privacy, Legacy Friction, and the Offline Reality
When we began mapping the user journeys for our key persona—the field Account Officer—we quickly realized that building a standard consumer-facing banking app would not suffice. These officers spent their days in bustling traditional markets, remote construction sites, and municipal offices where internet connectivity was highly unpredictable. Yet, they were required to capture highly sensitive Personally Identifiable Information, scan official identity documents, verify business addresses, and run complex financial calculations on the fly.
We faced three primary challenges. First, we had to ensure total security and regulatory compliance. We were dealing with sensitive data from Dukcapil and financial histories from the Indonesian credit bureau (SLIK OJK). Any local data leakage would be catastrophic, meaning our storage and transmission protocols had to be incredibly secure.
Second, we had to overcome offline friction. An Account Officer standing in a remote market stall couldn't afford to lose an entire loan application draft just because their network connection dropped. The application needed to operate on an offline-first paradigm, saving complex form states, geotags, and high-resolution photo uploads locally, and then syncing them seamlessly when a connection was re-established.
Finally, we had to manage business logic complexity. The platform needed to support conventional micro-loans requiring physical collateral evaluations, Sharia-compliant financing with specialized profit-margin calculations and contract selections, and streamlined payroll loans that required integration with government employer databases. Managing these varying workflows in a single codebase would have resulted in an unmaintainable system, prompting us to design a highly modular, dual-application architecture.
The Technical Strategy: Modular Architecture & Offline-First Security
To lay a solid foundation for the JakLoan ecosystem, our team adopted a native Android stack powered by Kotlin and Java, utilizing Android Studio as our primary development environment. We structured the applications using Clean Architecture principles combined with the Model-View-ViewModel design pattern and the Repository Pattern. This division of concerns kept our business logic decoupled from the UI, allowing us to maintain high testability and easily swap out data sources.
For dependency injection, we implemented Google Hilt and Dagger2 to manage dependencies like our API clients and local repositories across the application lifecycle. Our local data persistence relied on a Room Database acting as an offline cache. When an officer initiated a field visit or a canvassing activity via the saveDataCanvasing routine, the application wrote directly to Room.
An offline state manager tracked sync statuses, using background services like SignalStrengthLevel to monitor connectivity. If the signal was strong, the app synced the offline queue back to our servers using Retrofit2 and OkHttp3, backed by robust Moshi JSON serialization and custom Kotlin adapters.
Security was integrated directly into our data layer. To prevent man-in-the-middle attacks, we enforced strict SSL Certificate Pinning on our API endpoints, targeting Bank DKI's secure domains. Any data stored locally, such as active session data, was kept within Encrypted SharedPreferences using PrefData.
We also integrated a session guard mechanism powered by background services like LogoutService. This service actively monitored network changes and user inactivity, wiping sensitive memory references and logging the user out if suspicious activity was detected. During development, we used Chucker as a network interceptor to debug APIs, but we configured our build variants to completely strip Chucker and redact all authorization headers before compiling production builds.
Behind the Features: A Day in the Field with JakLoan
To truly understand how these technical strategies translated into business value, we can trace the journey of an Account Officer named Budi as he used JakLoan to process a micro-business loan application in the field.
Budi started his morning by opening the JakLoan app. The pipeline dashboard immediately presented him with his daily schedule, displaying active leads, pending follow-ups, and his geotagged canvassing targets. When he arrived at a local market to meet an applicant, Budi opened the digital e-Form module.
Instead of typing out long forms, he launched the custom camera interface. The app utilized an on-device OCR scanner to capture the applicant's Indonesian KTP card, instantly parsing the name, address, and national identity number into the form fields. This data was then verified in real-time against the Dukcapil national database.
With the applicant's identity validated, Budi performed an instant prescreening check. The app dispatched an API request to the central credit bureau, querying the SLIK OJK database. Within moments, Budi downloaded and reviewed a comprehensive credit report.
If the client passed this initial check, the app adjusted the available loan limits based on government subsidy records via our database integration, minimizing early-stage risk.
Next, Budi conducted the on-site physical audit. He captured verified GPS coordinates and site photos of the applicant's stall, and evaluated their collateral. The Core app’s multi-collateral engine allowed him to process five distinct collateral types, from real estate to market stall permits, evaluating business health directly from his mobile device.
For Sharia-compliant applicants, the application automatically recalculated profit margins and verified contract agreements on the spot.
Once the data collection was complete, the application's built-in credit scoring engine computed a real-time risk rating. Budi submitted the completed file, which routed the application to the regional Branch Manager.
Back at the branch, the manager reviewed the comprehensive credit analysis memo, approved the request, and generated an official digital loan offering letter. Budi was then able to download and print the approved document for the client on the very same day.
Outcomes & Delivering the Future of Retail Lending
By replacing slow, paper-based processes with an integrated, mobile-first experience, we significantly improved Bank DKI's credit underwriting lifecycle. The implementation of JakLoan reduced the bank's average loan processing turnaround time by approximately 60%. What once took several days of manual data entry, physical verification, and administrative routing was reduced to a few hours of streamlined mobile operations.
This reduction in processing times also enhanced risk management. By automating identity checks via Dukcapil and integrating real-time credit bureau reporting, we helped the bank significantly reduce identity fraud and early-stage credit defaults.
Furthermore, requiring verified GPS geotagging for all field visits ensured that audits were completed accurately on-site, providing regional branch managers with clear visibility into their field teams' activities.

Key Takeaways & Lessons from the Field
Building JakLoan taught our team several key lessons about deploying enterprise-grade digital systems within legacy banking environments.
First, we learned that designing for the offline user experience is just as critical as writing secure backend code. By prioritizing an offline-first architecture using Room and background synchronization services, we ensured that credit officers could work efficiently without being hindered by spotty mobile connections.
Second, we discovered the value of prioritizing modularity early in the development lifecycle. Splitting the platform into a Core application and a specialized KMG app allowed us to deliver two tailored user experiences without overcomplicating our codebase. This clean separation of concerns made it much easier to maintain, test, and scale both applications independently.
Ultimately, JakLoan demonstrated that traditional banking workflows can be successfully modernized without compromising on security or regulatory compliance. By combining clean Android architecture with robust security and a user-friendly mobile experience, we helped Bank DKI transition into a faster, more agile, and paperless digital lending era.