Jetcost
The flight and hotel metasearch of the lastminute.com group, on Android. One developer on the code, 600K+ monthly active users.
In 30 seconds
Since 2022 I own the full development cycle of the Jetcost Android app: 15 markets, 5M+ downloads. I keep it at 99.7% crash-free while migrating it to Jetpack Compose, and the funnel redesign I shipped more than doubled core CTR (+125%). Play Store rating went from ~3.8 to 4.3 stars along the way.
Context and problem
Jetcost compares flight, hotel, and car rental prices across hundreds of providers. The Android app serves ~600K monthly active users (Firebase) in 15 markets and 15 languages: every regression in stability or speed has a direct business impact.
When I joined in 2022 the app was a classic View-system codebase with years of history: solid, but aging. Rating sat around 3.8 stars, the UI stack made new features slow to build, and every release was a manual, error-prone ritual. The challenge: modernize the app and its delivery pipeline while it keeps running at full traffic, with one developer on the code.
My role
I own the full development cycle: architecture, implementation, testing, release, and store management. Technical decisions are mine, shared with my Engineering Manager and product stakeholders; the experiments we run are team product decisions that I implement end to end on Android, on top of the A/B infrastructure I maintain in the app. Part of my daily toolkit is AI-assisted development with Claude Code, including custom skills I built for this project, from Crashlytics root-cause analysis to Compose patterns.
Technical decisions
Modernizing a revenue-critical app without breaking it
When I joined, the codebase was a View-system app with years of history. My instinct was to modernize everything: Kotlin, Flow, Compose, the whole modern stack. The business needed revenue not to flinch: in an app used by millions, touching a comma in the wrong place has a cost. The compromise became the strategy: migrate screen by screen (ComposeView inside existing screens, new features 100% Compose), each step small enough to be rolled back. Today ~60% of the main screens are migrated or partially migrated, with zero migration incidents in production.
Make experimentation cheap
Product ideas are validated with A/B tests via Firebase Remote Config, tracked on a double analytics backend (GA4 plus the in-house pipeline). Because shipping a variant is cheap, more ideas get tested. The biggest win: removing the detail page from the search funnel, which lifted core CTR from 19% to 44%.
The out-of-memory that took months to catch
An OOM crash haunted the app for months: it hit a tiny slice of users, in one scenario so specific that no developer would ever reproduce it spontaneously. Finding it meant hunting, not guessing: LeakCanary, the Android Studio profiler, and heap dumps analyzed until the leak showed its path. A 99.7% crash-free rate is made of exactly this kind of patience.
From ~3.8 to 4.3 stars, on purpose
The rating did not rise on its own. It took reading reviews and support signals to find the real friction points, fixing those first, and being deliberate about the ask: the in-app review prompt lives at the moments where the user has just gotten value, never where it interrupts. Each iteration was measured on the rating itself.
React Native brownfield, learned from scratch
When the group chose to share selected widgets across platforms, I did not know React Native: I studied it from zero and co-defined the strategy. And brownfield is the hard, uncommon variant: not a greenfield RN app, but RN surfaces (search form, recent searches) living inside an existing native app through a custom bridge. Native where it matters, shared where it saves time.
Automate the release train
With Fastlane the pipeline handles versioning, signing, AAB upload, release notes, and store screenshots for 15 locales. Production releases go out every two weeks, test builds weekly; a release costs ~10 minutes instead of hours.
One codebase, many agendas
Product, marketing, CRM, and SEO all land their needs on the same Android app, through one developer. A large part of the job is orchestration: understanding what each team actually needs, pushing back with data when something does not fit, and sequencing the work so that every team ships without stepping on the others.
Privacy as an engineering constraint
GDPR compliance with a certified CMP (Iubenda) and Google Consent Mode v2, integrated without breaking analytics continuity across 15 markets.
Results
- +125% core CTR from the funnel redesign, +81% core revenue in pilot markets, now rolled out
- ~3.8 → 4.3★ Play Store rating on 38K+ reviews
- 99.7% crash-free users, 0.03% ANR, well under Google's thresholds
- ~10 min per release, from hours, bi-weekly cadence
- Deutscher App Award 2026, flight price comparison category. Awarded by the Deutsches Institut für Service-Qualität (DISQ) with ntv, based on a consumer survey of Germany's most popular apps.



What I learned
Incremental migrations beat rewrites when real users are on the line: the hybrid Compose strategy delivered modernization without a single "big bang" risk window. Automating the release train freed real weeks per year and made shipping predictable.
At this scale, experiments beat assumptions: building the app around measurability changed how the team makes product decisions.