feat(market-research): add research-angles, scoring, and report rubrics
This commit is contained in:
parent
ae840beaa3
commit
c18ed6ab09
|
|
@ -0,0 +1,44 @@
|
|||
# Market Research Report Template
|
||||
|
||||
Fill every section. Write to `./work/market-research/research-<YYYY-MM-DD>.md`.
|
||||
|
||||
---
|
||||
|
||||
# Market Research — <YYYY-MM-DD>
|
||||
|
||||
## Run parameters
|
||||
- Angles this run: <categories / regions / niche lens chosen in Phase 0>
|
||||
- Focus argument: <the user's focus, or "none">
|
||||
- Sources: App Store RSS (<feeds/regions pulled>) + web search (<themes>)
|
||||
- Candidates after history exclusion: <N> (history had <M> prior suggestions)
|
||||
|
||||
## Top candidates (ranked)
|
||||
|
||||
| # | Name | Category | Clone | Market | Monet. | Niche | **Total** | Why now |
|
||||
|---|------|----------|------:|-------:|-------:|------:|----------:|---------|
|
||||
| 1 | … | … | 85 | 80 | 75 | 60 | **79** | one-line trend rationale |
|
||||
| … | | | | | | | | |
|
||||
|
||||
(At least 10 rows.)
|
||||
|
||||
## Candidate detail
|
||||
|
||||
For each of the top candidates:
|
||||
|
||||
### <name>
|
||||
- **Package (if known):** <com.x.y or "to resolve">
|
||||
- **What it does:** <1–2 sentences>
|
||||
- **Why now:** <trend signal: chart movement, news, dated incumbent…>
|
||||
- **Incumbents:** <who already does this and how weak/strong>
|
||||
- **Monetization:** <ads / IAP / subscription; ARPU note>
|
||||
- **Scores:** clone <>, market <>, monetization <>, niche <> → **total <>**
|
||||
- **Clone risk flags:** <heavy ML / native / content moat / none>
|
||||
|
||||
## Recommended picks
|
||||
|
||||
Top 3 to send to clone-app first, with one sentence each on why they lead.
|
||||
|
||||
## Next step
|
||||
|
||||
The user picks one or more candidates; each chosen candidate is resolved to a
|
||||
Google Play package/URL and handed to the `clone-app` skill for full feasibility.
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# Research Angles
|
||||
|
||||
A rotating menu of search angles. Each run picks a DIFFERENT combination so
|
||||
results vary run-to-run (paired with history exclusion). Do not use the same
|
||||
combination two runs in a row — vary at least the category and the region.
|
||||
|
||||
## How to rotate
|
||||
|
||||
1. Read `./work/market-research/history.json` if present; note the angles used
|
||||
recently (the `run_id` encodes the angle — see SKILL Phase 0).
|
||||
2. Pick **2–3 categories**, **1–2 regions**, and **1 niche lens** you did NOT use
|
||||
last run. If a focus argument was passed to the command, force one category to
|
||||
match it.
|
||||
3. Combine into concrete searches in Phase 1.
|
||||
|
||||
## Categories
|
||||
|
||||
- Hyper-casual games
|
||||
- Puzzle / word games
|
||||
- Productivity & utilities
|
||||
- Finance / fintech
|
||||
- Health & fitness
|
||||
- Education / kids
|
||||
- Photo & video editing
|
||||
- AI tools (chat, image, voice)
|
||||
- Social & community
|
||||
- Lifestyle / habit
|
||||
|
||||
## Regions (App Store RSS region codes)
|
||||
|
||||
- `us` (United States)
|
||||
- `gb` (United Kingdom)
|
||||
- `br` (Brazil — LATAM signal)
|
||||
- `in` (India)
|
||||
- `tr` (Türkiye)
|
||||
- `id` (Indonesia)
|
||||
- `de` (Germany)
|
||||
|
||||
## Niche lenses
|
||||
|
||||
- Underserved language/region (few quality localized apps)
|
||||
- Dated incumbent (top app last updated > 1 year ago)
|
||||
- Single-feature breakout (one job done very well)
|
||||
- Rising trend (news/ProductHunt/Reddit chatter in the last ~90 days)
|
||||
- Monetization mismatch (popular but weakly monetized → headroom)
|
||||
|
||||
## App Store RSS feeds to pull (via fetch-charts.py)
|
||||
|
||||
- `topfreeapplications` — demand/popularity signal
|
||||
- `topgrossingapplications` — monetization signal
|
||||
- `toppaidapplications` — willingness-to-pay signal
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# Scoring Guide
|
||||
|
||||
Score every candidate 0–100 as a weighted composite. Three PRIMARY components
|
||||
(cloneability, market opportunity, monetization fit) plus a secondary tiebreaker
|
||||
(niche gap). Show the component scores, not just the total, so picks are auditable.
|
||||
|
||||
## Components & weights
|
||||
|
||||
| Component | Weight | What it measures |
|
||||
|---|---|---|
|
||||
| Cloneability | 35% | How cheaply this rebuilds with clone-app + AI. |
|
||||
| Market opportunity | 35% | Demand, growth, and incumbent weakness. |
|
||||
| Monetization fit | 20% | Ads/IAP friendliness and category ARPU. |
|
||||
| Niche gap (tiebreaker) | 10% | Underserved region/language/segment. |
|
||||
|
||||
Total = 0.35·clone + 0.35·market + 0.20·monetization + 0.10·niche, each subscore 0–100.
|
||||
|
||||
## Scoring each component (0–100)
|
||||
|
||||
**Cloneability** — higher = easier:
|
||||
- 80–100: simple CRUD/utility, few backend endpoints, no heavy ML, standard UI.
|
||||
- 50–79: moderate backend, some real-time or media, mainstream third-party SDKs.
|
||||
- 0–49: heavy ML/on-device models, complex real-time/multiplayer, deep native, large content moat.
|
||||
|
||||
**Market opportunity** — higher = better:
|
||||
- 80–100: strong/growing demand, dated or weak incumbents, clear unmet need.
|
||||
- 50–79: healthy demand, beatable incumbents.
|
||||
- 0–49: saturated, dominated by entrenched well-funded players.
|
||||
|
||||
**Monetization fit** — higher = better:
|
||||
- 80–100: category with proven ads+IAP and high ARPU (casual games, utilities).
|
||||
- 50–79: monetizable but moderate ARPU.
|
||||
- 0–49: hard to monetize / users expect free.
|
||||
|
||||
**Niche gap** — higher = more underserved:
|
||||
- 80–100: clear language/region/segment with no quality option.
|
||||
- 0–49: well served everywhere.
|
||||
|
||||
## Output per candidate
|
||||
|
||||
For each candidate keep: `name`, `package` (if resolved), `category`, the four
|
||||
subscores, the weighted `total`, and a one-line rationale. Rank by `total`
|
||||
descending. Produce at least 10 candidates AFTER history exclusion.
|
||||
Loading…
Reference in New Issue