User Persona Synthesizer
This skill extracts recurring user profiles from real CustDev interview transcripts and generates structured, evidence-backed persona cards. It works from any free-form text or markdown files — no integrations, no special format required.
Input:
- Interview transcripts or notes: pasted text, markdown files, or plain text (any format accepted)
- Optional: focus attributes (e.g., "focus on goals and frustrations only") or persona count preference
Output:
- Markdown document with a summary table, per-persona cards (with verbatim quotes), and synthesis notes
Language Detection
Detect the user's language from their message:
- If Russian (or contains Cyrillic): respond in Russian
- If English (or other Latin-script language): respond in English
- If ambiguous: respond in the language of the trigger phrase used
Instructions
Step 1: Validate and Parse Input
Check that interview content is provided (pasted text or file reference)
- If input is empty or whitespace only: Stop. Return: "No transcripts provided. Paste interview notes or reference files to begin persona synthesis."
Detect input format
- If input resembles structured data (CSV column headers, spreadsheet rows): flag it — "Structured data detected — extracting patterns from columns. For richer personas, raw interview text works better." Proceed.
- If input is clearly not interview content (product spec, article, meeting minutes with no respondent voices): Stop and report — "This doesn't look like interview transcripts. Persona synthesis requires user interview content — notes, quotes, or dialogue with respondents."
- If user explicitly requests synthetic/hypothetical personas (not from real data): Stop and report — "This skill synthesizes personas from real interview data only. For synthetic personas, ask Claude directly without this skill."
Count the number of distinct interviews or respondents
- Use explicit separators ("Interview 1:", "Respondent:", "---", numbered sections) or infer from context
- Report count: "Found N interview(s). Proceeding with synthesis."
- If only 1–2 interviews detected: flag low sample — "Low sample size (N interviews) — patterns may not be representative. Consider adding more interviews before sharing with stakeholders." Continue.
Step 2: Extract Attributes per Respondent
Check if the user specified a focus attribute list (e.g., "focus on goals and frustrations only")
- If yes: extract only the specified attributes; skip others
- If no: extract all attributes listed below
For each interview, extract the following attributes where present:
- Role / context: job title, industry, company size, usage environment
- Goals: what they're trying to achieve; motivations
- Frustrations: pain points, complaints, blockers
- Behaviours & workarounds: how they currently solve the problem; tools used
- Vocabulary: recurring words or phrases they use to describe the domain
- Key quotes: verbatim sentences that capture their perspective (capture at least 1–2 per respondent)
Build a per-respondent attribute map (internal working structure; not shown to user)
Step 3: Cluster Respondents into Persona Candidates
Compare attribute maps across all respondents
Group respondents who share ≥2 significant attributes (role pattern, shared goal, or shared frustration)
- Each group with ≥2 respondents becomes a persona candidate
- Solo respondents (no matches) are noted as outliers in Synthesis Notes
If no clusters form (all respondents unique): Report — "No clear clusters found across N interviews. Possible reasons: small sample, very diverse audience, or inconsistent interview questions." Offer to generate individual profiles instead.
If a persona count preference was provided: adjust clustering to aim for that count (merge close clusters or split divergent ones)
Step 4: Name and Describe Each Persona
For each cluster, generate a descriptive label that captures the dominant pattern
- Format: "The [Adjective] [Role or Archetype]" (e.g., "The Overwhelmed Manager", "The Data-Driven Analyst")
- Label should be memorable and based on dominant attributes, not invented arbitrarily
Write a 2–3 sentence profile description covering: who they are, what they do, and what they need
Step 5: Build Persona Cards
For each persona, generate a structured card with:
- Name (descriptive label from Step 4)
- Respondent count (N of M)
- Profile description
- Goals (bullet list)
- Frustrations (bullet list)
- Key quotes (verbatim, sourced from transcripts)
- Behaviours & workarounds (bullet list)
Step 6: Write Synthesis Notes
- Identify overlaps — attributes shared across multiple personas
- Identify tensions — contradictory needs between personas (e.g., Persona A wants automation, Persona B wants manual control)
- Identify gaps — underrepresented segments if detectable from transcript context
- Note any outlier respondents who didn't fit any cluster
Step 7: Assemble and Output Document
- Generate markdown document following the Output Format below
- Ensure summary table appears first, followed by individual persona cards, then synthesis notes
- Validate: no persona card is missing a verbatim quote; all respondents are accounted for in either a cluster or the outliers note
Negative Cases
- Empty input: Stop before processing. Return: "No transcripts provided."
- Non-interview input detected: Stop. Return explanation and what type of content is needed.
- Request for synthetic personas: Stop. Redirect user to ask Claude directly without this skill.
Output Format
Markdown document with the following structure:
## User Persona Synthesis — [Date]
**Source:** [N] interview transcripts / notes
**Personas found:** [count]
**Total respondents mapped:** [N of M]
---
### Summary Table
| Persona | Respondents | Top Attributes |
|---------|-------------|----------------|
| [Name] | N of M | attr1, attr2, attr3 |
---
### Persona 1: [Name]
**Respondents:** N of M
**Profile:** [2–3 sentence description]
**Goals:**
- [Goal 1]
- [Goal 2]
**Frustrations:**
- [Frustration 1]
- [Frustration 2]
**Key quotes:**
> "[Verbatim quote from transcript]"
**Behaviours & workarounds:**
- [Behaviour or workaround]
**Vocabulary patterns:**
- [Recurring terms or phrases] *(omit section if no distinct vocabulary detected)*
---
### Synthesis Notes
- **Overlaps:** [shared attributes across personas]
- **Tensions:** [contradictory needs between personas]
- **Gaps:** [underrepresented segments, if detectable]
- **Outliers:** [respondents who didn't fit any cluster]
Field rules:
- Key quotes must be verbatim (no paraphrasing)
- Persona names should be descriptive labels, not generic identifiers ("Persona A")
- Summary table must list all personas; respondent counts must sum to ≤ total N
- Synthesis Notes section always present, even if only gaps or outliers noted
1---2name: user-persona-synthesizer3description: Extract recurring profiles from real CustDev transcripts and generate evidence-backed persona cards. Use when synthesizing interviews into personas for product docs or roadmap. Triggers: 'synthesize personas', 'create user personas', 'extract personas from transcripts', 'синтезируй персоны', 'создай персоны из интервью', 'извлеки персоны из транскриптов'.4---56# User Persona Synthesizer78This skill extracts recurring user profiles from real CustDev interview transcripts and generates structured, evidence-backed persona cards. It works from any free-form text or markdown files — no integrations, no special format required.910**Input:**11- Interview transcripts or notes: pasted text, markdown files, or plain text (any format accepted)12- Optional: focus attributes (e.g., "focus on goals and frustrations only") or persona count preference1314**Output:**15- Markdown document with a summary table, per-persona cards (with verbatim quotes), and synthesis notes1617---1819## Language Detection2021Detect the user's language from their message:22- If Russian (or contains Cyrillic): respond in Russian23- If English (or other Latin-script language): respond in English24- If ambiguous: respond in the language of the trigger phrase used2526---2728## Instructions2930### Step 1: Validate and Parse Input31321. Check that interview content is provided (pasted text or file reference)33 - If input is empty or whitespace only: Stop. Return: "No transcripts provided. Paste interview notes or reference files to begin persona synthesis."34352. Detect input format36 - If input resembles structured data (CSV column headers, spreadsheet rows): flag it — "Structured data detected — extracting patterns from columns. For richer personas, raw interview text works better." Proceed.37 - If input is clearly not interview content (product spec, article, meeting minutes with no respondent voices): Stop and report — "This doesn't look like interview transcripts. Persona synthesis requires user interview content — notes, quotes, or dialogue with respondents."38 - If user explicitly requests synthetic/hypothetical personas (not from real data): Stop and report — "This skill synthesizes personas from real interview data only. For synthetic personas, ask Claude directly without this skill."39403. Count the number of distinct interviews or respondents41 - Use explicit separators ("Interview 1:", "Respondent:", "---", numbered sections) or infer from context42 - Report count: "Found N interview(s). Proceeding with synthesis."43 - If only 1–2 interviews detected: flag low sample — "Low sample size (N interviews) — patterns may not be representative. Consider adding more interviews before sharing with stakeholders." Continue.4445### Step 2: Extract Attributes per Respondent46471. Check if the user specified a focus attribute list (e.g., "focus on goals and frustrations only")48 - If yes: extract only the specified attributes; skip others49 - If no: extract all attributes listed below50512. For each interview, extract the following attributes where present:52 - **Role / context:** job title, industry, company size, usage environment53 - **Goals:** what they're trying to achieve; motivations54 - **Frustrations:** pain points, complaints, blockers55 - **Behaviours & workarounds:** how they currently solve the problem; tools used56 - **Vocabulary:** recurring words or phrases they use to describe the domain57 - **Key quotes:** verbatim sentences that capture their perspective (capture at least 1–2 per respondent)58593. Build a per-respondent attribute map (internal working structure; not shown to user)6061### Step 3: Cluster Respondents into Persona Candidates62631. Compare attribute maps across all respondents642. Group respondents who share ≥2 significant attributes (role pattern, shared goal, or shared frustration)65 - Each group with ≥2 respondents becomes a persona candidate66 - Solo respondents (no matches) are noted as outliers in Synthesis Notes67683. If no clusters form (all respondents unique): Report — "No clear clusters found across N interviews. Possible reasons: small sample, very diverse audience, or inconsistent interview questions." Offer to generate individual profiles instead.69704. If a persona count preference was provided: adjust clustering to aim for that count (merge close clusters or split divergent ones)7172### Step 4: Name and Describe Each Persona73741. For each cluster, generate a descriptive label that captures the dominant pattern75 - Format: "The [Adjective] [Role or Archetype]" (e.g., "The Overwhelmed Manager", "The Data-Driven Analyst")76 - Label should be memorable and based on dominant attributes, not invented arbitrarily77782. Write a 2–3 sentence profile description covering: who they are, what they do, and what they need7980### Step 5: Build Persona Cards8182For each persona, generate a structured card with:83- Name (descriptive label from Step 4)84- Respondent count (N of M)85- Profile description86- Goals (bullet list)87- Frustrations (bullet list)88- Key quotes (verbatim, sourced from transcripts)89- Behaviours & workarounds (bullet list)9091### Step 6: Write Synthesis Notes92931. Identify overlaps — attributes shared across multiple personas942. Identify tensions — contradictory needs between personas (e.g., Persona A wants automation, Persona B wants manual control)953. Identify gaps — underrepresented segments if detectable from transcript context964. Note any outlier respondents who didn't fit any cluster9798### Step 7: Assemble and Output Document991001. Generate markdown document following the Output Format below1012. Ensure summary table appears first, followed by individual persona cards, then synthesis notes1023. Validate: no persona card is missing a verbatim quote; all respondents are accounted for in either a cluster or the outliers note103104---105106## Negative Cases107108- **Empty input:** Stop before processing. Return: "No transcripts provided."109- **Non-interview input detected:** Stop. Return explanation and what type of content is needed.110- **Request for synthetic personas:** Stop. Redirect user to ask Claude directly without this skill.111112---113114## Output Format115116Markdown document with the following structure:117118```markdown119## User Persona Synthesis — [Date]120121**Source:** [N] interview transcripts / notes122**Personas found:** [count]123**Total respondents mapped:** [N of M]124125---126127### Summary Table128129| Persona | Respondents | Top Attributes |130|---------|-------------|----------------|131| [Name] | N of M | attr1, attr2, attr3 |132133---134135### Persona 1: [Name]136137**Respondents:** N of M138**Profile:** [2–3 sentence description]139140**Goals:**141- [Goal 1]142- [Goal 2]143144**Frustrations:**145- [Frustration 1]146- [Frustration 2]147148**Key quotes:**149> "[Verbatim quote from transcript]"150151**Behaviours & workarounds:**152- [Behaviour or workaround]153154**Vocabulary patterns:**155- [Recurring terms or phrases] *(omit section if no distinct vocabulary detected)*156157---158159### Synthesis Notes160161- **Overlaps:** [shared attributes across personas]162- **Tensions:** [contradictory needs between personas]163- **Gaps:** [underrepresented segments, if detectable]164- **Outliers:** [respondents who didn't fit any cluster]165```166167**Field rules:**168- Key quotes must be verbatim (no paraphrasing)169- Persona names should be descriptive labels, not generic identifiers ("Persona A")170- Summary table must list all personas; respondent counts must sum to ≤ total N171- Synthesis Notes section always present, even if only gaps or outliers noted