Case study · 90-day recovery
An independent Turkish AI app studio. $1,200 monthly revenue. A collapsing ad campaign. 90 days later: $5,400 MRR, positive ROAS, and the Japan campaign back from the dead.
- MRR
- ROAS
- Return
- Payback
The 12 findings
What the audit found in 22 hours
Each circle is one diagnostic finding. Radius is proportional to monthly dollar impact. Color encodes category. Tap or focus to read the forensic detail.
- Conversion events
- Integration health
- Value optimization
- Creative
- Retention
- Strategy
- Bidding
- Hygiene
12 findings · $4,200 per month at stake · all detected in 22 hours
The recovery curve
$1,200 → $5,400 in 90 days
Each vertical line marks an intervention. The stroke shifts color as ROAS crosses zero on day 14. Toggle layers to compare MRR, ROAS, and week-2 retention on the same axis.
Day by day
Ten moments that mattered
The recovery in ten scenes. Scroll horizontally or arrow-key through them.
Skip the timelineScene 1 of 10
Orphan conversion events disabled
The three deprecated event names came off Google Ads' optimization target. Algorithm started bidding for goals that actually existed in the app.
Scene 2 of 10
AppsFlyer cost stream re-authenticated
Cost reporting resumed after four silent months. ROAS dashboards started telling the truth.
Scene 3 of 10
SKAdNetwork CV mapping revised
Conversion-value postbacks now reflect actual purchase tiers, not a flat-bucket placeholder.
Scene 4 of 10
ATT consent moved before paywall
Postback volume up 4× within 48 hours. The signal was always available — it was just gated behind the wrong screen.
Scene 5 of 10
Japan paywall restored
The free-forever experiment was reverted. Every new Japanese install now sees the standard offer. +$540/mo recovered immediately.
Scene 6 of 10
Predicted LTV signal enabled
Daily LTV uploads from RevenueCat into Google Ads. Bidder finally knows which installs are worth $30 and which are worth $0.40.
Scene 7 of 10
Google Ads relearned the model
ROAS turned positive for the first time in 4 months. The line crossed zero on day 14.
Scene 8 of 10
Creative remixed for current features
Three new creatives matched the actual top-engagement feature. Day-1 churn dropped 18 points.
Scene 9 of 10
Japan campaign earned its first dollar in 6 months
After the paywall fix, the SKAN signal stabilized, and the bidder targeted Japan installs again. The market opened back up.
Scene 10 of 10
Day 90: $5,400 MRR. 6.31× return.
Payback achieved on day 14. The recovery is bedded in.
Your mirror
What would your numbers look like?
Adjust your current MRR, ad spend, and market. The model projects an Okkes-anchored 90-day trajectory. Not a guarantee — a frame of reference.
Projected MRR after 90 days
Estimated return
Estimated payback
Share this case study
Pass it on to a founder who's staring at the same problem.
From the founder
From the founder
I spent hours every day managing ads that didn't work, with no idea why. In 22 hours, Madar gave me a deeper diagnosis than any consultant had in 6 months.
Starting with Madar was simpler than I expected. I connected my accounts on Monday morning, and by Tuesday evening the diagnostic report was in my inbox. The 12 findings it surfaced were all in my account — and I had never seen any of them, despite looking at these numbers every day for months.
The hardest moment was finding out about the Japan paywall accident. My app had been losing $540 a month for four months without me knowing. It was an uncomfortable feeling, but also a relieved one: now I knew.
Ninety days in, the numbers speak for themselves. But what matters more: I sleep at night now. Madar watches the account every night. If anything's off, I know by morning. That's the thing I couldn't buy from any human consultant at any price.
The receipts
How we know these numbers are real
Skepticism is fair. Here's exactly where every number came from, how we verified it, and what we did not change.
About this case study
The customer is anonymized as Okkes Cetinkaya at their written request. All metrics in this page have been verified against the customer's own platform exports and cross-referenced with Madar's Diagnostic Engine output.
Time period
March 1 to May 30, 2026. Ninety days. No extensions, no cherry-picked windows.
Data sources Source verified
- Google Ads March 1, 2026
- AppsFlyer March 1, 2026
- RevenueCat March 1, 2026
- App Store Connect March 1, 2026
- Google Ads May 30, 2026
- AppsFlyer May 30, 2026
- RevenueCat May 30, 2026
- App Store Connect May 30, 2026
Verification
Independently verified by the Madar Diagnostic Engine on March 1, 2026, and cross-referenced with the customer's platform exports on May 30, 2026. Sample verification screenshots available on request.
What we changed
All 12 interventions are listed in the diagnostic constellation above. Each is traceable to a Google Ads change log entry, RevenueCat audit-log entry, or AppsFlyer integration ticket.
- #1 $1,200/mo
Orphan conversion events still optimized
Disabled the orphan events in the Google Ads conversion settings. Confirmed event-stream parity with the app's RevenueCat ledger.
- #2 $900/mo
AppsFlyer cost integration broken
Re-authenticated the AppsFlyer ↔ Google Ads cost stream. Backfilled the missing 4 months for reporting only — not for billing.
- #3 $650/mo
SKAdNetwork CV mapping suboptimal
Re-mapped CVs to a value-stratified 64-bucket scheme aligned to RevenueCat ARPU tiers. Postback richness restored.
- #4 $540/mo
Japan paywall configuration accident
Reverted the Japan paywall to the standard variant. Disabled the experiment. Documented the rollback in the RevenueCat audit log.
- #5 $480/mo
No predicted LTV signal to algorithm
Wired a tROAS bid strategy with a custom predicted-LTV signal pushed daily from RevenueCat into Google Ads via offline conversion uploads.
- #6 $380/mo
Creative-to-feature mismatch (3 ads, 1 campaign)
Replaced the three off-feature creatives with three new variants showcasing the current top-engagement feature. Maintained brand kit consistency.
- #7 $290/mo
ATT consent flow misconfigured
Moved the ATT prompt to the third-screen onboarding step, before the paywall. Postback volume up 4× within 48 hours.
- #8 $240/mo
No anomaly detection (silent churn signal)
Madar's anomaly agent now monitors retention deltas per cohort nightly. Threshold: >10% WoW decline pages a Slack alert with the cohort details.
- #9 $180/mo
Single market dependency (USA only)
Reallocated 12% of spend to Japan + DE markets as a hedge. Japan's CAC turned out to be 40% lower than US — opened a strategic discussion.
- #10 $140/mo
Bid strategy stale (90+ days no change)
Migrated to tROAS with the new LTV signal. Set target at 130% with a 7-day evaluation window. Algorithm regained pricing discipline.
- #11 $110/mo
Negative keywords not inherited from account level
Force-inherited the account negative list. Added 18 campaign-specific negatives from the actual search-terms report.
- #12 $90/mo
Conversion window mismatch (7d-click vs 14d behavior)
Extended the click conversion window to 14 days. Re-ran the post-attribution analysis. Paid channel's true contribution +28%.
What stayed the same
No new ads were created. No pricing changes. No product launches. No new markets opened (Japan was already a configured market — only the paywall was restored). No external PR or marketing campaign.
Variance disclosure
Results from this customer should not be interpreted as guarantees for other customers. Mobile app growth is multi-variable; outcomes depend on product-market fit, market conditions, competitive landscape, and execution discipline.
Your turn
Find your own 12 findings
Connect your accounts. Get the diagnostic report in 22 hours. Decide what to do next.