Product design skills

references/topic-only-generation-flow.md

A supporting file of the persona skill.

Topic-Only Persona Generation Flow

This is the default flow when --segments is not specified. It mirrors TinyPersonFactory's _compute_sampling_dimensions() + _compute_sample_plan() approach as inline Claude reasoning.

Step 1: Diversity Dimension Inference (Claude internal reasoning)

Determine 3-5 diversity axes relevant to the topic and the target market. These are independent dimensions, not predefined clusters (segments). Each dimension has a range of possible values. Consider market-specific diversity factors (e.g., for Japan: urban vs regional, traditional vs modern lifestyle; for US: coastal vs heartland, urban vs rural).

Example for "canned coffee":

DimensionLow endHigh end
Usage frequencyNon-user / rareDaily heavy user
Health consciousnessDoesn't think about itActively health-focused
Price sensitivityPrice-insensitiveVery budget-conscious
Age / life stageStudent / young adultMiddle-aged / retired
Category attitudeSkeptical / prefers fresh brewEnthusiastic / loyal

Step 2: Diversity Target Assignment (per persona)

For N personas, assign each persona a target position across all dimensions to maximize spread:

  • N = 5 (default): Cover extreme positions on each major dimension
  • N = 3: Each persona should differ on at least 2-3 dimensions
  • N ≤ 5: Apply Small Panel Diversity Rules (see generation prompt)
  • Goal: No two personas should be "neighbors" in the dimension space

Example for N = 5 (canned coffee):

PersonaUsageHealthPriceAttitude
P1Heavy dailyLowLow sensitivityEnthusiastic loyalist
P2Rare / non-userHighHigh sensitivitySkeptical rejecter
P3ModerateMediumMediumPragmatic switcher
P4Heavy dailyHighLow sensitivityHealth-conscious upgrader
P5Light occasionalLowHigh sensitivityBudget convenience seeker

Step 3: Persona Generation

Use references/persona-generation-prompt-topiconly.md with:

  • {{topic}} = the research topic
  • {{market}} = the target market (default: "United States")
  • {{diversity_dimensions}} = the dimensions and target positions from Step 2
  • {{count}} = N (default: 5)

Generate all N personas in a single batch. Each persona receives a unique archetype label in the segment field (e.g., "Budget Pragmatist", "Health Explorer").

Step 4: manifest.json Creation

Create personas/{survey-id}/manifest.json:

{
  "survey_id": "canned-coffee-2026-03",
  "topic": "Canned coffee product concepts",
  "category": "Canned Coffee / RTD Beverages",
  "market": "United States",
  "generation_mode": "topic-only",
  "diversity_dimensions": [
    "usage_frequency",
    "health_consciousness",
    "price_sensitivity",
    "category_attitude"
  ],
  "total_personas": 5,
  "created": "2026-03-16",
  "persona_files": ["Marcus_Chen.json", "Diana_Okafor.json", "Jake_Morales.json", "Sofia_Rivera.json", "Tom_Nguyen.json"]
}

Difference from Segment-Driven Flow

AspectTopic-onlySegment-driven
User inputTopic onlyTopic + segment approval
GroupingPer-persona archetype labelsShared segment names
Default N515 (3 segments × 5)
Diversity methodIndependent dimension axesWithin-segment variation
ConfirmationPanel table onlySegment table → panel table
manifest.json"generation_mode": "topic-only""generation_mode": "segment-driven"
Cross-tab analysisPersona comparison tableSegment × response table

On this page