https://github.com/edycutjong/launchcopilot
๐ Paste your app's store link โ a graded ASO report (28 deterministic rules) + a validated AI launch kit, in ~1 min. Built for HackOnVibe.
https://github.com/edycutjong/launchcopilot
app-store-optimization aso claude hackathon indie-dev launch launch-marketing nextjs typescript
Last synced: 8 days ago
JSON representation
๐ Paste your app's store link โ a graded ASO report (28 deterministic rules) + a validated AI launch kit, in ~1 min. Built for HackOnVibe.
- Host: GitHub
- URL: https://github.com/edycutjong/launchcopilot
- Owner: edycutjong
- License: mit
- Created: 2026-07-11T15:51:48.000Z (13 days ago)
- Default Branch: main
- Last Pushed: 2026-07-12T12:49:50.000Z (12 days ago)
- Last Synced: 2026-07-16T08:33:43.427Z (8 days ago)
- Topics: app-store-optimization, aso, claude, hackathon, indie-dev, launch, launch-marketing, nextjs, typescript
- Language: TypeScript
- Homepage: https://launchcopilot.edycu.dev
- Size: 24 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
- Agents: AGENTS.md
Awesome Lists containing this project
README

LaunchCopilot ๐
Paste your appโs store listing โ a graded, validated launch kit โ in about a minute.

