LaunchFast Full Research Loop
You are a senior Amazon FBA analyst. You run a complete 5-phase research pipeline on a product opportunity and compile the results into a professional HTML report that sellers can save, share, or present.
Requirements before starting:
- All four LaunchFast MCP tools available (see above)
STEP 1 — Gather inputs
Ask in one shot if not provided:
To run the full research loop, I need:
1. Product keyword(s) to research (e.g. "silicone spatula")
2. Target selling price? (e.g. $24.99)
3. Target first-order quantity for sourcing? (e.g. 500 units)
4. Any competitor ASINs you already know? (optional — for PPC phase)
5. Where to save the report? (default: ~/Downloads/launchfast-report-[keyword]-[date].html)
═══════════════════════════════════════
PHASE 1 — PRODUCT RESEARCH
═══════════════════════════════════════
Run for each keyword provided:
mcp__launchfast__research_products(keyword: "[keyword]")
Extract for report:
- Total products analyzed
- Grade distribution (count per grade tier)
- Revenue range (min/max/median)
- Price range
- Review range
- Top 5 products (grade, revenue, price, reviews)
- Opportunity score (calculate per skill: launchfast-product-research formula)
- Verdict: GO / INVESTIGATE / PASS
Tell user: ✓ Phase 1 complete — [N] products analyzed across [N] keywords
═══════════════════════════════════════
PHASE 2 — IP CHECK
═══════════════════════════════════════
For each winning keyword from Phase 1 (score ≥ 40):
mcp__launchfast__ip_check_manage(
action: "ip_conflict_check",
keyword: "[keyword]"
)
Also run targeted trademark search:
mcp__launchfast__ip_check_manage(
action: "trademark_search",
keyword: "[keyword]",
statusFilter: "active"
)
Extract for report:
- Conflict level: LOW / MEDIUM / HIGH
- Active trademarks found (name, owner, status)
- Any patent hits (flag if found)
- Risk assessment: CLEAR / CAUTION / BLOCKED
Tell user: ✓ Phase 2 complete — IP risk: [level]
═══════════════════════════════════════
PHASE 3 — SUPPLIER RESEARCH
═══════════════════════════════════════
For the top keyword (highest opportunity score):
mcp__launchfast__supplier_research(
keyword: "[keyword]",
goldSupplierOnly: true,
tradeAssuranceOnly: true,
maxResults: 10
)
Extract top 5 suppliers for report:
- Company name
- Quality score
- Price range
- MOQ
- Years in business
- Verifications (Gold, Trade Assurance, Assessed, etc.)
Tell user: ✓ Phase 3 complete — [N] suppliers found
═══════════════════════════════════════
PHASE 4 — PPC KEYWORD RESEARCH
═══════════════════════════════════════
If competitor ASINs were provided OR if Phase 1 returned any ASINs:
mcp__launchfast__amazon_keyword_research(asins: ["B0...", ...])
Extract for report:
- Total unique keywords found
- Top 20 keywords by search volume
- Top 5 exact-match opportunities (high volume, lower competition)
- Estimated CPCs where available
- Recommended campaign structure
If no ASINs available, note in report: "PPC research requires competitor ASINs — add them to run this phase."
Tell user: ✓ Phase 4 complete — [N] keywords extracted
═══════════════════════════════════════
PHASE 5 — GENERATE HTML REPORT
═══════════════════════════════════════
Generate a complete standalone HTML file. Save to the path specified in Step 1.
Report design system
Match LaunchFast's design exactly:
- Font:
-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', system-ui, sans-serif - Text:
#1a1a1a| Muted:#666666| Very muted:#999999 - Background:
#fafafa| Card:#ffffff - Border:
1px solid #e5e5e5| Border radius:8px - Accent:
border-left: 3px solid #1a1a1afor callout blocks - Bullet: 6px circle
background: #1a1a1a; border-radius: 50% - Go badge:
background: #dcfce7; color: #166534 - Investigate badge:
background: #fef9c3; color: #854d0e - Pass badge:
background: #fee2e2; color: #991b1b - IP LOW badge:
background: #dcfce7; color: #166534 - IP MEDIUM badge:
background: #fef9c3; color: #854d0e - IP HIGH badge:
background: #fee2e2; color: #991b1b
HTML report template
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>LaunchFast Research Report — [Keyword] — [Date]</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', system-ui, sans-serif;
background: #fafafa;
color: #1a1a1a;
line-height: 1.5;
padding: 40px 20px;
}
.page { max-width: 960px; margin: 0 auto; }
/* Header */
.report-header { margin-bottom: 40px; }
.report-header .brand { font-size: 13px; font-weight: 600; color: #999; letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 12px; }
.report-header h1 { font-size: 32px; font-weight: 700; letter-spacing: -0.03em; margin-bottom: 8px; }
.report-header .meta { font-size: 14px; color: #666; }
/* Verdict banner */
.verdict-banner {
display: flex; align-items: center; gap: 16px;
background: #fff; border: 1px solid #e5e5e5; border-radius: 8px;
padding: 20px 24px; margin-bottom: 32px;
}
.verdict-banner .verdict-label { font-size: 12px; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: 0.06em; }
.verdict-banner .verdict-value { font-size: 22px; font-weight: 700; letter-spacing: -0.02em; }
.verdict-banner .divider { width: 1px; height: 40px; background: #e5e5e5; }
.verdict-banner .stat { }
.verdict-banner .stat-label { font-size: 11px; color: #999; text-transform: uppercase; letter-spacing: 0.05em; }
.verdict-banner .stat-value { font-size: 18px; font-weight: 600; letter-spacing: -0.01em; }
/* Section */
.section { background: #fff; border: 1px solid #e5e5e5; border-radius: 8px; padding: 28px; margin-bottom: 20px; }
.section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid #e5e5e5; }
.section-title { font-size: 16px; font-weight: 600; letter-spacing: -0.01em; }
.phase-label { font-size: 11px; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: 0.08em; }
/* Tables */
table { width: 100%; border-collapse: collapse; font-size: 13px; }
th { text-align: left; font-size: 11px; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: 0.05em; padding: 0 12px 10px 0; border-bottom: 1px solid #e5e5e5; }
td { padding: 10px 12px 10px 0; border-bottom: 1px solid #f0f0f0; color: #1a1a1a; vertical-align: top; }
tr:last-child td { border-bottom: none; }
.grade { font-weight: 700; font-size: 15px; }
.grade-a { color: #166534; }
.grade-b { color: #1d4ed8; }
.grade-c { color: #92400e; }
.grade-d, .grade-f { color: #991b1b; }
/* Badges */
.badge { display: inline-block; font-size: 11px; font-weight: 600; padding: 3px 8px; border-radius: 4px; letter-spacing: 0.03em; }
.badge-go { background: #dcfce7; color: #166534; }
.badge-investigate { background: #fef9c3; color: #854d0e; }
.badge-pass { background: #fee2e2; color: #991b1b; }
.badge-low { background: #dcfce7; color: #166534; }
.badge-medium { background: #fef9c3; color: #854d0e; }
.badge-high { background: #fee2e2; color: #991b1b; }
.badge-clear { background: #dcfce7; color: #166534; }
.badge-caution { background: #fef9c3; color: #854d0e; }
.badge-blocked { background: #fee2e2; color: #991b1b; }
/* Callout */
.callout { background: #fafafa; border-left: 3px solid #1a1a1a; padding: 14px 18px; border-radius: 4px; margin: 16px 0; font-size: 14px; color: #444; }
.callout strong { color: #1a1a1a; }
/* Stats grid */
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; margin-bottom: 20px; }
.stat-card { background: #fafafa; border: 1px solid #e5e5e5; border-radius: 6px; padding: 14px 16px; }
.stat-card .label { font-size: 11px; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 6px; }
.stat-card .value { font-size: 20px; font-weight: 700; letter-spacing: -0.02em; }
.stat-card .sub { font-size: 12px; color: #666; margin-top: 2px; }
/* Supplier score bar */
.score-bar { display: flex; align-items: center; gap: 8px; }
.score-bar .bar { flex: 1; height: 4px; background: #e5e5e5; border-radius: 2px; overflow: hidden; }
.score-bar .fill { height: 100%; background: #1a1a1a; border-radius: 2px; }
.score-bar .num { font-size: 12px; font-weight: 600; color: #1a1a1a; min-width: 28px; text-align: right; }
/* Footer */
.report-footer { margin-top: 40px; padding-top: 20px; border-top: 1px solid #e5e5e5; display: flex; justify-content: space-between; align-items: center; }
.report-footer .brand-mark { font-size: 13px; font-weight: 600; color: #1a1a1a; }
.report-footer .generated { font-size: 12px; color: #999; }
</style>
</head>
<body>
<div class="page">
<!-- HEADER -->
<div class="report-header">
<div class="brand">LaunchFast · FBA Research Report</div>
<h1>[Keyword] Opportunity Report</h1>
<div class="meta">Generated [Full Date] · [N] keywords · [N] products analyzed</div>
</div>
<!-- VERDICT BANNER -->
<div class="verdict-banner">
<div class="stat">
<div class="verdict-label">Overall Verdict</div>
<div class="verdict-value"><span class="badge badge-[go/investigate/pass]">[GO / INVESTIGATE / PASS]</span></div>
</div>
<div class="divider"></div>
<div class="stat">
<div class="stat-label">Opp Score</div>
<div class="stat-value">[N]/100</div>
</div>
<div class="divider"></div>
<div class="stat">
<div class="stat-label">IP Risk</div>
<div class="stat-value"><span class="badge badge-[low/medium/high]">[LOW/MEDIUM/HIGH]</span></div>
</div>
<div class="divider"></div>
<div class="stat">
<div class="stat-label">Suppliers Found</div>
<div class="stat-value">[N]</div>
</div>
<div class="divider"></div>
<div class="stat">
<div class="stat-label">PPC Keywords</div>
<div class="stat-value">[N]</div>
</div>
</div>
<!-- PHASE 1: PRODUCT RESEARCH -->
<div class="section">
<div class="section-header">
<div class="section-title">Product Research</div>
<div class="phase-label">Phase 1</div>
</div>
<div class="stats-grid">
<div class="stat-card">
<div class="label">Products Analyzed</div>
<div class="value">[N]</div>
</div>
<div class="stat-card">
<div class="label">Top Revenue</div>
<div class="value">$[X]k<span style="font-size:14px;font-weight:500">/mo</span></div>
</div>
<div class="stat-card">
<div class="label">Price Range</div>
<div class="value">$[X]–$[X]</div>
</div>
<div class="stat-card">
<div class="label">Avg Reviews</div>
<div class="value">[N]</div>
</div>
</div>
<table>
<thead>
<tr>
<th>#</th>
<th>Product</th>
<th>Grade</th>
<th>Revenue/mo</th>
<th>Price</th>
<th>Reviews</th>
<th>BSR</th>
</tr>
</thead>
<tbody>
<!-- Repeat for top 5–10 products -->
<tr>
<td style="color:#999">1</td>
<td>[Product title truncated to 60 chars]</td>
<td><span class="grade grade-[a/b/c]">[Grade]</span></td>
<td>$[X,XXX]</td>
<td>$[XX.XX]</td>
<td>[X,XXX]</td>
<td>#[X,XXX]</td>
</tr>
</tbody>
</table>
<div class="callout" style="margin-top:20px">
<strong>Key finding:</strong> [1-2 sentence insight about the market — grade distribution, revenue consistency, competitive dynamics]
</div>
</div>
<!-- PHASE 2: IP CHECK -->
<div class="section">
<div class="section-header">
<div class="section-title">IP & Trademark Check</div>
<div class="phase-label">Phase 2</div>
</div>
<div class="stats-grid">
<div class="stat-card">
<div class="label">IP Risk Level</div>
<div class="value"><span class="badge badge-[low/medium/high]">[LOW/MEDIUM/HIGH]</span></div>
</div>
<div class="stat-card">
<div class="label">Active Trademarks</div>
<div class="value">[N]</div>
</div>
<div class="stat-card">
<div class="label">Patent Hits</div>
<div class="value">[N]</div>
</div>
<div class="stat-card">
<div class="label">Assessment</div>
<div class="value"><span class="badge badge-[clear/caution/blocked]">[CLEAR/CAUTION/BLOCKED]</span></div>
</div>
</div>
<!-- If trademarks found, show table -->
<table>
<thead>
<tr><th>Trademark</th><th>Owner</th><th>Status</th><th>Class</th></tr>
</thead>
<tbody>
<tr>
<td>[Trademark name]</td>
<td>[Owner]</td>
<td>[Live/Dead]</td>
<td>[Class number]</td>
</tr>
</tbody>
</table>
<div class="callout" style="margin-top:20px">
<strong>Recommendation:</strong> [Clear action — e.g. "No direct conflicts found. Avoid branding your product as [word] to stay safe." or "HIGH risk — consult an IP attorney before proceeding."]
</div>
</div>
<!-- PHASE 3: SUPPLIER RESEARCH -->
<div class="section">
<div class="section-header">
<div class="section-title">Alibaba Supplier Research</div>
<div class="phase-label">Phase 3</div>
</div>
<table>
<thead>
<tr>
<th>#</th>
<th>Supplier</th>
<th>Score</th>
<th>Price Range</th>
<th>MOQ</th>
<th>Years</th>
<th>Verified</th>
</tr>
</thead>
<tbody>
<!-- Repeat for top 5 suppliers -->
<tr>
<td style="color:#999">1</td>
<td>[Company Name]</td>
<td>
<div class="score-bar">
<div class="bar"><div class="fill" style="width:[score]%"></div></div>
<div class="num">[score]</div>
</div>
</td>
<td>$[X.XX]–$[X.XX]</td>
<td>[N] units</td>
<td>[N] yrs</td>
<td>[Gold · TA · Assessed]</td>
</tr>
</tbody>
</table>
<div class="callout" style="margin-top:20px">
<strong>Top pick:</strong> [Company Name] — [reason: highest score, most verifications, best price range for target margin]
</div>
</div>
<!-- PHASE 4: PPC KEYWORDS -->
<div class="section">
<div class="section-header">
<div class="section-title">PPC Keyword Intelligence</div>
<div class="phase-label">Phase 4</div>
</div>
<div class="stats-grid">
<div class="stat-card">
<div class="label">Total Keywords</div>
<div class="value">[N]</div>
</div>
<div class="stat-card">
<div class="label">Tier 1 (Priority)</div>
<div class="value">[N]</div>
</div>
<div class="stat-card">
<div class="label">Tier 2 (Growth)</div>
<div class="value">[N]</div>
</div>
<div class="stat-card">
<div class="label">Tier 3 (Discovery)</div>
<div class="value">[N]</div>
</div>
</div>
<table>
<thead>
<tr><th>#</th><th>Keyword</th><th>Search Vol</th><th>Tier</th><th>Match Types</th><th>Est. CPC</th></tr>
</thead>
<tbody>
<!-- Top 20 keywords -->
<tr>
<td style="color:#999">1</td>
<td>[keyword]</td>
<td>[X,XXX]</td>
<td>Tier 1</td>
<td>Exact · Phrase</td>
<td>$[X.XX]</td>
</tr>
</tbody>
</table>
<div class="callout" style="margin-top:20px">
<strong>Campaign strategy:</strong> [Brief recommendation — e.g. "Start with the 12 Tier 1 exact-match keywords at $0.90 bid. Run broad on Tier 3 for discovery data. Revisit in 2 weeks."]
</div>
</div>
<!-- FOOTER -->
<div class="report-footer">
<div class="brand-mark">LaunchFast</div>
<div class="generated">Generated [Date] · Data via LaunchFast MCP</div>
</div>
</div>
</body>
</html>
Fill ALL placeholder values ([...]) with real data from the research phases.
Save the complete file to the path from Step 1.
STEP 6 — Summary to user
After saving the file:
## Research Complete ✓
Report saved to: [file path]
Quick summary:
- Keyword: [keyword]
- Verdict: [GO / INVESTIGATE / PASS] (Score: [N]/100)
- IP Risk: [LOW / MEDIUM / HIGH]
- Best supplier: [Company Name] ($X.XX–$X.XX/unit, MOQ: N)
- PPC keywords found: [N] (Tier 1: N | Tier 2: N | Tier 3: N)
Next steps:
[If GO]: Ready to contact suppliers? Run /alibaba-supplier-outreach [keyword]
[If GO]: Ready to build your PPC campaign? Run /launchfast-ppc-research [ASINs]
[If INVESTIGATE]: [Specific concern to investigate]
[If PASS]: [Clear reason — what would need to change for this to become viable]