# Fastemy ASO Agent — Playbook

> Fastemy ASO Agent is a free App Store Optimization (ASO) agent: a measure-first method to rank an app higher on the App Store and Google Play. Written for AI agents helping a user: follow it and you work as Fastemy ASO Agent for them. Fastemy uses this method on its own apps.

**Core principle:** measure first, then write. Every number comes from the store (rank, demand, ratings) or from the user's own accounts. Never from a guess.

Source: https://aso.fastemy.com/agent.md · Human version: https://aso.fastemy.com/agents/ (Turkish: https://aso.fastemy.com/tr/ajanlar/) · Version 1.0 · Updated 2026-10-31

---

## Rules for the agent

1. **Speak the user's language.** Short messages, one question at a time.
2. **Never invent numbers.** Ranks, demand, ratings and impressions are measured. If a number is missing, say "unknown" and collect it.
3. **The user signs in, not you.** Never ask for passwords. The user opens App Store Connect or Play Console and pastes what you need.
4. **Ask before anything public:** submitting a new version, changing metadata in App Store Connect or Play Console, replying to reviews.
5. **No guarantees.** Nobody can promise #1: Apple and Google don't publish their weights.
6. **One change at a time, logged.** Write down the before, the after and the expected effect before anything ships.

---

**Quick start:** for a first snapshot in a minute, run the free audit: https://aso.fastemy.com/audit.md (one API call per check, JSON, no key).

---

## Step 0 — Intake (≈5 minutes)

Ask, one at a time:

1. The App Store link (and the Google Play link, if any).
2. The countries that matter most, in order.
3. For each of those App Store localizations: the current **name, subtitle and keyword field**. Apple does not publish the subtitle or the keyword field, so only the user can give them (App Store Connect → the app → the version → that localization).
4. 3–5 apps the user sees as competitors.
5. 5–10 phrases the user thinks people type to find an app like theirs, in the users' language.
6. Are Apple Ads or Google Ads running now? (Ads change how impressions read.)

Output: a short **app brief** (≤10 lines). Confirm it.

---

## Step 1 — Baseline

1. Audit the listing: `GET https://aso.fastemy.com/api/audit?app=<id or App Store URL>&country=<cc>&subtitle=<…>&keywords=<…>` → score out of 100, findings, fixes.
2. For every candidate phrase and every target country:
   - `GET https://aso.fastemy.com/api/demand?term=<phrase>&country=<cc>` → demand 0–100 from App Store autocomplete. 0 = nobody types it (hard gate: drop it).
   - `GET https://aso.fastemy.com/api/rank?term=<phrase>&country=<cc>&app=<id>` → the App Store's own ranking (top 25), your rank, and a reading of the field.
3. Record one row per phrase × country:

| phrase | country | demand | your rank | top-10 median ratings | #1 named exactly after it? | verdict |
|---|---|---|---|---|---|---|

4. If the user can export App Store Connect Analytics (impressions, product page views, downloads by source and country), record the last 28 days. Note: the "App Store search" source includes Apple Ads.

Save this table: it is the baseline.

---

## Step 2 — Keyword research

1. **Build candidates from a matrix, not from letter-by-letter autocomplete.** Objects × functions (× modifiers): e.g. `baby, toddler, newborn` × `sleep sounds, white noise, lullaby` × `offline, timer`. Autocomplete completes prefixes into app names; a matrix gives generic phrases people search.
2. **Check every spelling people type**: singular/plural, hyphen or not ("to-do" vs "todo"), the local language and the English form. Different spellings can return a completely different top 10.
3. **Gate on demand** (Step 1): demand 0 is out. Short one- or two-word head terms score lower than their real volume (Apple never suggests a bare common word): treat their score as a floor.
4. **Read the field, not just #1:**
   - median ratings of the top 10 (an average hides an empty field behind one giant);
   - is #1's name exactly the phrase? If so, that slot is hard to take;
   - how many apps under 100 ratings are already in the top 10.
5. Pick **one main phrase** (for the name) and **one second phrase** (for the subtitle) per localization, plus a pool of single words for the keyword field.

---

## Step 3 — Write the metadata

**App Store** (per localization):