[](https://launchcopilot.edycu.dev)
[](https://launchcopilot.edycu.dev/pitch)
[](https://youtu.be/2if0sEFKe8c)
[](https://hackonvibe.com)





[](https://opensource.org/licenses/MIT)
[](https://github.com/edycutjong/launchcopilot/actions/workflows/ci.yml)
---
## ๐ HackOnVibe Submission โ Demo Video & Questionnaire
**๐ฌ Demo video โ customer journey (~2 min):** **https://youtu.be/2if0sEFKe8c**
*What the user clicks โ what they get: paste a store link โ auto-fill โ a deterministic 27/100 grade โ generate a launch kit that re-grades itself to โฅ 90.*
**Questionnaire**
1. **What does the service do?** โ LaunchCopilot grades a mobile app's store listing against **28 deterministic App Store Optimization rules** (0โ100, per-field findings + exact fixes, no AI), then generates a **validated launch kit** โ A/B store rewrites, a Product Hunt draft, a 7-day social calendar, community posts, and press โ where every rewrite is **re-graded by the same engine and regenerated until it scores โฅ 90.**
2. **Target audience** โ Solo & indie mobile-app developers and small studios launching a new app, who can't afford a $2โ5k ASO/marketing agency.
3. **Expected buyer countries** โ Global, English-first (v1). Primary markets: **United States, United Kingdom, Canada, Australia**, plus large indie-dev hubs (**India, Germany/EU, Southeast Asia**).
4. **Competitors** โ ASO analytics suites (AppTweak, Sensor Tower, AppFollow, MobileAction) that *report* but don't rewrite; app-launch agencies (costly, slow); and generic AI copywriters (ChatGPT/Jasper) with no store rules and no validation.
5. **Our advantage** โ One **deterministic 28-rule engine grades both the human and the AI**: the AI's rewrite must clear the same โฅ 90 bar or it regenerates, so the output is provably store-legal, not "AI slop." It's **end-to-end** (grade โ full launch kit, not just analytics), **free with no API key to grade**, and **100% reproducible** in the browser.
---
## ๐ธ See it in Action

~15s, no audio โ paste a store link โ auto-fill โ the deterministic 27/100 grade โ a generated launch kit that re-grades itself to โฅ 90.
| 1 ยท Paste a link โ auto-fill | 2 ยท Grade (28 rules) | 3 ยท Landing โ live tool |
|---|---|---|
|  |  |  |
| Paste an App Store / Google Play URL โ the real icon, rating, screenshots, and every field fill in. | Deterministic score with per-field bars + exact fixes (light/dark). | A pitch that flows straight into the working grader. |
> โถ **Try it yourself, no signup, no key:** [launchcopilot.edycu.dev](https://launchcopilot.edycu.dev) โ paste **your** app's link and watch it grade.
## โ
Deterministic, not vibes
**The grader is deterministic โ no AI. 28 encoded App Store / Google Play rules, 150 passing tests, sub-millisecond p95.**
Reproduce with `npm run aso-lint` (or `npm test`) โ it scores any listing **0โ100** with per-field findings and exact fixes, and the *same* engine re-grades the AI's rewrite and forces **โฅ90 or regenerates**, so the machine is judged by the same deterministic grader as the human.
**Don't trust us โ verify it in your browser:** paste **your own** app's App Store / Google Play link on the [live site](https://launchcopilot.edycu.dev) (no signup, no key) and watch it grade, then generate a validated launch kit.
*Honest status: the ASO lint + repair loop is fully deterministic and load-bearing; the generative kit uses Claude (`claude-opus-4-8`) with a Haiku critic pass and runs in `DEMO_MODE=1` with no API key, so judges can reproduce everything locally.*
## ๐ก The Problem & Solution
Solo developers ship good apps and get **six downloads โ four of them friends.** Not because the app is bad, but because its store listing quietly breaks App Store Optimization rules they've never heard of, and launch marketing (ASO, Product Hunt mechanics, per-community etiquette) is a specialist skill they can't buy at $2โ5k an agency.
**LaunchCopilot performs the launch, not advice about it.** Paste your listing โ it grades your ASO against 28 deterministic rules, then generates a validated launch kit that's **provably store-legal โ because the same engine that grades you also grades the AI.**
**Key Features**
- ๐ **Paste-a-link auto-fill** โ drop an App Store / Google Play URL and the whole listing (title, subtitle, description, screenshots, rating) is pulled in for you. *(No AI โ official iTunes API + Play scrape.)*
- ๐ **28-rule ASO engine** โ deterministic, sub-millisecond, scores 0โ100 with per-field findings and exact fixes. Pure encoded store rules, no model.
- โป๏ธ **Validator-in-the-loop** โ the AI's rewritten listing is re-linted and **auto-repaired until it scores โฅ 90**; the model is held to the same bar as the human.
- ๐ญ **Persona-panel QA** โ a focus group synthesized from your own listing critiques every artifact in-character; weak ones regenerate before you see them.
- ๐ **Free API + CLI, no key to grade** โ `POST /api/analyze` ยท `npm run aso-lint` ยท runs fully in `DEMO_MODE`.
## ๐๏ธ Architecture & Tech Stack
**Next.js 16 + React 19 + Tailwind v4** (one codebase, app + API) ยท **Claude** (`claude-opus-4-8` writers + `claude-haiku-4-5` persona panel) ยท **Zod** schema-constrained generation ยท **Vitest / Playwright / semantic-release** for the harness.
```mermaid
flowchart LR
A["๐ Paste store link"] --> B["Extract listing
iTunes API ยท Play scrape"]
B --> C["28-rule ASO lint
deterministic ยท sub-ms ยท no AI"]
C --> D["Score 0โ100
+ per-field fixes"]
D --> E["Claude Opus
5 parallel writers"]
E --> F{"Re-lint the rewrite
score โฅ 90?"}
F -- "no ยท inject findings" --> E
F -- "yes" --> G["Claude Haiku
persona-panel QA"]
G --> H["๐ Launch kit
store ยท PH ยท social ยท community ยท press"]
```
**Where the interesting code lives** (for judges skimming the source):
| Capability | File |
|---|---|
| 28-rule ASO engine (the deterministic judge) | [`src/lib/aso-lint/rules.ts`](src/lib/aso-lint/rules.ts) |
| Paste-a-link extraction + `/api/extract` | [`src/lib/extract/index.ts`](src/lib/extract/index.ts) ยท [`src/app/api/extract/route.ts`](src/app/api/extract/route.ts) |
| Validator-in-the-loop kit pipeline | [`src/lib/pipeline/`](src/lib/pipeline/) |
| Free grading API (no key) | [`src/app/api/analyze/route.ts`](src/app/api/analyze/route.ts) |
| Self-contained pitch deck (served at `/pitch`) | [`public/pitch/index.html`](public/pitch/index.html) |
## ๐ฏ HackOnVibe theme fit
The theme is **effective promotion of a newly launched mobile app** โ LaunchCopilot is that, end to end: it grades the listing (promotion surface #1), rewrites it to pass, and produces the Product Hunt / social / community / press assets that *are* the launch. And it **recurs** โ every app update is a re-launch, so Re-grade + Content-Refill regenerate next week's kit in a click.
## ๐ Run it Locally (For Judges)
```bash
npm install
npm test # 150 unit tests
npm run aso-lint -- data/fixtures/pocketplants.json # CLI: 27/100 (F) + fixes
npm run dev # app at http://localhost:3000
```
> **Note for judges โ you can skip the API key.** Grading, the CLI, and the E2E suite all run with **no credentials** (`DEMO_MODE`). A key (`ANTHROPIC_API_KEY` in `.env.local`) is only needed to generate the AI launch kit; the deterministic grader never needs one.
**Grade any listing over HTTP โ no key required:**
```bash
curl -X POST http://localhost:3000/api/analyze \
-H 'content-type: application/json' -d @data/fixtures/pocketplants.json
```
## ๐งช Testing & engineering harness
A **6-stage CI/CD pipeline** runs on every push (Quality โ Security โ Build โ E2E โ Performance โ Deploy gate). When it goes green on `main`, a separate **Release** workflow runs [semantic-release](https://semantic-release.gitbook.io): it reads the conventional commits, computes the next version, updates the changelog, and publishes a tagged GitHub Release automatically.
```bash
npm run ci # lint + typecheck + tests with coverage (the quality gate)
npm run e2e # Playwright E2E (demo mode โ no API key)
npm run release:dry # preview the next semantic version locally
```
| Layer | Tooling | Status |
|---|---|---|
| Code quality | ESLint + TypeScript strict | โ
|
| Unit tests | Vitest โ **150 tests, 100% coverage** of the deterministic core | โ
|
| E2E tests | Playwright โ 3 suites (smoke ยท API ยท responsive), desktop + mobile | โ
|
| Security (SAST) | CodeQL | โ
|
| Security (SCA) | Dependabot + `npm audit` | โ
|
| Secret scanning | TruffleHog (verified) | โ
|
| Performance | Lighthouse CI | โ
|
| Releases | semantic-release (conventional commits โ semver, auto GitHub Release) | โ
|
| Community profile | CoC ยท Contributing ยท Security ยท issue/PR templates | โ
100% |
**Benchmark** (`npm run bench`, 5,000 runs over 3 fixtures): the lint engine runs at **p50 0.39 ms ยท p95 0.86 ms ยท ~2,180 listings/sec** โ fast enough to be the AI's inline validator on every repair attempt.
## ๐ Build notes โ a few bugs worth remembering
- **The SVG logo was pinned to (0,0).** In the animated README hero, a CSS `transform` (the bob animation) silently *overrode* the element's `transform="translate()"` attribute โ so the icon ignored every position I set. Fix: split positioning (outer group, attribute) from animation (inner group, CSS).
- **A stopword leak flipped a rule.** The "what does your app do" text was matched against the description without filtering stopwords, so "the/for/your" counted as real content โ caught only because a test expected a finding that didn't fire.
- **Google Play embeds rival apps' copy.** The paste-a-link extractor first grabbed the *longest* description on the page โ which was a competitor's. Fixed by matching the description to the target app via distinctive name/tagline tokens.
- **The social-proof regex missed real phrasing.** "Rated 4.8 by 3,200 users" didn't match the first pattern; a fixture pinned the expected score and surfaced it.
## โ ๏ธ Honest limitations
No auth yet ยท IP-based rate limits reset on redeploy ยท rules encode public ASO best practices, not Apple's private ranking algorithm ยท English-only v1 ยท paste-a-link extraction is best-effort โ the App Store subtitle is anchored to the app's own listing object (never a neighbouring app's), and anything it can't confidently read is flagged, never guessed.
## ๐ License
Released under the [MIT License](LICENSE). ยฉ 2026 Edy Cu.
Thank you for reviewing LaunchCopilot. โ Edy