/derive-personas
Derive personas bottom-up from real research evidence. The opposite move from /generate-personas: that one invents archetypes top-down as hypotheses; this one clusters patterns that actually showed up in the data.
Input: $ARGUMENTS
Workflow
Gather the evidence. From the named files, or by default: transcripts in
product/interviews/markedsource: real, survey analyses inproduct/insights/markedsource: survey, plus any raw material the user points to. If the corpus is thin (fewer than ~4–5 real interviews and no survey data), say so — patterns from 1–2 conversations are anecdotes — and offer to proceed anyway with the personas explicitly marked low-confidence.Cluster by behavior, not demographics. Read the corpus and group interviewees/respondents by recurring patterns in goals, pains, workflows, and context — two people with different job titles who share the same struggle belong together; same title, different struggle, apart. Present the candidate clusters with their supporting evidence and rough coverage (how many sources support each) before writing any persona.
Draft one persona per confirmed cluster, using the structure from the
synthetic-personasskill, with two differences: every major trait must be traceable to the evidence (attach 1–3 supporting quotes per section — never fill gaps with invention; a section without evidence stays marked "no evidence yet"), and the header carriessource: derivedplus the list of source files with coverage. Thetype:field is assigned from the evidence, never invented: a cluster that suffers the problem and would use the product isprimary; one that uses it occasionally or for something else,secondary; one that does not use the product but decides, pays, or approves it,tertiary; one that shows up in the data and falls outside the declared scope,negative. When the evidence does not settle it, the type stays marked "no evidence yet" like any other section.Reconcile with existing personas in
product/personas/. For each existing synthetic persona: validated by a cluster (note it and suggest merging the evidence in), contradicted (say how, and suggest revising or retiring it), simply not observed in the data yet (leave it, noted), or typed wrong — the type the synthetic persona assumed does not hold in the data (a supposedprimarythat never uses the product but signs off on it is atertiary): propose the type change with the evidence behind it; if the user accepts, update the persona'stype:line and record the correction inproduct/corrections.md(dated entry: artifact, what the AI assumed, what the human decided, why). An existing persona with notype:line gets one proposed from the evidence the same way. The user decides; never delete anything unasked.Present the set, iterate, and save each persona to
product/personas/{name-slug}.md. Derived and synthetic personas live in the same directory, distinguished by thesource:header.Close in one line: the whole loop works with derived personas too — interview them (
/interview-persona), run critique panels (/critique-spec) — now with the personas standing on evidence instead of hypothesis.
Language
Conversation and the saved personas in the language of the conversation (matching the existing persona files).