user-persona-synthesizer
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', 'синтезир
What it does
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
Capabilities
Install
Quality
deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (7,086 chars)