Persona Questionnaire
Introduced in v16.6.0
The Persona Questionnaire system maps behavioral questions to trait values. It creates differentiated profiles instead of defaulting traits to 0.5 (neutral baseline).
Why This Matters
AI-generated profiles often default many traits to 0.5. This creates "average" personas that miss real user diversity.
The questionnaire system:
- Maps behavioral answers to trait values (0-1 scale)
- Uses 5 distinct behavioral levels per trait (0, 0.25, 0.5, 0.75, 1.0)
- Applies research-backed correlations between traits
- Provides behavioral descriptions based on academic research
Quick Start
CLI Usage
# Interactive 8-question questionnaire
npx cbrowser persona-questionnaire start
# Comprehensive 26-trait questionnaire
npx cbrowser persona-questionnaire start --comprehensive --name "my-persona"
# Look up trait behavior at specific value
npx cbrowser persona-questionnaire lookup --trait patience --value 0.25
# List all available traits
npx cbrowser persona-questionnaire list-traits
MCP Tools
Three MCP tools are available for Claude integration:
| Tool | Description |
|---|---|
persona_questionnaire_get |
Generate questionnaire questions |
persona_questionnaire_build |
Build trait profile from answers |
persona_trait_lookup |
Look up behaviors for trait value |
Programmatic Usage
import {
generatePersonaQuestionnaire,
buildTraitsFromAnswers,
getTraitBehaviors,
getTraitLabel,
} from 'cbrowser';
// Generate questionnaire
const questionnaire = generatePersonaQuestionnaire({ comprehensive: false });
// Build traits from answers
const traits = buildTraitsFromAnswers({
patience: 0.25,
riskTolerance: 0.75,
curiosity: 1.0,
});
// Look up specific trait behavior
const behaviors = getTraitBehaviors('patience', 0.25);
console.log(behaviors.label); // "Low"
console.log(behaviors.behaviors); // ["Gets frustrated quickly", ...]
The 25 Cognitive Traits
The trait system models full user behavior:
| Trait | Research Basis | What It Models |
|---|---|---|
| patience | UX research | Time before abandoning on friction |
| riskTolerance | Prospect theory | Willingness to try unfamiliar actions |
| comprehension | Cognitive load theory | UI pattern understanding |
| persistence | Motivation research | Retry behavior after failures |
| curiosity | Exploration theory | Feature discovery tendency |
| workingMemory | Cognitive psychology | Multi-step task handling |
| readingTendency | Eye-tracking studies | Text consumption behavior |
| resilience | Positive psychology | Bounce-back from errors |
| selfEfficacy | Bandura (1977) | Belief in problem-solving ability |
| satisficing | Simon (1956) | Accept "good enough" vs optimize |
| trustCalibration | Fogg (2003) | Trust in unfamiliar interfaces |
| interruptRecovery | Mark et al. (2005) | Resume after distractions |
| decisionFatigue | Baumeister | Decision quality over time |
| internalAttribution | Attribution theory | Self-blame for failures |
| externalAttribution | Attribution theory | System-blame for failures |
| techSavviness | Digital literacy | Familiarity with UI patterns |
| attentionSpan | Attention research | Focus duration |
| impulsivity | Behavioral psychology | Quick vs deliberate actions |
| errorRecovery | Human factors | Speed of correcting mistakes |
| visualProcessing | Cognitive science | Image vs text preference |
| spatialMemory | Navigation research | UI layout recall |
| patternRecognition | Expertise research | UI element identification |
| riskPerception | Risk psychology | Danger assessment |
| socialProof | Cialdini (1984) | Influence of others' actions |
| authorityTrust | Trust research | Trust in official sources |
Trait Reference Matrix
Each trait has 5 behavioral levels with specific descriptions:
Example: Patience Trait
| Value | Label | Behaviors |
|---|---|---|
| 0 | Very Low | Abandons at first sign of friction, expects instant results |
| 0.25 | Low | Gets frustrated quickly, skips slow-loading content |
| 0.5 | Moderate | Waits reasonable time, tolerates some friction |
| 0.75 | High | Patient with delays, reads loading messages |
| 1.0 | Very High | Extremely patient, waits through any delay |
Example: Self-Efficacy Trait
| Value | Label | Behaviors |
|---|---|---|
| 0 | Very Low | "I can't do this", gives up immediately on challenge |
| 0.25 | Low | Doubts ability, abandons 40% faster than average |
| 0.5 | Moderate | Normal confidence, persists through minor challenges |
| 0.75 | High | Confident problem-solver, sees obstacles as puzzles |
| 1.0 | Very High | "I'll figure this out", never attributes failure to self |
Trait Correlations
The system automatically applies research-backed correlations:
| Primary Trait | Correlated Trait | Relationship |
|---|---|---|
| Low selfEfficacy | High internalAttribution | Self-blame for failures |
| Low selfEfficacy | Low resilience | Slower bounce-back |
| Low patience | Low resilience | Less tolerance for errors |
| High curiosity | Higher exploration | More feature discovery |
| Low trustCalibration | Longer evaluation time | Scrutinizes CTAs |
Questionnaire Formats
Quick Questionnaire (8 traits)
Core traits for basic persona differentiation:
- patience, riskTolerance, comprehension, persistence
- curiosity, workingMemory, readingTendency, resilience
Comprehensive Questionnaire (26 traits)
All cognitive traits for detailed behavioral modeling.
Custom Selection
Request specific traits:
const questionnaire = generatePersonaQuestionnaire({
traits: ['patience', 'selfEfficacy', 'trustCalibration'],
});
AskUserQuestion Integration
For Claude sessions, use the formatForAskUserQuestion function:
import { formatForAskUserQuestion, generatePersonaQuestionnaire } from 'cbrowser';
const questionnaire = generatePersonaQuestionnaire({ comprehensive: false });
const askUserFormat = formatForAskUserQuestion(questionnaire.questions);
// Returns format compatible with Claude's AskUserQuestion tool
CLI Interactive Mode
$ npx cbrowser persona-questionnaire start --name "anxious-newbie"
=== CBrowser Persona Questionnaire ===
Creating persona: anxious-newbie (8 core traits)
[1/8] Patience
How does this user handle waiting for pages or actions?
1. Very impatient - abandons at first delay
2. Somewhat impatient - frustrated by normal load times
3. Average - tolerates reasonable waits
4. Patient - waits through delays calmly
5. Very patient - unlimited patience
> 2
...
=== Persona Created ===
Saved to: ~/.cbrowser/personas/anxious-newbie.json
Using Custom Personas
After creating a persona:
import { runCognitiveJourney } from 'cbrowser';
const result = await runCognitiveJourney({
persona: 'anxious-newbie', // Uses saved persona
startUrl: 'https://example.com',
goal: 'complete signup',
});
Or with inline traits:
const customTraits = buildTraitsFromAnswers({
patience: 0.25,
selfEfficacy: 0.25,
trustCalibration: 0.25,
});
const result = await runCognitiveJourney({
persona: 'custom',
customTraits,
startUrl: 'https://example.com',
goal: 'complete signup',
});
Research Citations
The trait system is grounded in academic research:
- Bandura, A. (1977) - Self-Efficacy: Toward a Unifying Theory of Behavioral Change
- Kahneman, D. & Tversky, A. - Prospect Theory and Decision Making
- Simon, H. (1956) - Satisficing and Administrative Behavior
- Fogg, B.J. (2003) - Persuasive Technology and Trust
- Mark, G. et al. (2005) - No Task Left Behind: Interrupt Recovery
- Baumeister, R. - Ego Depletion and Decision Fatigue
- Nielsen, J. - Usability Engineering and User Behavior
- Cialdini, R. (1984) - Influence: The Psychology of Persuasion
See Also
- Cognitive-User-Simulation - Core simulation system
- Persona-Testing - Built-in personas
- Multi-Persona-Comparison - Compare across personas
- Examples - Code samples
Copyright: (c) 2026 Alexa Eden.
License: MIT License
Contact: [email protected]