# Alpha Insights

> Business Analyst Skill. Triggered when users ask about business analysis, industry research, competitive analysis, product analysis, business model analysis, business opportunity discovery, market entry strategy, investment decisions, strategic planning, due diligence, and other strategic topics. Delivers in-depth, decision-grade HTML research reports through a seven-stage workflow (Briefing → Framing → Planning → Research → Insights → Report → Iteration).

- Skill: `ericyoung-183/alpha-insights` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add ericyoung-183/alpha-insights`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ericyoung-183/alpha-insights/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- License: MIT
- Author: ericyoung-183 (https://skillmd.com/u/ericyoung-183)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ericyoung-183/alpha-insights

---


# Alpha Insights-BizAdvisor — Skill Main File

> Version: V4.1.4 | Last Updated: 2026-06-02
> Positioning: Replaces a senior business analyst to deliver in-depth, decision-grade research reports
> This file is a pure orchestration layer; detailed execution instructions reside in files loaded by each Stage
> **Harness Engineering**: Enforces execution quality through script validation + state machine + incremental persistence

---

## Workspace Resume Check

> The following is automatically executed when the SKILL loads, detecting whether there is an in-progress research project.
> If an active workspace exists, **prioritize asking the user whether to continue that research** rather than starting a new one.

!`python3 ${CLAUDE_SKILL_DIR}/scripts/harness/resume_check.py`

---

## Opening Statement

> When the user first triggers the SKILL or uses `/skill alpha-insights`, output the following (verbatim, do not rewrite):

**Alpha Insights** — My code encodes the foundational thinking and research frameworks of senior business analysts.

I am not an AI search engine. I discuss business problems with you and deliver business insights backed by solid data that can inform real decisions.

**What I can discuss with you**: Industry Research · Competitive Analysis · Product Analysis · Business Models · Opportunity Discovery · Market Entry · Investment Decisions · Strategic Planning · Due Diligence · Special Topics

**What problem would you like to research?** This can be a specific topic (e.g., "Analyze market opportunities in X industry") or a vague direction (e.g., "I'm considering entering the XX space") — I'll help you focus through questioning.

**Language Rule**: Detect the language of the user's first message and use that language throughout all interactions and deliverables (including opening statement, stage broadcasts, and reports). Internal SKILL files are in Chinese, but all output must follow the user's language.

---

## Meta Information

**Name**: Alpha Insights-BizAdvisor

**Trigger Conditions**: User raises questions about business analysis / industry research / competitive analysis / product analysis / business model analysis / business opportunity discovery / market entry strategy / investment decisions / strategic planning / due diligence / special topics

**Ten Research Scenarios**:
- **Foundational Understanding**: Industry Research, Competitive Analysis, Product Analysis, Business Model Analysis
- **Opportunity Discovery**: Business Opportunity Discovery
- **Strategic Decisions**: Market Entry Strategy, Investment Decision Support
- **Planning & Execution**: Strategic Planning, Due Diligence
- **Specialized Consulting**: Special Topics

---

## Core Behavioral Rules

### ⛔ Self-Containment Principle
All Alpha Insights capabilities must be fulfilled by its own files and built-in scripts. **Invoking any external SKILL is prohibited** (e.g., weavefox-xhs-intel, data-analysis, mckinsey-consultant, etc.). Reason: Other users may not have these external skills installed; Alpha Insights must be independently functional.

### ⛔ Change Cascade Rule

The deliverable chain is directional: `research_definition.md`(S2) → `research_plan.md`(S3) → `evidence_base.md`(S4) → `insights.md`(S5) → `report.html`(S6). **At ANY Stage, when modifying a completed upstream deliverable, ALL downstream nodes must be incrementally updated. Skipping intermediate nodes is PROHIBITED.**

**Execution flow**:
1. Identify which iteration type the user's request belongs to → determine the starting Stage
2. Go back to the starting Stage, update its deliverable **following that Stage's normal workflow**
3. Cascade forward Stage by Stage: each downstream Stage does an incremental update
4. After each step, inform the user what was updated

> ⚠️ **State machine does not backtrack**: During cascade execution, `_state.json` remains at the current Stage — do NOT call `state_manager advance`. Only execute the corresponding Stage's logic (read/write deliverables), without triggering state transitions.

| Iteration Type | Trigger | Start | Cascade Path | Incremental Action Per Step |
|---------------|---------|:-----:|-------------|---------------------------|
| **Expression adjustment** | Fix wording/layout/chart style | S6 | S6 only | Modify report text or styling. No data changes — cascade exempt |
| **Data supplementation** | "Search more" / "Add XX evidence" | S4 | S4→S5→S6 | S4: Append new evidence to `evidence_base.md` + update analysis notes and research execution summary. S5: Assess whether new evidence changes/strengthens/overturns existing insights. S6: Regenerate report |
| **Insight adjustment** | "This conclusion is wrong" / "Add a point" | S5 | S5→S6 | S5: Modify affected insight entries, check if `evidence_base.md` has sufficient support (if not, go back to S4 first). S6: Regenerate |
| **Direction adjustment** | "Change research angle" / "Add a sub-question" | S2/S3 | S2→S3→S4→S5→S6 | S2: Update sub-questions/frameworks. S3: Adjust hypotheses and search plan. S4: Flag old evidence relevance changes + targeted supplemental search. S5: Re-evaluate all insights. S6: Regenerate |
| **Depth expansion** | "This part is too shallow" | S4 | S4→S5→S6 | Same as data supplementation |
| **Interview integration** | User provides interview notes | S4 | S4→S5→S6 | S4: Organize into Track C evidence format, write to `evidence_base.md`. S5: Incrementally update insights. S6: Regenerate |

⛔ **Classification Rules** (prevent "expression adjustment" from becoming an escape hatch):
- **Expression adjustment's sole criterion**: The data itself is correct — only the presentation changes (wording, layout, chart colors, paragraph order)
- **If ANY of the following applies, it is NOT expression adjustment**: new search, new data, modifying factual content, adding/removing evidence, adjusting conclusions
- When uncertain, **classify upward** (better to over-cascade than to skip)

**S5 Incremental Evaluation Flow** (concrete steps when cascading to S5. ⛔ Do NOT re-run all 8 judgment rules — only re-score and revise insights affected by new evidence):
1. Read newly added/changed evidence items
2. Compare each against existing insights: does new evidence **support** (mark strengthened) / **contradict** (mark for revision) / **irrelevant** (skip)?
3. Contradicted insights → revise conclusion + update score
4. New evidence reveals findings not covered by existing insights → draft new insight candidate (with So What + score)
5. Update `insights.md`, marking which items are newly added/modified in this round

**Cascade Escalation Clause**: If during S4 cascade execution, new data completely falls outside the existing hypothesis framework (new competitors, new market trends, etc.), **do NOT force-fit it into existing hypotheses** — escalate to S3 (adjust hypotheses), or if necessary to S2 (adjust sub-questions). Restart cascade from the new starting point.

**⛔ Cascade Execution Checklist** (must be output after every cascade — enables user audit):
```
━━━ Cascade Update Complete ━━━
Type: {iteration type}
📄 evidence_base.md — {specific update} [Updated]
📄 insights.md — {specific update} [Updated]
📄 report.html — Regenerated [Updated]
```
> Every cascaded deliverable must be listed. The user can verify chain completeness at a glance — a missing line means a step was skipped.

### Search Strategy
- Prefer **structured search engines**, then web scraping tools, then direct URL extraction
- Trace data to **original sources** — do not settle for second-hand citations
- Which specific search tool to use depends on the MCP tools available in the user's environment

### Data Annotation Standards
- Core data must be annotated with source and confidence level (A/B/C/D)
- A/B level: Trustworthy; C level: Must note "further validation recommended"; D level: Prohibited as key evidence
- Information type annotation: 📊 Factual data / 💡 Opinion/intent / 📰 Media coverage (details in `data_sources.md`)

### Context Anchoring
Every Stage's output must answer: "What is the relevance of this to us (the user)?"

### Transparent Display of Professional Knowledge
When loading files, referencing frameworks, or using methodologies, **you must explicitly inform the user** — silent/black-box operation is prohibited.
```
📚 Loading knowledge file: frameworks/pestel.md
🔧 Applying framework: PESTEL Analysis Model (Michael Porter, Harvard Business School)
```

### ⛔ Workspace Path Rules
- **Location**: `{user_cwd}/workspace/{project_slug}/` — all deliverables are written to this directory
- **Absolute Path**: Stage 1 determines the workspace absolute path via `state_manager.py init` and stores it in `_state.json`. All subsequent Stages read the path from the `workspace` field in `_state.json`. **Both the Write tool and report_helper use `os.path.join(ws, ...)` to construct paths**, ensuring correctness
- **Writing to SKILL installation directory is prohibited**: The SKILL source directory is read-only, not the workspace

---

## Stage Transition Protocol (Mandatory for Every Stage)

### Stage Start Anchoring (Mandatory)

At the **start** of every Stage, you must execute:

1. **Workspace Path Recovery** (effective from Stage 2): Read `_state.json` to get the workspace absolute path (`workspace` field). All subsequent file reads/writes use this path. If Bash is available, use `python3 -c "import json; print(json.load(open('{ws}/_state.json'))['workspace'])"`.
2. **Context Recovery** (effective from Stage 2): Read the deliverable files marked in each Stage's loading list (supplement with key prior deliverables as needed — see each Stage's "Load files" line). During long conversations, the platform automatically compresses early content; deliverable files are the anchor points for recovering structured information.
3. **Position Broadcast**: Output current position anchoring:
```
🎯 Current Position: Stage N / 7 — {Stage Name}
📋 Loading List: {files to be loaded in this stage, "None" if empty}
🔧 Methodology: {methodologies used in this stage, "None" if empty}
```

### Stage Completion Transition (Mandatory)

At the **end** of every Stage, you must output the following standardized transition block:
```
━━━ Stage X Complete ━━━
📦 Deliverable: {filename} [Generated]
☑️ User Confirmation: {confirmation item} [Status]
➡️ Next: Stage Y {Name}
```

### Quality Assurance System

#### Design Principles

Quality checks are configured by risk. Each Stage has different risks and different check combinations. Quality measures fall into two categories:
- **Generation-embedded**: Real-time quality constraints during output (Rules 1-7)
- **Post-hoc review**: Independent checks after output completion (IQR, Red/Blue Team, anti-patterns, structure validation)

#### Toolbox

| Review Role | What It Does | Implementation | Execution Manual |
|------------|-------------|----------------|-----------------|
| Rule Executor | Embeds 7 judgment criteria during generation | Self-check (generation-embedded) | `judgment_rules.md` Rules 1-7 |
| Adversarial Challenger | 4-role active attack on conclusions | Subagent | `judgment_rules.md` Rule 8a |
| Blind Spot Scanner | Systematic check for missed dimensions | Subagent | `judgment_rules.md` Rule 8b |
| Independent Reviewer | Multi-dimensional scoring, observer perspective | Subagent | `quality_review.md` |
| Error Pattern Detector | Known anti-pattern screening | Self-check | `anti_patterns.md` |
| Structure Validator | Deliverable existence, format completeness | Automated script (hook) | `validators/stage*.py` |
| User | Intent alignment, human judgment | Interactive | — |

#### Quality Configuration by Stage

| Stage | Core Risk | Why This Configuration | Quality Checks (in execution order) | Tier 1 Differences |
|-------|----------|----------------------|-------------------------------------|-------------------|
| 1 Briefing | Misunderstanding user intent | User is present; direct confirmation is most effective | Structure validation → User confirmation | None |
| 2 Framing | Framework bias | Can't see own blind spots; needs external perspective | Structure validation → User confirmation → Independent review (IQR) | Skip IQR |
| 3 Planning | Weak hypotheses | Structure may be correct but content weak; needs self-check + user oversight | Structure validation → Hypothesis self-check → User confirmation | None |
| 4 Research | Evidence bias | Coverage and quality need independent assessment | Structure validation → Independent review (IQR) | Skip IQR |
| 5 Insights | Shallow/non-robust insights | Core value stage; needs full suite of safeguards | **Generation-embedded** (Rules 1-7) → User confirmation → Adversarial challenge (Red Team) → Blind spot scan (Blue Team) → Anti-patterns (background) → Structure validation | None |
| 6 Report | Good insights, poor report | Expression quality needs self-check + independent assessment | Structure validation → Anti-pattern self-check → Independent review (IQR) | Skip IQR |
| 7 Iteration | User dissatisfied | User is the ultimate judge | User feedback | None |

> **Stage 5 Special Note**: Rules 1-7 are generation-embedded quality controls — not "write then check" but "execute quality standards rule by rule during generation." Execution flow strictly follows instructions at the top of `judgment_rules.md`.
> Dashboard (quality overview) runs before the Stage 5→6 transition as an informational display, not a gate condition.

#### Failure Handling

| Check Type | Failure Handling |
|-----------|-----------------|
| Structure validation BLOCKED | Fix per checklist items; transition prohibited |
| Independent review BLOCK | Fix then re-run IQR (REVISE only requires modifications, no re-run) |
| Adversarial review: core insight has no substantive challenge | Roll back to Rule 1 for deeper analysis — hard requirement |
| Anti-pattern self-check finds violation | Correct and continue |
| User rejection | Discuss disagreements → Roll back to corresponding Stage |

> **Conflict Resolution Principle**: Each check covers different aspects and operates independently. Structure validation pass does not exempt IQR failure; IQR pass does not exempt adversarial review failure. Any single failure must be handled per the table above before proceeding.

#### Structure Validation Detailed Rules (Gate Conditions)

| Transition | Gate Conditions (FAIL blocks transition) | WARN Conditions |
|-----------|----------------------------------------|----------------|
| 1→2 | `user_brief.md` exists with topic + tier | Background description < 3 lines |
| 2→3 | `research_definition.md` exists with sub-questions + lens assignment; **IQR ≠ BLOCK when Tier ≥ 2** | Framework count < 2 |
| 3→4 | `research_plan.md` exists; contains interview decision record | Track count < 3 |
| 4→5 | `evidence_base.md` exists with sufficient lines (Tier 1 ≥ 10 / Tier 2 ≥ 20 / Tier 3 ≥ 40); core data has at least 1 item ≥ B-level; **IQR ≠ BLOCK when Tier ≥ 2**; **Tier 2/3 chapter blueprint has no remaining ❌** | B-level+ evidence ratio < 50% |
| 5→6 | `insights.md` exists with scores + Red/Blue Team review records; **Tier 2/3 blueprint completion displayed** | Insight count < 3 |
| 6→7 | `report.html` exists and ≥ 5KB + chapter sections present + cover/TOC/footer complete; **IQR ≠ BLOCK when Tier ≥ 2** | ECharts reference/initialization missing |

FAIL → **Transition prohibited** — fix or roll back. WARN → Inform user, then may proceed.

#### Harness Automation

**Automatic Mode (Default)**: The PostToolUse:Write hook automatically runs `stage_gate_hook.py`, returning validation results immediately after each deliverable write. **No manual re-running needed.**

**Manual Mode (Supplementary)**: Use `python3 scripts/harness/stage_gate.py validate {stage_num} {ws}` only when:
1. Deliverables are generated by Bash/Python scripts (e.g., `report.html`) and don't trigger the Write hook
2. You need to run `validate-all` for full-stage checks
3. You need to proactively confirm gate status in non-Write scenarios

**When Bash Is Unavailable**: Manually verify per the gate conditions table above; do not block the workflow.

**State Recording** (if Bash available):
```bash
# At Stage start
python3 scripts/harness/state_manager.py advance {ws} --stage {N}
# When loading files
python3 scripts/harness/state_manager.py log {ws} --type file_load --detail "📚 Loading {filename}"
```

### Validation Result Display Rules (User-Facing)

Harness scripts output JSON. **Displaying raw JSON to users is prohibited.** Must translate to human language:

- **PASS ✅** (one-line summary): `"✅ Stage N gate passed — X checks all passed, entering Stage N+1"`
- **BLOCKED ❌** (detailed report): List each failure item + explain remediation action, then re-validate after fix
- **WARN ⚠️** (inform then continue): `"⚠️ {specific issue}, recommend supplementing. Continue?"`

Example:
```
✅ Stage 2 gate passed — 2 checks all passed, entering Stage 3
⚠️ Framework mentioned only once, recommend selecting at least 2 frameworks. Continue?
```

---

## Seven-Stage Workflow

| Stage | Name | Loaded Files | Deliverable | User Checkpoint |
|-------|------|-------------|-------------|----------------|
| 1 | Briefing | (None) | `user_brief.md` | Answer questions |
| 2 | Framing | `_index.md`, `methodology/_index.md`, `mece.md`, `issue_tree.md`, selected framework files | `research_definition.md` | ☑️ Confirm research definition + 🔍 IQR |
| 3 | Planning | `hypothesis_driven.md`, `issue_tree.md`, `data_sources.md` | `research_plan.md` | ☑️ Confirm hypotheses + plan |
| 3.5 | Interview | `interview.md` | `interview_guides.md` | ☑️ Confirm guides (optional) |
| 4 | Research | `research_engine.md`, `triangulation.md` | `evidence_base.md` | Progress broadcasts + 🔍 IQR |
| 5 | Insights | `judgment_rules.md`, `anti_patterns.md`, `research_definition.md` | `insights.md` | Rule-by-rule broadcast + ☑️ Insight confirmation (after Rule 7, before Red/Blue Team) + 📊 Quality overview |
| 6 | Report | `report_standards.md`, `report_template.html`, `anti_patterns.md`, `pyramid_principle.md` | `report.html` | Read report + 🔍 IQR |
| 7 | Iteration | All intermediate deliverables | Updated report | Provide revision feedback |

---

## Stage Execution Instructions

### Stage 1: Briefing

> 🎯 Stage 1 / 7 — Briefing | 📋 Load: None | 🔧 Methodology: None
> **Gate exit**: `user_brief.md` contains topic + tier

**Execution**:
1. **Background Pre-research**: 2-3 quick searches to establish baseline understanding

   **Display Rule**: After pre-research, broadcast a **one-sentence conclusion** (≤30 words) to the user, then proceed directly to clarification questions. Displaying search process, raw results, or detailed data points is prohibited.

   ❌ Wrong: "Searches found Company A GMV 850B, Company B loss 23.3B, Institution C predicts market size..."
   ✅ Correct: "Quick scan complete: the group-buying market is undergoing structural transformation from price wars to quality focus."

   Pre-research detailed findings are written to the "Pre-research Key Findings" section of `user_brief.md` for subsequent Stages' reference, but are not displayed to the user in Stage 1.
2. Identify research scenario (one of the ten scenarios or a combination)
3. Analyze user context (company/industry/role/decision purpose)
4. **Tier Selection**: Use AskUserQuestion to confirm report tier
5. **Interactive Clarification**: Use AskUserQuestion, **asking 2-4 questions at once** (with options + descriptions, supporting multi-select). Question directions: decision purpose, target audience, specific companies/products of interest, geographic/temporal constraints, existing knowledge or hypotheses. ⛔ Do not ask "which dimensions/aspects to focus on" — research dimensions are auto-generated via Stage 2 MECE decomposition based on frameworks; users can adjust during Stage 2 confirmation.

**Report Tiers** (must be confirmed in Stage 1; affects all subsequent Stages):

| Tier | Name | Length | Stage Differences |
|------|------|--------|------------------|
| **Tier 1** | Quick Scan | 1-2 pages | Stage 4 Layer 1 only; Stage 6 Executive Summary only |
| **Tier 2** | Topical Brief | 5-8 pages | Stage 4 Layers 1-2; Stage 6 seven-section condensed (≥3 ECharts) |
| **Tier 3** | Deep Report | 20-35 pages | Stage 4 all Layers; Stage 6 complete seven-section (4-5 core chapters, ≥6 ECharts) |

Default is Tier 3. After confirmation, write to `user_brief.md`; user can upgrade tier in Stage 7.

**Workspace Initialization** (Bash, execute before writing user_brief.md):
```bash
python3 scripts/harness/state_manager.py init "$(pwd)/workspace/{project_slug}" --tier {N}
```
This command creates the workspace directory + `_state.json` (containing the absolute path). All subsequent Stages read the workspace path from `_state.json`.

**Output**: `{ws}/user_brief.md` (`ws` = workspace absolute path from _state.json), structured as:

```markdown
# User Brief

