Native iOS and Android apps
Swift and SwiftUI on iOS, Kotlin and Jetpack Compose on Android — with StoreKit 2 and Play Billing, widgets, Live Activities, share extensions, Bluetooth hardware, background work and everything else that makes an app feel like it belongs on the platform. The Android apps for Roadie Tuner, Seez, PowerGoodies and Bubu AI are the client-side track record.
Kotlin Multiplatform, done pragmatically
One Kotlin codebase for both stores when the product is mostly UI and data (QuestLog, Marjai), and native when it isn't (everything else). I'll tell you which one your app is.
On-device AI features
Whisper transcription, small LLMs via MLX and CoreML, on-device OCR — features that work offline and never upload the user's data. Murmur, Booksum and Textrix all ship this way.
Finish or rescue an existing app
Half-built codebase, stalled release, App Review rejection loop, a crash you can't reproduce. I've shipped through all of those and I'm comfortable reading someone else's code.
Backend systems and internal tools
Node.js and Express APIs on MongoDB or Postgres, Supabase, JWT auth with role-based access, Excel-to-database import pipelines, scheduling and reporting screens in React. Dynet — a fibre-installation planning system with six roles and a transactional import pipeline — is the reference case.
Web and developer tooling
Astro and Next.js sites, Python services and scrapers, macOS desktop tools, CLI and build automation. Whatever sits behind or beside the app.
App Store optimisation with evidence
Keyword research against real store data, title and metadata allocation across localisations, screenshot pipelines, and a measurement loop — so a ranking change is a verdict, not a feeling.