Open app
Moonborn — Developers

Persona crafting workshop

A writer-oriented walkthrough of the four-layer model. Soul → Self → Mask → Surface, the order that produces non-flat characters.

The four-layer model isn't a checklist — it's an ordering. Skip a layer or invert the order and you get a flat character. This guide walks the four prompts you actually write.

Soul (inside-out)

The deepest layer. Four fields, in this order:

  1. Desire — what does this character want, beyond the immediate?
  2. Fear — what would they refuse to admit even to themselves?
  3. Wound — what early experience shaped the desire + fear?
  4. Growth arc — the direction the character moves over the story.

Soul is the engine. Without it, every other layer trends generic. The trap: writing Soul as a list of traits ("ambitious, anxious, lonely") instead of a small system. Ambitious because of an absent grandfather is Soul; ambitious is a label.

Self (psychometric)

Once Soul is fixed, Self fills in:

  • Big Five — OCEAN scores, 0–1.
  • Archetype — Hero / Sage / Lover / Outlaw / Caregiver /...
  • Values — three to five priority axes (autonomy > belonging, curiosity > stability, etc.).
  • Attachment style — secure / anxious / avoidant / disorganized.

Self constraints Mask. A Soul of "to be seen as ordinary" with high extraversion is incoherent — pick or rewrite.

Mask (voice)

The performative surface. What the character sounds like in a room:

  • Register — formal / casual / clinical / playful.
  • Tone — warm / sharp / wry / earnest.
  • Signature phrases — three to five recurring locutions ("not that I'm aware of," "look, the thing is").
  • Social role — performer / listener / instigator / mediator.

Mask is what readers hear. Soul + Self constrain it; don't write Mask first and back-fill Soul.

Surface (demographic)

Name, age, location, occupation, appearance. The demographic shell. Write last. If you write Surface first, the model anchors on a demographic stereotype and back-fills the rest to match. A 32-year- old Berlin design lead with a desire "to be seen" and a fear "of being ordinary" is a real character; a 32-year-old Berlin design lead is a placeholder.

A 60-minute drill

  1. Pick a one-line concept ("woman who runs an indie bookshop in Galway, ex-classicist").
  2. Write Soul (10 min). Push past the first draft of each field — the second iteration is the real answer.
  3. Write Self (10 min). Reconcile with Soul; resolve any contradictions.
  4. Write Mask (15 min). Read three test exchanges aloud — does she sound like her?
  5. Write Surface last (5 min). Anchor in concrete details.
  6. Hand the brief to Moonborn:
const persona = await client.personas.createPersona({
  intent: combinedBrief,
  workspaceId: 'ws_...',
});
  1. Read the audit verdict. Below 4.0/5 = refine one layer at a time.

Related