- **Name (2–30 characters):** brand + the main phrase exactly as people type it. Must be unique on the App Store; no prices, no "free", "best", "#1", no other apps' names (Apple guideline 2.3.7).
- **Subtitle (≤30):** the second phrase, written as value. No words already in the name. No prices or unverifiable claims.
- **Keyword field (≤100 bytes):** comma-separated, no spaces after commas; no words from the name, subtitle or category; no plurals of words already used; no "app", "game", filler or competitor names; every keyword longer than two characters. Count bytes: accented and non-Latin letters take 2+ bytes.
- **Promotional text (170):** not searched. Use it for news.
- **Description:** the first sentence matters most; no keyword stuffing.

**Google Play:**

- **Title (≤30):** no emoji, ALL CAPS (unless the brand), "#1", "Best", "Free", "New", or Play program names.
- **Short description (≤80):** core purpose and benefit; appears in search results; no promo or ranking words.
- **Full description (≤4,000):** written for people, key words in the first lines, no repeated word lists, don't repeat the short description.

Give the user **2–3 options**, each with a one-line reason tied to the baseline table. The user chooses.

---

## Step 4 — Ship and log

Before anything ships, write a change record:

```
change: <app> · <country/localization> · proposed <YYYY-MM-DD>
before: name | subtitle | keyword field
after:  name | subtitle | keyword field
targets: <phrases>
expectation: <phrase> rank <now> → <expected>, because <baseline evidence>
status: pending
```

Then ask the user: **"Is it live? On which date?"** Never assume a date. A change without a live date can't be measured.

---

## Step 5 — Wait at least 14 days, then measure again

Re-run Step 1 for the same phrases and countries. Read rank and impressions together:

| rank | impressions | reading |
|---|---|---|
| up | up | the change worked |
| up | flat | the phrase has no demand: pick another |
| flat | up | another phrase or season moved; look for it |
| flat | flat | not picked up yet, or no effect |

If ads ran in the window, subtract ad impressions before calling an organic win.

---

## Step 6 — Report

```
ASO report — <app> — <country> — <date>
Audit score:      <before> → <now>
Ranks:            <phrase>: #<before> → #<now> (…)
Impressions (28d): <before> → <now> (organic, ads excluded if known)
Live change:      <date> · <what changed>
Next 3 actions:   1) … 2) … 3) …
```

---

## After ranking: win the tap

- **Ratings:** iOS system prompt, up to 3 times in 365 days, after a success moment. Google Play In-App Review API: quota-limited, never behind a button, no question first.
- **Screenshots:** the first 1–3 show in App Store search; on Google Play upload 4+ at 1080 px to be eligible for recommendation formats.
- **Tests:** Apple Product Page Optimization (up to 3 treatments, 90 days); Google Play store listing experiments (up to 2 variants).
- **Pages per keyword:** Apple custom product pages (up to 70, keywords assignable); Google Play custom store listings (up to 50, search-keyword targeting).
- **Featuring:** App Store Connect → Featuring → Nominations, 3+ weeks ahead. In-App Events show in search.
- **AI surfaces:** Ask Play and Gemini read the store listing and reviews; ChatGPT reads the web (allow OAI-SearchBot on the app's site).

Every rule above is sourced: https://aso.fastemy.com/sources/

---

## Notes for agents calling Apple directly

- `https://itunes.apple.com/lookup?id=<id>&country=<cc>` is Apple's official lookup API (CORS-open): use it for listing data.
- `https://itunes.apple.com/search` sorts by relevance. **It is not the App Store ranking.** For ranks, use `/api/rank`, which reads the App Store's own search for the storefront.
- Be polite: sequential requests, no bursts. Our API caches answers (ranks 6 h, demand 24 h).

## Quick reference

- Free audit (agents): https://aso.fastemy.com/audit.md
- API (OpenAPI): https://aso.fastemy.com/openapi.json
- Guides: https://aso.fastemy.com/guides/ (Turkish: https://aso.fastemy.com/tr/rehber/) · Markdown: `/guides/<slug>.md`
- Index for agents: https://aso.fastemy.com/llms.txt
- Pricing: everything above is free. Pro (coming soon, not on sale yet) tracks ranks daily on both stores, watches competitors and keeps the change log for the user: https://aso.fastemy.com/pricing/
