Skip to content
Faidhi Fahmi.
All selected works
GrowthDataProduct

Engineering a High-Efficiency Acquisition Engine

Organisation
iLyF — Easy, Instant Insurances
Role
Owned acquisition end to end — channel structure, store listing, instrumentation and the renewal loop
Period
Malaysia

Installs between twenty sen and two ringgit depending on the month, a store listing that climbed from invisible to the top of the Malaysian insurance category, and acquisition cost recovered in about three weeks. The figures below are the working dashboards, read the way I read them at the time — including the single best day, which is labelled as such rather than passed off as the average.

cost per install, monthly actuals across the measured period
RM0.20–1.92cost per install, monthly actuals across the measured period
blended cost per install on the single day the dashboard below shows
RM0.19blended cost per install on the single day the dashboard below shows
monthly click-through rate, against a 6.66% cross-industry average
3.9–9.8%monthly click-through rate, against a 6.66% cross-industry average
of ad clicks became installs, monthly
15.7–21.3%of ad clicks became installs, monthly
LTV to CAC in Q4 2024, against a 3:1 healthy benchmark
4.4–4.9LTV to CAC in Q4 2024, against a 3:1 healthy benchmark
to recover customer acquisition cost
0.6 monthsto recover customer acquisition cost
return on ad spend, Q3 to Q4 2024 — net crossed 1.0 in Q4
1.21 → 1.65return on ad spend, Q3 to Q4 2024 — net crossed 1.0 in Q4
category visibility against every insurer app in the market
Near-zero → top 2category visibility against every insurer app in the market

The dashboards, and what I read off them

Engineering a High-Efficiency Acquisition Engine — figure 1
One day across the live app campaigns. Read down the cost-per-install column rather than the click-through column: RM0.12 on the best campaign against RM0.26 on the worst, for the same product on the same day. The blended RM0.19 is the number the business felt, and it is an average hiding a 2× spread I could act on.
Engineering a High-Efficiency Acquisition Engine — figure 2
Store visibility against every insurer app in Malaysia, tracked in AppTweak. iLyF is the dark red line starting near zero. The shape is the tell — incumbents hold a flat high line on brand, challengers spike and collapse when a burst campaign ends, and a steady eight-month slope is what listing and review work looks like when it compounds.
Engineering a High-Efficiency Acquisition Engine — figure 3
Estimated daily downloads over the same window. Early on, every peak of ours is a campaign we paid for and the floor between peaks is near zero. By the end the floor has risen underneath the peaks — the same budget lands on an audience that now finds the app on its own, which is why the peaks got taller without the spend getting larger.

Context

Motor insurance is bought once a year by people who do not think about it in between. There is no habit to build on and no daily usage to grow, so every customer starts as an install somebody paid for. The ceiling on what that install can be worth is fixed — one premium, once a year, at a margin the insurer sets. That ceiling is the entire problem to solve.

What was actually needed

Two numbers, not a campaign. A cost per install low enough that a first-year customer paid for themselves, and a second year that cost close to nothing to win. Everything I did to the channels was in service of those two, and anything that moved a metric without moving one of them got cut.

What the campaign table told me

Four things, all of them actionable. The search campaign was buying clicks at RM0.73 against RM0.04–0.05 on the app campaigns, converting at RM1.86, and producing zero installs — it was paying premium rates for intent the store listing was already capturing for free. The blended "Mix Ads" campaign came in at RM0.22, worse than every dedicated campaign it was blended from, because mixed targeting averages you into your most expensive audience instead of letting the cheap one run. The two Malay campaigns landed at RM0.14 and RM0.26 — same language, same product, nearly double the cost — which said the variance was creative, not audience. And running the whole table back: 62.5K impressions at 8.86% is roughly 5,500 clicks, which produced 1.55K installs. That is a store listing converting a bit over a quarter of everyone it saw on that day, and it is the real reason the cost per install was twenty sen rather than eighty. Sustained across whole months the conversion ran lower, between 15.7% and 21.3% — the day below is the ceiling, not the baseline.

What I did with that

Killed search entirely and moved the budget into app campaigns. Split every blended campaign into single-audience ones so a cheap segment could not subsidise an expensive one inside a single average. Ran each language twice with deliberately different creative rather than once, because the RM0.14 against RM0.26 gap said creative variance was worth more than another audience test. And because roughly a quarter of the cost per install was set by the store listing rather than the ad, I treated the listing — title, screenshots, description, ratings, replying to reviews — as a paid channel with its own budget of attention.

What the visibility curve told me

The competitor tracking is where the strategy gets confirmed. AIA+ holds a flat line near the top for the whole period — that is brand spend, and it is not a game a startup wins. RHB spikes to the middle of the chart and collapses back to zero inside two months; Tune Protect does the same thing twice. Those are burst campaigns, and the collapse is what a burst always does. Our line does neither: it sits near zero for months and then climbs steadily for eight of them, past MyEG, past Etiqa Smile, into second place behind an incumbent insurer. A slope like that cannot be bought in a burst. It is the compounding return on listing quality and review responses, and it is the cheapest visibility in the category because nobody else was willing to wait for it.

Why the two charts are one story

Put the download chart next to the visibility chart and the mechanism is visible. Early on, our downloads are pure spikes with a floor at zero — everything we got, we bought, and the day the campaign stopped so did the installs. By the end of the window the floor between spikes has lifted well clear of zero and the spikes themselves reach the top of the chart. Same campaigns, taller peaks, because paid traffic now landed on a listing that ranked and converted. Paid efficiency was not won in the ad account. It was won on the store page, and the ad account is where it showed up.

Decisions that mattered

Optimising bidding toward policies bought rather than installs. Install is the cheap, fast, satisfying number and it is the wrong one — it rewards whichever audience is most willing to download something free. Once the campaigns were fed conversions further down the funnel, the cheap-install audiences dropped out on their own. The second decision was refusing to judge a channel before renewal data existed for it. In a once-a-year product a cohort is not readable for twelve months, and every premature verdict we made in the first year was wrong.

What changed

Across the measured months, cost per install ran between RM0.20 and RM1.92 — the twenty-sen days were real but they were the good days, not the average one. Installations reached the low hundreds of thousands over thirty months, with several months inside the Google Play Store’s top 10 Lifestyle apps. Return on ad spend moved from roughly 0.5 to 1.21 by Q3 2024 and 1.65 by Q4, and net return crossed 1.0 in that final quarter — the point at which acquisition stopped being funded and started paying for itself. The honest attribution is the renewal automation rather than anything in the ad account, because a second year won at almost no cost is what finally made the first year’s spend affordable.

The insight I kept

Cost per install is a vanity number until you divide it by the people who actually buy something. The most useful hour I spent on this was not in the ads manager — it was working out that a quarter of my paid efficiency was being set by a store page I had been treating as marketing collateral rather than as the top of the funnel.

Stack & practices

  • Google Ads app campaigns
  • ASO and store listing
  • AppTweak
  • Mixpanel
  • Cohort and ROAS dashboards
  • Lifecycle automation

Got a problem shaped like this one?

A short conversation is usually enough to see if there's a fit.