01 About 02 Blog

I Built an AI System That Compounds. Here's What Happened to My App Store Rankings.

I spent months asking AI for App Store help in chat windows and getting nowhere. Then I built a system that tripled my keyword rankings in a week.

Illustration of a developer on a hilltop watching a snowball roll downhill, growing massive and collecting keyword tags and country flags

1-2 Downloads a Day and No Idea Why

I can architect a state management system at midnight with a kid asleep on my shoulder. App Store Optimisation made me feel like I was throwing darts blindfolded.

StillMind had been live for a few months. Downloads were averaging one or two a day. I was ranking for some keywords — relevant ones, even — but I had no idea whether they were the right ones to focus on. No idea whether swapping one keyword for another would help or hurt. No way to tell which changes were worth making and which were a waste of time.

ASO (App Store Optimisation) is the practice of making your app discoverable in the App Store and Google Play. And it’s overwhelming. There are hundreds of possible keywords across multiple markets, each with interconnected ranking effects. Change one keyword in your title and it shifts how you rank for dozens of combinations. The feedback loops are brutal — you make a change today and wait four weeks to see if it worked. Across seven markets. With no undo button.

I had no confidence in any of it. I knew I was supposed to be doing ASO. I just didn’t know how to do it well, and I didn’t have months to spend learning.

Ask AI, Copy Answer, Lose Everything by Tuesday

I put real effort into it. I’d sit down with Claude, share my keyword data, work through the strategy, and come away with changes I felt good about. The output was solid. The problem came a month later.

When it was time for the next update, I’d pick up where I left off — or try to. Even continuing in the same chat window, the conversation lacked the data and context needed to make good decisions. What had we changed last time? Which keywords moved? Which ones didn’t? What were the rankings before and after? The AI didn’t have any of it unless I manually fed it back in. Every cycle felt like starting over.

ASO makes this especially brutal. You need to track keyword changes across seven markets. You need to remember what you tried four weeks ago and correlate it with what moved. You need to understand how swapping one keyword in your iOS subtitle affects ranking for a dozen compound terms. And you need to do all of this while also building the product, being a parent, and holding down a day job.

A chat conversation is stateless. A knowledge domain is not.

The embarrassing part? I’d already solved this for code. CLAUDE.md files, structured docs, persistent context — I’d built that entire system for StillMind’s codebase months ago. It took me an unreasonable amount of time to realise the same principle applied to everything else.

What If I Treated ASO Like Code?

The realisation, when it finally arrived, was almost annoying in how obvious it was.

I’d spent months building structured knowledge systems for StillMind’s codebase. Markdown files that gave AI everything it needed. Rules, context, history, constraints — all persistent, all compounding.

ASO is a knowledge domain. Why was I treating it like a conversation?

What I Actually Built

I created a docs/aso/ directory inside the StillMind monorepo. Here’s roughly what it looks like:

docs/aso/
  CLAUDE.md              # Guardrails and conventions
  platform-guide.md      # iOS vs Android mechanics
  changelog.md           # Every change submitted to the stores
  strategy/
    stillmind-aso-strategy.md   # Evergreen strategy
    2026-02-06/
      ios.md             # Per-cycle iOS keyword strategy
      android.md         # Per-cycle Android keyword strategy
      summary.md         # What changed, why, what we learned
  descriptions/          # iOS App Store copy (per locale)
  data/
    2026-02-06/          # Keyword CSVs, KEI scores
    2026-02-13/          # Week 1 snapshot
  scripts/
    calculate-kei.js     # Keyword scoring automation

The CLAUDE.md alone runs to hundreds of lines. It’s not a prompt. It’s a set of guardrails — rules like “never repeat a word across iOS title, subtitle, and keyword field” and “never exceed 3% keyword density on Android.” Things I learned the hard way that I never want to forget, and that I never want AI to ignore.

Below the guardrails sits an information hierarchy that compounds. Observations from each cycle get logged in the summary. Patterns that repeat across cycles graduate to the CLAUDE.md as permanent rules. Strategic direction — things like “Hungary is a blue ocean, prioritise it” — lives in the evergreen strategy doc. Each layer feeds the next.

For keyword data, I use Astro — about $100 a year, which is the only money I spend on ASO. The big tools charge that per month. (Yes, this is a different Astro to the web framework this blog is built on. Apparently I exclusively use products called Astro now.)

One thing I built that changed how I think about keywords: a KEI (Keyword Effectiveness Index) scoring system. It’s a score that tells me which keywords are worth fighting for and which are a waste of time. It balances a keyword’s popularity against its difficulty, with a multiplier for longer phrases since fewer apps optimise for those. Instead of staring at spreadsheets with hundreds of rows, I can sort by KEI and see immediately where the real opportunities are.