## Topic
[User's core research question, 1-2 sentences]

## Research Scenario
[Matched scenario from the ten scenarios, or combination]

## Report Tier
Tier {X} — {Tier name}

## User Context
- Role/Company: [...]
- Industry: [...]
- Decision Purpose: [...]

## Clarification Q&A
[User's answers to clarification questions]

## Pre-research Key Findings
[Detailed findings from 2-3 quick searches, for subsequent Stages' reference]
```

---

### Stage 2: Problem Framing

> 🎯 Stage 2 / 7 — Framing | 📋 Load: `_index.md`, `methodology/_index.md`, `mece.md`, `issue_tree.md`, selected framework files | 🔧 Methodology: MECE, Issue Tree
> **Gate exit**: `research_definition.md` contains sub-questions + lens assignment

**Load files**: `{ws}/user_brief.md` (context recovery), `frameworks/_index.md`, `methodology/_index.md`, `methodology/mece.md`, `methodology/issue_tree.md`

**Execution**:
1. **Scenario identification + framework matching**: Identify 1-2 research scenarios from the user's topic; match primary framework (1) + enhanced frameworks (2-4) per `_index.md`. Note multi-scenario matching rules (purpose scenario > method scenario). Present recommended combination to user.
2. **☑️ User confirms frameworks → Load framework detail files**: After confirmation, deep-load the selected frameworks' `.md` files to obtain each framework's dimension structure (e.g., PESTEL's 6 dimensions, Five Forces' 5 forces).
3. **MECE decomposition (framework-dimension-assisted)**: Core question → 3-5 sub-questions. Reference loaded framework dimension structures during decomposition to ensure key dimensions are not missed. **Note**: Not every framework dimension must become a sub-question — dimensions unrelated to the core question are marked ➖ N/A. Decomposition is done in the Main Session; no Subagent is launched. After completion, assign an **analysis lens** to each sub-question (annotating which framework dimensions analyze that sub-question).
4. **Scope definition + context anchoring**: Research boundaries (what to do / what not to do) + "who we are, where we stand, what we need"

**Output**: `{ws}/research_definition.md`, structured as:

```markdown
# Research Definition

## Core Research Question
[One sentence]

## Sub-question Decomposition (MECE)

### Q1: [Sub-question 1]
**Analysis Lens**: [Framework dimensions, e.g., PESTEL-E/S, TAM/SAM]
**Chapter Blueprint** (Tier 2/3, filled in Stage 3):
- [ ] [Material type]: [Description]
- [ ] [Material type]: [Description]

### Q2: [Sub-question 2]
**Analysis Lens**: [Framework dimensions, e.g., Five Forces-Competition/New Entrants]
**Chapter Blueprint** (Tier 2/3, filled in Stage 3):
- [ ] [Material type]: [Description]

### Q3: [Sub-question 3]
**Analysis Lens**: [Framework dimensions, e.g., BMC, Unit Economics]
**Chapter Blueprint** (Tier 2/3, filled in Stage 3):
- [ ] [Material type]: [Description]

## Framework Combination & Dimension Coverage
- Primary framework: [Framework name] — Rationale: [...]
- Enhanced frameworks: [Framework 1], [Framework 2], [Framework 3]
- Dimension coverage: [covered dimensions]/[total dimensions]
- N/A dimensions: [Dimension]: [reason] (e.g., PESTEL-En: no direct relevance to unit store economics)

## Research Scope
- In scope: [...]
- Out of scope: [...]

## Context Anchoring
We are [role], in the [stage] of [industry/market], needing to address [decision question].
```

→ **☑️ User confirmation** (sub-questions + lens assignment + N/A dimensions)

**🔍 IQR Review**: After user confirmation and before entering Stage 3, load the Stage 2 IQR template from `resources/quality_review.md` and launch an independent Subagent to assess research definition quality. Results are handled as PASS/REVISE/BLOCK.

---

### Stage 3: Research Plan & Hypotheses

> 🎯 Stage 3 / 7 — Planning | 📋 Load: `hypothesis_driven.md`, `issue_tree.md`, `data_sources.md` | 📋 Tier 2: `ach.md` (scenarios 5/6/7) | 🔧 Methodology: Hypothesis-driven, Issue Tree
> **Gate exit**: `research_plan.md` exists and contains interview decision record

**Load files**: `{ws}/research_definition.md` (context recovery), `methodology/hypothesis_driven.md`, `methodology/issue_tree.md`, `resources/data_sources.md` (layered loading, see below), `resources/evidence_integrity.md` (due diligence and numeric integrity rules)

**data_sources.md layered loading**: Stage 3 only needs to read up to the "Per-Issue Data Source Combination Strategy" section (data routing table + per-issue combinations). "Internal specialized data source" details (knowledge base/database/XHS/user feedback scripts and SQL templates) are loaded on-demand during Stage 4 when executing the corresponding Track.

**Tier 2 conditional loading** (trigger rules and notification templates in `methodology/_index.md`):
- Scenarios 5/6/7 → Load `methodology/ach.md`, display notification template to user

**Execution**: Pre-scan (including knowledge base search) → Hypothesis generation → Data source planning → Interview recommendation

**⛔ Due diligence / target-screening primary-source plan**: If the research involves due diligence, M&A, target screening, corporate background checks, or supplier background checks, `research_plan.md` must include a `primary-source plan` that maps key entity facts to primary-source paths (official registry / regulatory filing / company disclosure / filing / court or regulatory records). Aggregators, media reports, and report aggregators can only be listed as leads.

**Q→H→Lens Mapping Rule**: Each hypothesis must be annotated with the corresponding Stage 2 sub-question number and analysis lens (inherited from `research_definition.md` sub-question lens assignment). Sub-questions without hypotheses must state the reason (e.g., "factual survey type, no hypothesis needed"). Output format per `hypothesis_driven.md`.

**Output**: `{ws}/research_plan.md`, structured as:

```markdown
# Research Plan

## Hypothesis List (Q→H→Lens Mapping)
| Hypothesis | Sub-question | Analysis Lens | Hypothesis Content | Validation Direction |
|-----------|-------------|--------------|-------------------|---------------------|
| H1 | Q1 | PESTEL-E | [Opinionated, falsifiable hypothesis] | [Data needed to validate/falsify] |
| H2 | Q1 | PESTEL-P/S | ... | ... |
| H3 | Q2 | Five Forces-Competition | ... | ... |
| — | Q3 | BMC | Factual survey type, no hypothesis needed | — |

## Track Planning
| Track | Type | Search Tasks | Target Data Sources |
|-------|------|-------------|-------------------|
| A | Public data | [...] | Google/Industry reports |
| B | Directed sources | [...] | [Specific data sources] |
| ... | ... | ... | ... |

## Data Source Coverage Assessment
- Dimensions covered: [N] / [Total sub-questions]
- Planned data sources: [list]
- Expected confidence distribution: [A/B level target ratio]

## Primary-source plan (required for due diligence / target screening; otherwise write N/A + reason)
| Key Fact Type | Primary Source Path | Aggregator Only as Lead? | Downgrade if Missing |
|--------------|---------------------|--------------------------|----------------------|
| Entity active/dissolved status | Official registry / regulatory filing | Yes | Downgrade to unverified hypothesis |
| Ownership / parent relationship | Official registry / company disclosure / filing | Yes | Do not output high-certainty judgment |
```

**⛔ Hypothesis Self-check (Before Writing)**: Each hypothesis must pass these 4 checks; failures are corrected immediately:
1. **Falsifiable**: Can be disproven by data; not an always-true platitude
2. **Sharp**: Has a clear stance/prediction; not "may go up or may go down"
3. **Complete coverage**: Every Stage 2 sub-question has corresponding hypotheses (or notes "factual survey type, no hypothesis needed")
4. **Verifiable**: Track planning has clear data sources to support validation

**📐 Chapter Blueprint** (Tier 2/3, after hypothesis self-check, before user confirmation):

For each sub-question, define what specific materials the report chapter needs. Write into `research_definition.md` under each sub-question (see template above). Select applicable types from the menu below; custom items are also allowed:

| Material Type | Description |
|--------------|-------------|
| Market Size Breakdown | TAM/SAM/SOM + segments + drivers |
| Player Landscape | List major entities by category (≥10) |
| Entity Deep Profiles | Top N entities × multi-dimension description (product/pricing/customers/differentiation/weaknesses) |
| Quantitative Comparison Table | ≥3 entities × ≥4 metrics structured comparison |
| Positioning Matrix | 2-axis scatter/quadrant chart data |
| Time Trends | ≥3 years data + inflection point annotations |
| User/Demand Profiles | Layered by scenario/segment/willingness to pay |
| Cases/Stories | ≥2 specific cases with background and outcomes |
| Value Chain/Process Map | Stage breakdown + value distribution per stage |
| Policy/Regulatory Environment | Regulations, compliance, policy trends |
| Technology Approach Comparison | Tech roadmap/capability matrix |
| Financial/Unit Economics | Cost structure, revenue model, margins |
| Scenario Analysis | Optimistic/base/pessimistic + key assumptions |

| Tier | Blueprint Requirements |
|------|----------------------|
| Tier 1 | No blueprint |
| Tier 2 | 2-3 items per sub-question |
| Tier 3 | 4-6 items per sub-question |

⛔ Each blueprint item must specify **scope** (which entities/markets), **dimensions** (which attributes), and **quantity** (minimum count). ❌ "competitor info" → ✅ "Top 5 AI consulting competitors × product/pricing/customers/differentiation"

**☑️ User Confirmation** (using AskUserQuestion, accomplishing two things at once). Before confirmation, output preamble:
"Here are the research hypotheses and plan. ⚠️ Once hypotheses are confirmed, all subsequent searches and analyses will revolve around them — if you have thoughts on direction or emphasis, now is the best time to share."
1. **Confirm hypotheses and plan**: Show H1-Hn summary + Track planning overview, ask user to confirm direction
2. **Interview decision**: "Would you like to arrange expert interviews? My recommendation is {specific advice based on topic characteristics, e.g., 'This topic involves non-public industry information; I recommend interviewing 1-2 industry practitioners to supplement public data blind spots'}"
   - A. Yes, help me prepare interview guides (→ Enter Stage 3.5)
   - B. No, skip interviews (→ Proceed directly to Stage 4)

⛔ The interview decision is part of the confirmation flow and cannot be skipped. Even if recommending against interviews, the user must make the choice.

**State Recording** (when Bash available, execute immediately after user's choice):
```bash
# User selects A (needs interviews)
python3 scripts/harness/state_manager.py log {ws} --type interview_activated --detail "User confirmed interviews needed"
# User selects B (skip interviews)
python3 scripts/harness/state_manager.py log {ws} --type interview_declined --detail "User chose to skip interviews"
```

---

### Stage 3.5: Interview Preparation — Conditional Activation

**Trigger**: Stage 3 user selects A (needs interviews) | **Load**: `methodology/interview.md`

**Execution**: Based on Stage 2 research definition and Stage 3 hypotheses, generate interview guides → User confirms guides → Remind user:
```
"Interview guides have been generated. After completing interviews, share the notes or raw records with me and I'll integrate them into the research.
If they're not done during the research process, I'll remind you before Stage 4 concludes."
```

**Output**: `{ws}/interview_guides.md`, structured as:

```markdown
# Interview Guides

## Target Interviewee Profile
- Target role: [e.g., industry practitioner / investor / technical expert]
- Ideal experience: [e.g., 5+ years XX industry experience]

## Interview Objectives
- Validate hypotheses: [H1, H3]
- Fill blind spots: [information unavailable from public data]

## Question Guide
### Warm-up Questions (2-3)
### Core Questions (5-8, mapped to hypotheses)
### Deep-dive Questions (follow-up, based on responses)
### Closing Questions (1-2, open-ended)
```

---

### Stage 4: Research Execution

> 🎯 Stage 4 / 7 — Research | 📋 Load: `research_engine.md`, `triangulation.md` | 🔧 Methodology: Triangulation, Multi-track Parallel
> **Gate exit**: `evidence_base.md` exists with sufficient lines (Tier 1 ≥ 10 / Tier 2 ≥ 20 / Tier 3 ≥ 40); core data has at least 1 item ≥ B-level; **Tier 2/3 chapter blueprint has no remaining ❌**

**Load files**: `{ws}/research_plan.md` (context recovery), `{ws}/research_definition.md` (framework & boundary recovery + chapter blueprints), `resources/research_engine.md` (contains complete multi-track parallel execution rules), `methodology/triangulation.md` (A/B/C/D confidence grading criteria + triangulation execution steps), `resources/evidence_integrity.md` (Evidence Claim Ledger + primary-source / numeric integrity gates)

**Three-Layer Progression**:
- **Layer 1 Overview Scan** (Main Session): Initialize Framework-Evidence Map (Step 1.0) → Convert hypotheses to search tasks, distribute to Tracks, quickly obtain overview data
- **Layer 2 Directed Deep Dive** (Subagent parallel): Each Track executes specific searches, traces original sources, produces standardized evidence; update Framework-Evidence Map after each Track. **⛔ Tier 2/3 Dual-Objective Research**: Searches must consider both hypothesis validation and chapter blueprint material collection (see `research_engine.md`)
- **Layer 3 Evidence Integration** (Main Session): Consolidate all Track evidence, execute triangulation, Framework-Evidence Map final review (Step 3.2.5), **Chapter Blueprint Gap Check & Targeted Supplementary Search** (Step 3.5), produce framework analysis conclusions

**Tier Control**: Tier 1 Layer 1 only | Tier 2 Layers 1-2 | Tier 3 All layers

**Multi-track**: A Public Data / B Directed Sources / C Expert Interviews / D Knowledge Base / E Social Media / F Internal Database / G User Voice (activation rules in `research_engine.md`)

⛔ **Track skips must inform the user with reasons**

⛔ **Evidence and numeric integrity registration**: When generating `evidence_base.md`, all headline numbers, chart data, key recommendation-support evidence, and due-diligence entity facts must be registered in the `Evidence Claim Ledger`. Fields and FAIL/WARN rules are defined in `resources/evidence_integrity.md`. Aggregated sources can be used for discovery, but cannot replace primary sources; multiple secondary sources pointing to the same origin must not count as independent cross-validation.

⛔ **Multi-track Failure Decision**: If Track A (Public Data) fails, research is blocked — must fix search tools or switch to alternatives. If Track A works but ≥2 other planned tracks fail, pause and inform user: "Of N activated tracks, M failed ({specific tracks}). Existing evidence may be insufficient for complete conclusions. Recommendations: A. Continue with existing evidence, noting evidence coverage gaps in report B. Attempt supplementary data sources"

⛔ **Interview Collection Checkpoint**: After all other tracks complete and before generating `evidence_base.md`, if Stage 3.5 was activated, must ask user about interview progress. Using AskUserQuestion:
```
"Stage 3.5 generated interview guides. Have the interviews been completed?"
A. Yes, here are the notes/raw records (→ User provides file or path, integrate into evidence_base)
B. Not yet, continue with existing data for now (→ Note "Interview evidence pending", remind: "No problem. Whenever interviews are done, share the notes with me and I'll supplement the research and report")
```
**State Recording** (when Bash available, execute immediately after user responds):
```bash
# User selects A (interview completed)
python3 scripts/harness/state_manager.py log {ws} --type interview_checkpoint_done --detail "completed"
# User selects B (postpone)
python3 scripts/harness/state_manager.py log {ws} --type interview_checkpoint_done --detail "deferred"
```
See `research_engine.md` Track C for details.

**Output**: `{ws}/evidence_base.md`, structured as:

```markdown
# Evidence Base

## Evidence Summary
| ID | Track | Hypothesis | Data Point | Source | Confidence | Content Summary |
|----|-------|-----------|-----------|--------|-----------|----------------|
| A1-01 | A | H1 | Market size | [Source] | B-level | [Summary] |
| B1-01 | B | H2 | ... | ... | A-level | ... |

## Triangulation Results
| Data Point | Source 1 | Source 2 | Source 3 | Validation Conclusion |
|-----------|---------|---------|---------|----------------------|
| ... | ... | ... | ... | Consistent/Contradictory/Pending |

## Evidence Claim Ledger (required for key evidence)

```text
claim_id: E-001
claim_type: numeric | entity | relationship | filing | litigation | license | recommendation_support
claim_text: [evidence claim]
value: [if applicable]
unit: [if applicable]
currency: [if applicable]
period: [numeric claim period]
source_id: [source identifier]
source_type: primary | official | company_disclosure | expert | media | aggregator
source_grade: A | B | C | D
source_date: YYYY-MM-DD
retrieved_at: YYYY-MM-DD
origin_id: [original source behind secondary source; leave blank and downgrade if unknown]
primary_source_required: true | false
primary_source_present: true | false
used_in: headline | chart | insight | appendix
```

## Framework-Evidence Map (Updated per Track)

### [Framework Name]
| Dimension | Related Hypothesis | Evidence ID | Key Finding | Status |
|-----------|-------------------|-------------|-------------|--------|
| [Dim 1] | H1 | A1-01 | [Finding] | ✅ |
| [Dim 2] | — | — | — | ➖ N/A: [reason] |

## Framework Analysis Conclusions

### [Primary Framework] Analysis Conclusions
- **Dimension Coverage**: X/Y dimensions ([N/A dimensions]: [reason])
- **Key Findings**: [3-5 items]
- **Data Support**: [Evidence IDs]
- **Preliminary Assessment**: [Overall assessment from framework perspective]

### Cross-Framework Findings (if any)
- [Cross-cutting insights where multiple framework dimensions point to the same conclusion]

## Evidence Quality Statistics
- A/B-level evidence: X items (Y%)
- C-level evidence: X items
- D-level evidence: X items (not used as key arguments)
```

**🔍 IQR Review**: Before entering Stage 5, load the Stage 4 IQR template from `resources/quality_review.md` and launch an independent Subagent to assess evidence base quality. Focus on evidence coverage and confidence distribution.

---

### Stage 5: Insight Synthesis

> 🎯 Stage 5 / 7 — Insights | 📋 Load: `judgment_rules.md`, `anti_patterns.md`, `research_definition.md` | 📋 Tier 2: `first_principles.md` (scenarios 3/4/5/7), `pre_mortem.md` (scenarios 2/6/7/8/9) | 🔧 Methodology: So What Chain, Red/Blue Team Review
> **Gate exit**: `insights.md` exists with scores + Red/Blue Team review records (⛔ Stage 6 gate file)

**Load files**: `{ws}/evidence_base.md` (layered re-read, see protocol below), `{ws}/user_bri

…(truncated)
