Building in Public Challenge: Winning the ASO
A practical guide to App Store Optimization for indie developers. Learn how to choose keywords, craft titles, and rank higher with limited resources.
Although I've had the chance to work on iOS apps used by almost 100k people, my indie apps haven't been very successful so far.
The most successful one peaked at around 8k users, which was still far from what I was hoping for. (And to be fair, that app already had a fan base on Google Play — I only built the iOS version while collaborating with the original creator.)
As a developer, coding is the fun part for me. Shipping features, improving architecture, polishing flows… that's where I'm comfortable.
But I often find myself going too deep into details or adding features that don't really affect an app's success.
Things like icons, screenshots, and ASO keywords honestly aren't my strongest suit.
At this point, I've accepted something pretty brutal:
No matter how cool or well-functioning my app is, if I can't nail ASO, it will probably end up in the trash bin.
So I decided to do something different.
I picked two of my chronically unsuccessful apps, followed an ASO tutorial step by step, applied the best practices properly, and decided to share the results publicly.
The Apps
Capishi
An AI-powered interview coaching app I released around a month ago, built using SwiftAI Boilerplate Pro.
Me-Log
An app I built for myself two years ago, back when I was a digital nomad in Portugal, living a fairly isolated life.
It's a simple journaling app that lets you write secure entries, rate your days, and track your mood over days, weeks, and months.
I recently shipped a big update for Me-Log, but realized something embarrassing:
I hadn't touched the title, keywords, or ASO setup at all.
So it's been failing ASO consistently for two years — very stable failure.
After this long introduction, let's move into action.
Below are the main points I extracted from the two short books that were gifted by Astro when I subscribed to their annual plan.
1. Titles: "Cool" Loses, Descriptive Wins
Instead of clean, short titles that sound cool, ASO rewards descriptive titles that clearly state the problem being solved.
Examples:
- Capishi → Interview Preparation – Capishi
- Me-Log → Secure Journaling – Me-Log
One thing that really stuck with me from the books is that word order matters.
If your app isn't in a very niche category, you need to balance:
- keyword popularity
- keyword competition
As an indie dev or solo-preneur, your goal should always be ranking in the top 10.
So it's important not to marry your title. Make changes to your metadata, and if needed, change them bi-weekly.
2. Keyword Research (This Is Where I Was Guessing Before)
There are tons of ASO tools out there, but most of them are insanely expensive — hundreds of dollars per month — though some offer free trials.
For this post, I decided to go with Astro, which is around $100/year.
If you don't want to spend money, free trials can still get you pretty far.
How Astro works:
You start by entering your current or candidate keywords and compare them based on popularity and difficulty.
To generate candidate keywords, I did the most obvious thing:
I described the problem my app solves to ChatGPT and asked it to generate alternative ways of expressing it.
In my experience, Gemini and ChatGPT work best for this kind of task.
The goal here isn't perfection or cool names — it's coverage.
Initial keyword set (before any decisions)
I started with the keywords I already had for Capishi, and the results were pretty clear.
Initial keywords – raw Astro list for Capishi
Then I started adding suggested keywords from ChatGPT.
At this stage, the books strongly recommend not optimizing yet, just observing:
- popularity
- difficulty
- relevance
Filtering and making decisions
After reviewing the data and rereading The Perfect Keyword, I realized something important:
Popular keywords don't matter if you can't realistically rank for them.
So instead of chasing:
- "AI interview coach"
- "AI mock interviews"
I focused on low-difficulty, high-relevance terms, even if their popularity was lower.
This is where the second pass came in.
Keywords filtered and refined after decisions
Examples of keywords I intentionally leaned into:
- mock interview
- interview prep
- interview buddy
- practice questions
And keywords I consciously deprioritized for now:
- generic "AI coach" terms
- broad career keywords with high competition
The books repeat this idea constantly:
Early-stage apps don't win by targeting big keywords.
They win by ranking first for small, boring ones.
3. Keyword Placement (This Part Was Eye-Opening)
Keyword placement is not random.
Priority order:
- Title → most important keywords
- Subtitle → second tier
- Keywords field → everything else
For Capishi's title, among the most promising keywords, I decided to go with:
"Interview Buddy – Capishi"
It had strong popularity with relatively low difficulty.
Capishi subtitle decision
Repeating a keyword across the title, subtitle, and keyword field doesn't strengthen it — it actually wastes space.
This directly affected how I chose the subtitle.
Because "Interview" and "Buddy" were already in the title, I avoided repeating them.
I ended up choosing a subtitle that:
- reinforces intent
- targets lower-difficulty keywords
- stays human-readable
In the end, I went with:
"Prep Questions & Get Feedback"
This allowed me to cover the keywords questions and feedback.
After that, I shared Astro's keyword list with ChatGPT again and asked it to suggest keywords that:
- don't repeat words in the title or subtitle
- cover as many popular terms as possible
Me-Log title & subtitle decisions
I followed pretty much the same steps for Me-Log.
Me-Log initial keyword analysis
I ended up making quite dramatic changes.
To be honest, this category is the opposite of niche. The competition is extremely high, and I'm not expecting miracles — but let's see.
Me-Log final keyword list
I decided to go with:
- Title: Emotion Log Journal
- Subtitle: Simple diary for feelings
Unfortunately, I had to upload new builds for both apps to apply these changes, since keyword updates also require review.
So right now, I'm waiting for App Store reviews — arguably the most fun part of being an iOS developer 🙂
Once they're approved, I'll share another post with the results and whether this actually moved the needle.