The 19-Trait Persona Model
Relevant source files
The following files were used as context for generating this wiki page:
The 19-Trait Persona Model is the core architectural framework used by SynthCrowd to simulate realistic human browsing behavior. It defines a structured PersonaConfig that captures a wide spectrum of human characteristics—ranging from basic demographics like age and location to complex psychological behaviors such as jargon tolerance, trust baselines, and decision-making styles. This model serves as the foundation for generating diverse synthetic populations that can autonomously navigate websites and provide measurable UX feedback.
The model operates across a 5-stage pipeline where a high-level Ideal Customer Profile (ICP) is translated into a specific statistical center, expanded into a diverse population, and finally compiled into a set of deterministic behavioral rules that guide LLM-based agents.
Sources: README.md:14-25, src/types.ts:1-35
Core Trait Categories
The model categorizes 19 distinct traits into five logical groups. Numeric traits are generally normalized to a 0.0 - 1.0 scale, enabling consistent Gaussian variation and rule mapping.
1. Demographics
These traits establish the fundamental identity and socio-economic context of the persona.
| Trait | Type | Range / Options | Description |
|---|---|---|---|
age | number | 18-90 | Influences physical constraints (e.g., eyesight) and layout preferences. |
gender | string | Free-form | Gender identity of the persona. |
location | string | Free-form | Geographic location, providing cultural and regional context. |
income_bracket | enum | low, medium, high, very_high | Affects price sensitivity and affordability considerations. |
education | enum | none, high_school, bachelors, masters, phd | Influences comprehension of complex information and jargon. |
Sources: src/types.ts:2-8, README.md:144-150, src/engine/promptCompiler.ts:333-356
2. Digital Behavior
These traits define how the persona interacts with web interfaces and hardware.
| Trait | Type | Range | Description |
|---|---|---|---|
tech_literacy | number | 0.0 - 1.0 | 0=never used a computer, 1=software engineer. Controls navigation capability. |
patience | number | 0.0 - 1.0 | 0=leaves immediately on friction, 1=spends long periods troubleshooting. |
attention_span | number | 0.0 - 1.0 | 0=skims headings only, 1=reads every word/fine print. |
device_preference | enum | mobile, desktop, tablet | Determines the primary UI patterns the persona expects. |
Sources: src/types.ts:11-15, README.md:153-159
3. Behavioral and Psychological
These traits dictate the logic and emotional baseline of the persona's decision-making process.
| Trait | Type | Range / Options | Description |
|---|---|---|---|
decision_style | enum | impulsive, methodical, cautious, research_heavy | Primary strategy for evaluating options and committing to actions. |
trust_baseline | number | 0.0 - 1.0 | Initial level of trust in a site's legitimacy and security. |
jargon_tolerance | number | 0.0 - 1.0 | Ability to tolerate and understand technical or industry-specific terms. |
form_tolerance | number | 0.0 - 1.0 | Willingness to complete multi-step or long data entry forms. |
Sources: src/types.ts:27-31, README.md:175-181, src/engine/promptCompiler.ts:162-211
Data Flow: From ICP to Compiled Agent
The model transforms high-level descriptions into actionable agent instructions through a structured flow involving interpretation, population generation, and compilation.
The flow ensures that a single description (e.g., "busy executive") results in a diverse but statistically relevant group of users.
Sources: README.md:16-25, src/engine/interpreter.ts:7-38
Behavioral Rule Generation
A critical component of the model is the Prompt Compiler, which translates abstract numeric traits into deterministic, human-readable instructions. This ensures that agents do not just "hallucinate" behavior but follow constraints derived from their configuration.
Mapping Traits to Rules
Key functions in src/engine/promptCompiler.ts evaluate trait values to select relevant rules:
techLiteracyRules(level): If level < 0.2, the agent is instructed: "You do NOT understand hamburger menus (☰). You look for clearly labeled navigation links."patienceRules(level): If level < 0.2, the agent is instructed: "If a page takes more than 3 seconds to give you useful information, you leave."trustRules(level): If level < 0.3, the agent is instructed: "You are suspicious of this website by default... You will NOT enter credit card information without seeing clear security indicators."
Sources: src/engine/promptCompiler.ts:8-13, src/engine/promptCompiler.ts:58-63, src/engine/promptCompiler.ts:143-149
Behavioral Logic Selection
The model uses a standard distribution to determine which traits are "defining" for a specific persona. The system calculates an "extremity" score for each trait to prioritize the most relevant rules.
function tagRules(rules: string[], trait: string, traitValue: number): TaggedRule[] {
const extremity = Math.abs(traitValue - 0.5);
return rules.map((rule) => ({ rule, trait, extremity }));
}
Sources: src/engine/promptCompiler.ts:380-384
Population Variance and Outliers
To ensure comprehensive testing, the model generates a population using the Box-Muller transform for Gaussian distribution.
- Center Point: The Interpreter establishes the mean value for all 19 traits.
- Variance: A user-defined parameter (0-1) determines the standard deviation.
- Outliers: The system deliberately assigns 2x the configured variance to the bottom 15% of the population to simulate edge-case users (e.g., an elderly user in a tech-focused demographic).
Sources: README.md:47-59, src/engine/population.ts (referenced in README)
Fidelity and Validation
The model includes a validation layer to ensure that agents adhere to their assigned traits during a session. This is managed by the evaluatePersonaFidelity function.
The evaluator checks if a "low tech" persona actually mentions confusion or if a "price sensitive" persona visits the pricing page.
Sources: src/evals/personaFidelity.ts:55-120
Fidelity Checks Table
| Check Name | Condition | Expected Behavior |
|---|---|---|
low_tech_shows_confusion | tech_literacy < 0.3 | Agent must express confusion about UI or navigation. |
price_sensitive_checks_pricing | price_sensitivity > 0.7 | Agent must visit pricing URL or mention "cost/budget". |
low_trust_seeks_indicators | trust_baseline < 0.3 | Agent must mention "security", "reviews", or "privacy". |
Sources: src/evals/personaFidelity.ts:68-106
Summary
The 19-Trait Persona Model provides a high-fidelity representation of human diversity within the SynthCrowd platform. By combining demographic data with behavioral psychology and technical constraints, the model generates agents that provide authentic, predictable, and measurable UX feedback. Its deterministic rule-based architecture ensures that the "humanity" of the synthetic user is maintained throughout complex browsing sessions.