BACK TO WORK

BRISPOT Pemrakarsa

Role
Android Engineer
Year
2020—PRESENT
Category
Professional
[KOTLIN][MVVM][CLEAN_ARCHITECTURE][ROOM][RETROFIT][FIREBASE]

01 — Context

BRISPOT Pemrakarsa is a mission-critical enterprise application used by Relationship Managers (RM) at Bank Rakyat Indonesia — one of Indonesia's largest state-owned banks. It is the primary tool for initiating loan proposals directly from the field: collecting customer data, analyzing credit eligibility, managing supporting documents, and submitting completed proposals into the core banking system.

The application operates at significant scale, handling daily loan proposal workflows across the bank's nationwide network of relationship managers.

02 — Role

Android Developer. I contributed to feature development, performance optimization, bug resolution, and continuous improvement of the application across multiple release cycles, working within an Agile/Scrum team alongside backend engineers, QA, and business analysts.

03 — Engineering

The core technical challenge of Pemrakarsa is managing complex, multi-step business workflows with stateful data across unstable network conditions. Field staff cannot always rely on stable connectivity, so the application must remain functional and data-consistent even in degraded network environments.

Architecture

  • Clean Architecture + MVVM: Strict separation of concerns across Domain, Data, and Presentation layers. Feature modules are isolated, making large codebase navigation and maintenance tractable.
  • Domain Layer: Use cases encapsulate the loan proposal business rules. These are independently unit-testable without Android tooling.
  • Presentation Layer: ViewModels expose StateFlow-backed UI state. The UI is a pure observer — no business logic in Compose or XML views.

Data Management

  • Room Database: Local caching of customer data and proposal state ensures RMs can continue working in areas with poor connectivity. Data sync strategies handle reconciliation when connectivity resumes.
  • Retrofit + OkHttp: Encrypted communication with core banking REST APIs. Certificate pinning and custom interceptors handle authentication and request logging.

Observability

  • Firebase Crashlytics: Production crash reporting and stability monitoring.
  • Firebase Remote Config: Feature flag management without requiring Play Store releases.

04 — Engineering Challenges

Synchronizing multiple asynchronous data sources while keeping UI state predictable.

Loan proposals involve data from multiple sources: local drafts, remote customer profiles, collateral lookups, and document uploads. Coordinating these into a coherent, non-contradictory UI state — especially when some sources are unavailable — requires careful state machine design and explicit error handling.

Managing large file uploads on mobile networks.

Supporting document upload (KYC documents, photos, collateral evidence) involves compressing, chunking, and reliably transmitting files over unstable mobile connections. Failure recovery and progress tracking are handled at the data layer, invisible to the UI.

05 — Contributions

  • Developed and maintained Android features across multiple production release cycles
  • Integrated REST API endpoints for loan proposal submission workflows
  • Implemented and maintained local data caching with Room for offline reliability
  • Worked on reactive state management using Kotlin Coroutines and Flow
  • Contributed to code refactoring efforts to improve maintainability and test coverage
  • Collaborated with backend, QA, and business teams in Agile sprints

06 — Technologies

KOTLIN          Primary language
MVVM            Presentation architecture
CLEAN ARCH      Layer separation
ROOM            Local persistence / offline support
RETROFIT        REST API networking
FIREBASE        Crash reporting, remote config
COROUTINES      Async / concurrency
FLOW            Reactive state management