Persona Design
How to design effective personas with presets, HEXACO personality traits, and emotion tuning.
Persona Design
A well-designed persona produces realistic, consistent emotional responses. This guide covers how to start from presets, configure personality traits, fine-tune emotion dynamics, and set up character identity.
Start with a Preset
Presets are pre-configured persona templates that give you a solid starting point. Pick a preset, then customize the parts you want to change.
Available Presets
| Preset | Description | Personality Profile |
|---|---|---|
companion | Warm, empathetic, emotionally available | High A, moderate E, low N |
mentor | Patient, wise, encouraging growth | High C, high H, moderate O |
rival | Competitive, sharp, emotionally reactive | Low A, high E, high N |
stoic | Calm, controlled, minimal emotional expression | Low N, low E, high C |
creative | Imaginative, emotionally expressive, unpredictable | High O, high N, low C |
professional | Focused, measured, task-oriented | High C, moderate H, low N |
Using a Preset
Create a session with a preset and optionally override specific fields:
The preset fills in personality traits, emotion config, and baseline values. Your identity overrides (name, speaking style, etc.) are applied on top.
When to Use Presets vs Custom Personas
| Scenario | Recommendation |
|---|---|
| Prototyping or quick start | Use a preset |
| Character fits a common archetype | Start with a preset, customize a few traits |
| Unique character with specific trait balance | Build a custom persona |
| Game NPCs with distinct behavior patterns | Custom persona for important NPCs, presets for background NPCs |
Identity Configuration
The identity block defines who your character is beyond personality numbers:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The character's name |
core_values | string[] | No | Values that guide emotional reactions (events aligning with or violating these create stronger responses) |
speaking_style | string | No | Description of how the character communicates |
role | string | No | Character's role or occupation |
goals | string[] | No | What the character is trying to achieve |
language | string | No | Primary language for prompt_data output (e.g., "en", "ko", "ja") |
Tips:
- Choose 2-5 core values that create interesting tension (e.g., "honesty" and "kindness" can conflict)
- Be specific with speaking style -- "formal British English with dry humor" is better than "talks normally"
- Goals help the engine determine what events are relevant to the character
Personality (HEXACO)
The HEXACO model extends the Big Five with a sixth factor (Honesty-Humility). Each trait ranges from 0 to 1.
| Trait | Name | Low (0) | High (1) |
|---|---|---|---|
H | Honesty-Humility | Manipulative, entitled, status-seeking | Sincere, modest, fair-minded |
E | Extraversion | Reserved, quiet, solitary | Sociable, energetic, talkative |
A | Agreeableness | Critical, stubborn, confrontational | Forgiving, tolerant, patient |
N | Neuroticism | Emotionally stable, calm under pressure | Anxious, reactive, emotionally volatile |
O | Openness | Practical, conventional, routine-oriented | Imaginative, curious, aesthetically inclined |
C | Conscientiousness | Spontaneous, flexible, disorganized | Disciplined, organized, achievement-oriented |
How Personality Affects Emotions
The engine uses your Big 5 trait values (O, C, E, A, N) to automatically derive 40+ internal parameters that control emotion dynamics. You do not need to configure these parameters manually -- they are computed from the personality traits:
- High Neuroticism -- Stronger negative emotional reactions, slower recovery from distress
- High Agreeableness -- More empathetic responses, less anger from social friction
- High Openness -- Greater curiosity-driven excitement, stronger aesthetic emotions
- Low Extraversion -- Subdued positive emotions, preference for calm states
- High Conscientiousness -- Stronger reactions to disorder/failure, satisfaction from completion
- High Honesty-Humility -- Stronger moral emotions, discomfort with deception
Optional Facets
Each HEXACO domain has 4 facets (24 total) for fine-grained control. Facets are optional -- if omitted, they are derived from the domain-level trait value.
| Domain | Facets |
|---|---|
| H (Honesty-Humility) | sincerity, fairness, greed_avoidance, modesty |
| E (Extraversion) | expressiveness, social_boldness, sociability, liveliness |
| A (Agreeableness) | forgiveness, gentleness, flexibility, patience |
| N (Neuroticism) | anxiety, dependence, sentimentality, fearfulness |
| O (Openness) | aesthetic_appreciation, inquisitiveness, creativity, unconventionality |
| C (Conscientiousness) | organization, diligence, perfectionism, prudence |
Using Facets
In this example, the character has high Openness overall, with particularly strong creativity and unconventionality. Within Neuroticism, they have low anxiety but high sentimentality -- meaning they are emotionally moved by beautiful or meaningful things but do not get stressed easily.
When to use facets:
- When a character has contradictions within a trait domain (e.g., high sociability but low social boldness)
- When you need precise control over specific emotional responses
- When two characters share the same domain-level trait but should feel different
Example Personas
Gentle Mentor -- Patient, emotionally stable, values growth:
Fiery Artist -- Passionate, emotionally volatile, creative:
Stoic Strategist -- Calculated, reserved, emotionally controlled:
Emotion Configuration
Fine-tune how your character's emotions behave over time. These settings are optional -- the engine derives sensible defaults from personality traits.
Baseline
The resting emotional state your character returns to when no events are occurring:
| Field | Description | Common Ranges |
|---|---|---|
V | Resting valence -- generally positive characters > 0 | -0.3 to 0.5 |
A | Resting arousal -- calm vs. energetic default | 0.1 to 0.5 |
D | Resting dominance -- confident vs. deferential default | -0.3 to 0.3 |
Damping Ratio
Controls how quickly emotions return to baseline after a disturbance.
| Value | Range | Behavior |
|---|---|---|
| Low | 0.2-0.5 | Oscillating -- emotions swing back and forth before settling |
| Medium | 0.5-1.0 | Smooth return -- natural, human-like decay |
| High | 1.0-2.0 | Overdamped -- slow, sluggish emotional recovery |
Recommended: 0.5-0.8 for most characters. Use lower values for dramatic, emotionally volatile characters and higher values for stoic, stable ones.
Natural Frequency
Controls the speed of emotional oscillation -- how quickly the emotion dynamics system responds.
| Value | Range | Behavior |
|---|---|---|
| Low | 0.1-0.3 | Slow, gradual emotional shifts |
| Medium | 0.3-0.8 | Natural pace -- responsive but not jumpy |
| High | 0.8-2.0 | Fast, reactive -- emotions change rapidly |
Inertia Coefficient
Resistance to emotional change. Higher values make the character harder to shift emotionally.
| Value | Range | Behavior |
|---|---|---|
| Low | 0-0.3 | Emotionally responsive -- reacts to small events |
| Medium | 0.3-0.6 | Balanced -- responds to significant events |
| High | 0.6-1.0 | Emotionally rigid -- only strong events cause change |
Appraisal Weights
Customize how much each appraisal dimension influences the emotional outcome:
Use this to create characters who are more sensitive to certain types of events. For example:
- A character with high
norm_compatibilityweight reacts strongly to moral violations - A character with high
controllabilityweight is more affected by feeling helpless - A character with low
expectednessweight is less surprised by unexpected events
Putting It All Together
Here is a complete custom persona configuration using a preset as a base with overrides:
This creates a character who is:
- Creatively passionate (high O, moderate E, boosted creativity facet)
- Emotionally responsive but not unstable (moderate N, low damping, low anxiety but high sentimentality)
- Sensitive to authenticity violations (high norm_compatibility weight)
- Quick to react but settles naturally (moderate natural_freq, low inertia)
Or build a fully custom persona without any preset: