feat(market-research): add research-angles, scoring, and report rubrics

This commit is contained in:
fatih.bulut 2026-06-22 00:56:42 +03:00
parent ae840beaa3
commit c18ed6ab09
3 changed files with 138 additions and 0 deletions

View File

@ -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:** <12 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.

View File

@ -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 **23 categories**, **12 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

View File

@ -0,0 +1,43 @@
# Scoring Guide
Score every candidate 0100 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 0100.
## Scoring each component (0100)
**Cloneability** — higher = easier:
- 80100: simple CRUD/utility, few backend endpoints, no heavy ML, standard UI.
- 5079: moderate backend, some real-time or media, mainstream third-party SDKs.
- 049: heavy ML/on-device models, complex real-time/multiplayer, deep native, large content moat.
**Market opportunity** — higher = better:
- 80100: strong/growing demand, dated or weak incumbents, clear unmet need.
- 5079: healthy demand, beatable incumbents.
- 049: saturated, dominated by entrenched well-funded players.
**Monetization fit** — higher = better:
- 80100: category with proven ads+IAP and high ARPU (casual games, utilities).
- 5079: monetizable but moderate ARPU.
- 049: hard to monetize / users expect free.
**Niche gap** — higher = more underserved:
- 80100: clear language/region/segment with no quality option.
- 049: 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.