What this is
After shipping multiple iOS apps, my launches follow the same structure every time. The things that hurt most were never the code. They were the ASO, screenshots and review steps I remembered too late.
This page describes the Notion template: what each part is, the database properties, and all 42 cards with the AI prompt inside each one. A one-click Notion duplicate link is coming soon. Until then, you can rebuild it from this page in about 20 minutes.
Template structure
🚀 Indie iOS Launch Stack (top-level page)
├── 📋 Launch Board (database: 42 cards, Board view by Phase)
├── ✍️ ASO Metadata Drafts (page: title/subtitle/keyword versions)
├── 🖼️ Screenshot Brief (page: one block per screenshot)
├── ⭐ Review Request Plan (page: trigger, copy, reply rules)
├── 📣 Press & Community List (database)
├── 📈 Keyword Iteration Log (database: weekly)
└── 🧠 Prompt Library (page: all prompts in one place)
1. Launch Board (database)
Properties
| Property | Type | Values / notes |
|---|---|---|
| Card | Title | The task |
| Phase | Select | Week −4 · Week −3 · Week −2 · Week −1 · Launch week · Weeks 2–4 |
| Area | Select | ASO · Screenshots · Product · Reviews · Community · Press · Analytics |
| Status | Status | Not started · In progress · Done |
| Due | Date | Set relative to your launch date (L) |
| Days before launch | Number | e.g. 30 (used to recalculate Due) |
| Launch date | Date | The same date on every card (or a relation to a "Launch" page) |
| Due (auto) | Formula | dateSubtract(prop("Launch date"), prop("Days before launch"), "days") |
| AI prompt | Text | The prompt for this card (below) |
| Output | Text / files | Paste the AI result or attach files |
| Owner | Person | You (or your designer / VA) |
Views
- Board by Phase: the default working view
- Table: This week, filtered to Due within the next 7 days and Status ≠ Done
- Calendar by Due (auto)
- By Area, for handing a whole area to someone else
2. All 42 cards with their AI prompts
Week −4 (30–22 days before launch): positioning and keywords
| # | Card | Area | AI prompt inside the card |
|---|---|---|---|
| 1 | Write the one-sentence positioning | Product | "My app does [X] for [WHO]. Write 10 one-sentence positionings in plain words, each under 15 words. Mark the clearest 3." |
| 2 | List 5 closest competitors | ASO | "List the types of apps a [WHO] would compare with mine for [JOB]. For each competitor I paste, summarise their promise in one line: [PASTE]." |
| 3 | Seed keyword list (10) | ASO | "Give 10 seed App Store search terms a real iPhone user types to solve [PROBLEM]. Problem and outcome language, not features." |
| 4 | Expand to 100+ keyword candidates | ASO | "Expand each seed into 15 long-tail queries (2–4 words, lowercase): [SEEDS]." |
| 5 | Cluster keywords by intent | ASO | "Group these keywords into 4–6 intent clusters with a one-line intent each: [PASTE]." |
| 6 | Validate volume and difficulty | ASO | (No AI. Use Apple Ads search popularity or your ASO tool. AI can't see volume.) |
| 7 | Pick the primary keyword cluster | ASO | "Given these scored keywords [PASTE], which cluster should my title target and why? Consider relevance first." |
| 8 | Draft title options (≤30) | ASO | "10 titles ≤30 chars with brand '[BRAND]' + a keyword from [CLUSTER]. Show counts." |
| 9 | Draft subtitle options (≤30) | ASO | "10 subtitles ≤30 chars, no words from the title '[TITLE]', benefit-led, using [CLUSTER 2]. Show counts." |
Week −3 (21–15 days): listing and visuals
| # | Card | Area | AI prompt inside the card |
|---|---|---|---|
| 10 | Build the 100-character keyword field | ASO | "Pack a 100-char keyword field: single words, commas, no spaces, no words from title/subtitle, no plurals, no brands: [CANDIDATES]. Show count." |
| 11 | Write description (first 3 lines first) | ASO | "Write 5 openings (≤250 chars) stating who it's for, the outcome and one proof point. Then the full description, under 2,000 chars." |
| 12 | Write promotional text (≤170) | ASO | "3 launch promotional text options ≤170 chars with counts." |
| 13 | Screenshot brief: story for frames 1–3 | Screenshots | "My screens show [LIST]. Order them so frames 1–3 answer: what is it, what do I get, why this one." |
| 14 | Screenshot headlines | Screenshots | "Benefit headline ≤6 words for each screen, keywords where natural: [KEYWORDS]." |
| 15 | Icon squint test vs competitors | Screenshots | "Here is my icon and the top 10 icons for '[KEYWORD]'. Does mine stand out at small size? Suggest 3 changes." |
| 16 | App preview video script (optional) | Screenshots | "15–30 second preview script; the first 3 seconds show the core outcome; on-screen text only (it autoplays muted)." |
| 17 | Choose primary and secondary category | ASO | "Compare [CATEGORY A] vs [CATEGORY B] for my app: audience fit and the kind of apps in each top chart I paste: [PASTE]." |
| 18 | Privacy labels and age rating check | Product | "Based on these SDKs and data flows [LIST], which App Store privacy label categories likely apply? I'll verify each one." |
Week −2 (14–8 days): reviews and community
| # | Card | Area | AI prompt inside the card |
|---|---|---|---|
| 19 | Define the "success moment" for the review prompt | Reviews | "My app's core loop is [LOOP]. Suggest 3 moments right after a user succeeds, when asking for a rating feels natural." |
| 20 | Implement requestReview at that moment |
Reviews | (Code task. The system shows the prompt at most 3 times per user per 365 days.) |
| 21 | Recruit 10+ TestFlight beta testers | Community | "Write a short, honest post inviting [WHO] to beta test my app on TestFlight. What they get, what I need, no hype." |
| 22 | Collect beta feedback | Product | "Summarise this beta feedback into bugs, confusions and requests, ranked by frequency: [PASTE]." |
| 23 | Fix top 3 beta issues | Product | (No AI. Ship it.) |
| 24 | List 3 niche communities | Community | "Where do [WHO] discuss [TOPIC] online (subreddits, forums, Discords, X circles)? Note each community's self-promotion rules." |
| 25 | Write community launch posts | Community | "Write a launch post for [COMMUNITY] that follows its rules, leads with the problem and my story, and asks for feedback." |
| 26 | Build the press and creator list | Press | "Suggest types of newsletters, blogs and creators covering [NICHE] or indie iOS apps. I'll find and verify the actual contacts." |
Week −1 (7–1 days): final prep
| # | Card | Area | AI prompt inside the card |
|---|---|---|---|
| 27 | Write the Product Hunt listing | Community | "Product Hunt tagline (≤60 chars), description and a maker's first comment telling the honest story behind [APP]." |
| 28 | Prepare launch visuals (social and PH) | Screenshots | "Captions for 5 launch images: one problem, three features as benefits, one 'made by an indie dev' image." |
| 29 | Write the press email | Press | "A 120-word pitch email to [WRITER] about [APP]: why it matters to their readers, one detail, link placeholder. No attachments." |
| 30 | Set up analytics baselines | Analytics | (Record App Store Connect impressions, page views and downloads, plus rankings for 20–30 keywords before launch.) |
| 31 | Plan the first in-app event | ASO | "3 launch-month in-app event ideas: name ≤30, short ≤50, long ≤120 characters, with counts." |
| 32 | Prepare review reply templates | Reviews | "5 reply templates (bug fixed, bug in progress, feature request, pricing, praise) under 350 chars each." |
| 33 | Final metadata review | ASO | "Check limits, duplicate words, spaces, filler and trademarks in: [TITLE / SUBTITLE / KEYWORDS]." |
Launch week
| # | Card | Area | AI prompt inside the card |
|---|---|---|---|
| 34 | Release and confirm the live listing | Product | (Check the live page on a real device, in light and dark mode.) |
| 35 | Post in communities (staggered) | Community | "Adapt my launch post for [COMMUNITY], keeping its tone and rules: [POST]." |
| 36 | Product Hunt launch day | Community | "Draft 5 genuine, varied replies to these PH comments: [PASTE]." |
| 37 | Personal posts (LinkedIn / X) | Community | "Write a launch post: the problem in users' words, what I built, one lesson from building it, the link. No hype." |
| 38 | Reply to every review and comment | Reviews | Use card 32's templates. |
Weeks 2–4: iterate
| # | Card | Area | AI prompt inside the card |
|---|---|---|---|
| 39 | Weekly keyword review (×3) | ASO | "Here are my keyword rankings this week vs last: [PASTE]. Which 5 weakest keywords should I swap, and with which candidates from [SHORTLIST]?" |
| 40 | Review mining | Reviews | "Cluster these first reviews into themes with counts and quotes. What's the #1 fix?: [PASTE]." |
| 41 | First update with ASO changes | ASO | "Write 'What's New' for these changes in users' own words from these reviews: [PASTE]." |
| 42 | Launch retrospective | Analytics | "From these launch numbers [PASTE], what worked, what didn't, and what are 3 things to do differently next launch?" |
3. ASO Metadata Drafts (page)
Keep every version, so you can tie ranking changes to metadata changes.
| Version | Date | Title (≤30) | Chars | Subtitle (≤30) | Chars | Keyword field (≤100) | Chars | Why it changed |
|---|---|---|---|---|---|---|---|---|
| v1 | Launch | |||||||
| v2 |
Tip: add a Notion formula property length(prop("Title")) (and the same for the other fields) to count characters automatically.
4. Screenshot Brief (page)
One toggle block per frame:
Frame [N]
- Screen shown:
- Headline (≤6 words):
- Subline (optional, ≤8 words):
- Keyword(s) included:
- What the user should understand in 2 seconds:
- Device frame / background:
- Localized versions needed: [list locales]
5. Review Request Plan (page)
- Trigger moment: [e.g. after the 3rd successful meal scan]
- Never show: on first launch, mid-task, after an error, or after a paywall dismissal
- System cap:
requestReviewis shown at most 3 times per user per 365 days, so choose your moments - Reply rules: reply to every 1–3★ review within [N] days, using the templates in card 32
- Monthly: run review mining (card 40) and add new themes to the roadmap
6. Press & Community List (database)
| Property | Type |
|---|---|
| Name | Title |
| Type | Select: Newsletter · Blog · Podcast · Creator · Subreddit · Forum · Discord · Product Hunt |
| Link | URL |
| Audience fit (1–5) | Number |
| Self-promo rules | Text |
| Contacted | Date |
| Status | Select: To contact · Contacted · Replied · Covered · No |
| Notes | Text |
7. Keyword Iteration Log (database)
| Property | Type |
|---|---|
| Week of | Date |
| Keyword | Title |
| Field | Select: Title · Subtitle · Keyword field · Locale field |
| Rank before | Number |
| Rank after | Number |
| Change | Formula: prop("Rank before") - prop("Rank after") (positive = improved) |
| Decision | Select: Keep · Swap · Test in another field |
| Notes | Text |
The weekly rule (weeks 2–4): swap out the 5 weakest keywords (no ranking, or no relevance) for the next 5 from your validated shortlist. Keyword field changes need a new app version, so batch them with your weekly or bi-weekly update.
Try GROWNX free: Free plan available
Plug GROWNX into weeks 2–4 to track your launch keywords from day 1. GROWNX is one ASO dashboard for keywords, listing audits and competitors, built by an indie developer with multiple live iOS apps.
Free plan available. Start free.
Start free →