Full-stack & mobile engineer (10+ years) with a dual background: enterprise backend experience in banking (Java, .NET C#) combined with modern AI-native product development across Web, Android, and iOS.
I design and deliver software where AI models and autonomous agents (Claude Code, Cursor, Kilo, Opencode) are built directly into the architectural fabric — backed by deterministic guardrails, clean domain layers, and strict contract typing.
I combine enterprise-grade backend discipline with AI-accelerated workflows to ship production software at 3x velocity without compromising architectural rigor.
10+
Years shipping software
3
National banks served
5
Platforms (Web · iOS · Android · API · AI)
3
Countries: ID, SG, PH (+ AU clients)
Key Engineering Highlights
Modern Full-Stack & Mobile
End-to-end delivery across React, Kotlin (Android), and Swift (iOS) driven by a unified OpenAPI spec, Supabase/PostgreSQL backends (RLS, RPCs), and Deno Edge Functions.
Custom Agent Tooling & MCP
Architected custom Model Context Protocol (MCP) servers to automate multi-language client codegen (Kotlin/Swift/TS) and enforce monorepo contract integrity across platforms.
Applied Computer Vision & ML
Designed a scale-invariant facial search engine using Google Cloud Vision and hand-designed geometric scoring algorithms (inter-eye landmarks + exponential decay weighting).
Payments & Webhooks
Integrated Airwallex marketplace payments featuring HMAC-SHA256 signature verification, KYC onboarding, and idempotent event handling.
Enterprise & Banking Backends
Proven track record in banking environments managing mission-critical Java, .NET C#, and SQL backend infrastructure built for security, high availability, and compliance.
$ Skills
// What I work with
Grouped by discipline — no fake proficiency bars. Depth is proven in the stories and experience below.
Languages & Backends
Kotlin
Java
Swift
Python
TypeScript
.NET C#
SQL
Deno
Supabase
PostgreSQL
REST / OpenAPI
Mobile
Android (Jetpack Compose)
iOS (SwiftUI)
React Native (Expo)
Kotlin Coroutines / Flow
RxJava
Offline-first (Room, Realm)
Health Connect API
Web & Frontend
React
TypeScript
Next.js
Tailwind CSS
Monorepo (pnpm / Turbo)
AI & Agents
Custom MCP Servers
AI-Assisted Development
Claude Code
Cursor
Gemini / Antigravity
Google Vision API
OpenAPI-driven codegen pipelines
Engineering Practices
Clean Architecture
Contract-first development
Offline-first systems
System Design
CI / CD
Git workflows
$ Experience
// Where I've shipped
A decade across banking, health tech and international product teams — Jakarta, Singapore, the Philippines, and remote.
Delivered the BNI Mobile Banking v2 hybrid app — from the JS↔native bridge to secure backend APIs and biometric research.
Contributed to BNI Mobile Banking v2, a hybrid Cordova app with a JavaScript UI.
Developed a custom native bridge connecting JavaScript to native Android Java components.
Implemented secure SSL communication in the bridge for encrypted API transactions.
Built backend APIs in .NET C# and Microsoft SQL Server for internal services.
Collaborated with banking security teams researching biometric authentication (fingerprint & face recognition).
JavaAndroidCordova.NET C#Microsoft SQL Server
Nov 2015 – Dec 2015
Java Programmer (Bootcamp)
PT Xsis Mitra Utama
BootcampOn-site
Foundational Java training focused on backend and API development before joining the BNI mobile banking project.
Completed Java training focused on backend and API development.
Learned Spring MVC, Spring Boot and REST API fundamentals.
JavaSpring MVCOracle Database
$ Success Stories
// Proof, not just job descriptions
Every story follows the same structure — the problem, what I did, and the outcome. This is how I actually work.
01
One monorepo, four platforms, ~3x shipping velocity
The problem
Building backend, iOS, Android and web apps meant manually translating the exact same logic into three different languages. Repetitive boilerplate was the bottleneck — and AI agents without strict boundaries hallucinated diverging data models and layouts across platforms.
What I did
Centralized sources of truth: one OpenAPI spec for every API, and platform-neutral design tokens for the UI.
Declared iOS the design benchmark, then made Android and web mirror it 1:1 instead of guessing.
Built a custom pipeline that auto-generates native Swift, Kotlin and React code from those contracts.
Zero visual drift, compile-time safety across platform boundaries, and time spent building features instead of writing boilerplate network code.
MonorepoOpenAPICodegeniOS · Android · Web
02
Custom MCP servers that keep multi-language code honest
The problem
Coordinating an AI-assisted monorepo across Kotlin, Swift and TypeScript: contract drift between platforms is invisible until runtime.
What I did
Architected custom Model Context Protocol (MCP) servers to give AI agents live project context.
Automated multi-language client codegen (Kotlin / Swift / TS) from a single contract source.
Enforced monorepo contract integrity across platforms at generation time.
Outcome
AI agents produce contract-correct clients by default — cross-platform drift is eliminated before code review.
MCPAI AgentsContract-firstMonorepo
03
Scale-invariant facial search engine
The problem
Matching faces across photos at different scales and distances — naive similarity fails as the face size in the frame changes.
What I did
Designed a facial search engine on Google Cloud Vision with a hand-built geometric scoring algorithm.
Scored inter-eye landmarks with exponential-decay weighting to stay invariant to face scale.
Outcome
A working search engine that matches faces reliably regardless of how far the subject was from the camera.
Computer VisionGoogle Vision APIAlgorithms
04
Marketplace payments with Airwallex
The problem
A cross-platform marketplace needed real-money flows: secure payout signing, regulated onboarding, and no double-charging on retries.
What I did
Integrated Airwallex marketplace payments across the stack.
Implemented HMAC-SHA256 signature verification for webhook authenticity.
Built KYC onboarding and idempotent event handling so retries never double-process.
Outcome
Payment processing that is authenticable, compliant, and safe under network retries — end to end.
PaymentsAirwallexWebhooksSecurity
05
Mission-critical banking backends
The problem
National-scale banking apps (OCBC NISP, BNI, BRI) demand security, high availability, and strict compliance — mistakes are not an option.
What I did
Shipped and maintained .NET C# / Java / SQL backends for FX transactions and mobile banking.
Built a secure JS↔native bridge with encrypted SSL communication for a hybrid banking app.
Researched biometric authentication (fingerprint & face) with bank security teams.
Outcome
Years of running mission-critical financial infrastructure trusted by millions of users across Indonesian banks.
BankingJava.NET C#SecurityCompliance
06
Resilience: from layoff to rebuilding like a beginner
The problem
After a layoff, interviews exposed gaps in DSA and system design fundamentals — the very things senior interviews test under pressure.
What I did
Reset with a structured daily training schedule across DSA patterns and system design.
Retrained fundamentals intentionally instead of relying on past experience.
Upskilled into the shifting market: cross-platform and AI-assisted workflows.
Outcome
A sharper, more disciplined and more resilient engineer — experience renewed into a flame instead of resting on old titles.
Growth mindsetDSASystem DesignDiscipline
$ Selected Work
// Projects
A mix of client work I led end-to-end and public experiments on GitHub. Client work is shared at a level that respects confidentiality.
Cross-platform Marketplace
client
End-to-end marketplace shipped across iOS, Android, and Web from a single OpenAPI + design-token source of truth.
A custom build pipeline generates native Swift, Kotlin and React code from centralized contracts — the project that became my AI-native monorepo blueprint.
This single-page portfolio — Next.js 15 App Router with Zod-validated content contracts and an embedded Gemini chatbot (Aira).
All copy lives in schema-validated data files that fail the build on violation; the chatbot grounds its answers in that content instead of a vector DB.
Next.jsReactTypeScriptTailwind CSS v4ZodVercel AI SDKGemini
I'm open to senior / lead full-stack, mobile, and AI-native roles — globally remote, or based around ID, SG, MY, JP and Saudi Arabia. Reach out on any channel below.