SWAT Driver
Driver-facing dispatch and turn-by-turn navigation for a regional mobility platform. Drivers open it before dawn and keep it open all day, so every crash is a stranded passenger.
- Replaced an unsupported map SDK and rewrote 10 map screens from XML to Compose in 1.5 months, which unblocked releases
- Built the logistics product solo, now live in 5 countries with 10,000+ delivery orders a day
- Rebuilt the Android architecture from a single module into 37 and cut build time by more than half
- Built the CI/CD pipeline from nothing: every release now ships through it to Play Store, Firebase and Huawei AppGallery
- Built AI agents for UI automation, crash triage and PR review, lifting team throughput by up to 70%
Case studies
Map SDK rescue: the release blocker 10 screens to Compose · 1.5 months
- Context
- Our forked map SDK was outdated and no longer supported by its maintainers, and its native libraries didn't meet Google Play's 16 KB page-size requirement. We couldn't keep it in production: new features were blocked, and customers were threatening to churn.
- What I did
- Researched community alternatives and chose a map SDK that worked with our existing map infrastructure. Switching meant rewriting every map screen from XML to Jetpack Compose, across both core products on phone and tablet.
- Outcome
- Shipped in 1.5 months: 10 screens across people transport and logistics (2 + 2 on phone, 3 + 3 on tablet). Releases resumed, and the company went back to shipping features and earning revenue.
Logistics product, built solo 5 countries · 10,000+ orders a day
- Context
- SWAT pivoted into delivery logistics, reusing its route-optimisation engine for B2B retail. The driver app needed a complete logistics flow, and I was the only engineer building it.
- What I did
- Designed and built the logistics features end to end on top of the existing route-optimisation platform, and took them through release in each market.
- Outcome
- Live in the UAE, Singapore, the Philippines, Thailand and Japan, handling 10,000+ delivery orders a day and opening a new B2B retail revenue line.
Build speed & code-quality foundations Builds 8–10 → 3–4 min · 80% test coverage
- Context
- Gradle builds took 8–10 minutes. Features were tightly coupled with no separation of concerns, which made the app hard to scale or maintain. There were no unit tests and no documentation, and this was before AI coding assistants.
- What I did
- Split the app into multiple modules, optimised the Gradle scripts, built up unit tests, added Detekt for lint checks, and built a CI/CD pipeline that runs the tests and publishes with Fastlane.
- Outcome
- Builds dropped to 3–4 minutes. Unit-test coverage reached 80%, verified with JaCoCo reports. Detekt enforces a shared coding style, and one command bumps the version, runs the tests and publishes to staging or production.