The system covers seven locales now, with automated weekly metric snapshots, templated workflows for each optimisation cycle, and a changelog that logs every change submitted to the stores. Each cycle builds on the last. Nothing gets lost.

What Happened (And What Didn’t)

After the first cycle, I waited a week and pulled fresh data.

Ranked keywords went from 74 to 201. That’s a 2.7x increase in one week.

Hungary, which had zero tracked keywords before, jumped to 61 — with 9 keywords at #1. Terms like “meditációs napló” (meditation journal), “napi vezetett meditáció” (daily guided meditation), and “vezetett légzés” (guided breathing). All position one. Brazil went from zero to 46 ranked keywords, with 3 at #1. The US and UK saw meaningful gains too — “meditation journal” appeared at #58 in the US and #16 in the UK, previously unranked in both.

But I want to be honest. Daily downloads didn’t explode. The numbers are similar to before — still in that 1-3 per day range. It’s only been three weeks. What I am seeing is that trial starts and purchases are up 2-3x, and download conversion rates look healthy too. The metadata is finally reaching the right people with the right message — people who actually want what the app does, not just people who stumbled across a keyword.

I’m not writing this because I cracked the code. I’m writing it because for the first time, I have a system that can learn whether the code is crackable.

It’s Not About ASO

But here’s the thing that keeps me going back to the system every morning.

AI doesn’t get smarter between conversations. Your system can.

Every time I run a cycle, the system knows more. It has last month’s rankings, the rules we’ve established, the patterns we’ve spotted, the mistakes we’ve made. It compounds. A new chat conversation will never do that.

This applies far beyond ASO. Any knowledge domain with long feedback loops and compounding context is a candidate: content strategy, customer research, financial planning, competitive analysis. Anywhere you keep re-explaining the same context to AI and getting back generic answers.

What makes it work isn’t AI magic. It’s three boring things: persistent context (files that survive between sessions), clear rules (guardrails that prevent regressions), and a feedback loop (structured data that tells you whether changes worked).

The AI is the engine. The system is the vehicle. Without the vehicle, the engine just idles.

Start Here

If you want to try this, don’t build what I built. Start smaller.

Pick one thing you keep re-explaining to AI. Something where you have context that matters — a domain where history, rules, and feedback loops exist. Create a folder. Write a markdown file with everything you wish AI already knew. The rules, the constraints, the context, the history.

Run one cycle. See what happens.

You’ll know within a week whether the structure is helping. If it is, add a second file. Then a third. Let it grow from the work, not from a template.

The system doesn’t need to be sophisticated. It needs to be persistent.


I said I wouldn’t be the killswitch again. A system that compounds while I’m asleep, or at the park with the kids, or deep in a code review — that’s not a promise. That’s architecture.

The system is three weeks old. It already knows more about my App Store presence than I learned in five months of Googling. I’m curious what it knows by month six.

If you’re building something and fighting with a knowledge domain that feels too big for chat conversations, I’d genuinely like to hear about it. What domain would you build a system around?


Frequently Asked Questions

Can AI help with App Store Optimisation?

Yes, but not the way most people use it. Asking AI for keyword suggestions in a chat window gives you reasonable one-off answers. Building a structured system — with keyword data, market guardrails, and historical context — gives you compounding results. I went from 74 to 201 ranked keywords in one week using this approach.

What’s the difference between chatting with AI and building an AI system?

Chatting is stateless. Every conversation starts from zero. A system gives AI persistent context — rules, history, data, constraints — that compounds over time. The same AI model produces dramatically different results when it has access to structured, accumulated knowledge about your domain.

What tools do you need to build an AI system like this?

Less than you’d think. I use Claude Code for the AI, Astro (~$100/year) for keyword tracking data, and structured markdown files in my project repository. Under $200/year total. The expensive part isn’t the tools — it’s thinking through what context the system needs.

What is KEI (Keyword Effectiveness Index)?

KEI is a score that balances a keyword’s popularity against its difficulty. A high-popularity, low-difficulty keyword scores well because it represents genuine opportunity — people are searching for it, but few apps are optimising for it. I also weight longer keyword phrases higher, since multi-word terms face less competition. It turns a wall of keyword data into a prioritised list of what’s actually worth targeting.


Key Takeaways

  • A chat conversation is stateless. A knowledge domain is not. Structure your AI interactions around persistent files, not ephemeral conversations.
  • Any domain with long feedback loops and compounding context benefits from this approach — ASO, content strategy, competitive analysis, customer research.
  • The system doesn’t need to be complex. Start with one markdown file containing everything you wish AI already knew. Let it grow from there.
  • Results compound: 74 to 201 ranked keywords in one week, with 9 keywords at #1 in Hungary and 3 at #1 in Brazil — from a structured first cycle.