Skip to content

Personas

The simulation acts through the perspectives of entirely distinct AI personas.

Persona Schema

Each persona in data/user_profiles.json includes demographic data, personality traits on a [0-1] scale, activity patterns, and past historical context.

{
  "user_id": "user_001",
  "username": "alex_budget",
  "persona": {
    "age": 24,
    "occupation": "Student",
    "location": "Austin, TX",
    "interests": ["gaming", "open-source", "tech news"],
    "values": ["affordability", "transparency", "community"],
    "traits": {
      "price_sensitivity": 0.95,
      "tech_savviness": 0.75,
      "brand_loyalty": 0.30,
      "optimism": 0.50,
      "skepticism": 0.70,
      "community_orientation": 0.80
    },
    "behavior": {
      "avg_session_minutes": 25,
      "engagement_rate": 0.65,
      "subscription_tier": "free",
      "account_age_months": 14
    },
    "past_opinions": ["Frustrated by last year's outage.", "Loves the new mobile app update."],
    "hourly_activity": [0.02, 0.01, 0.05, 0.15, ...]
  }
}

LLM-Powered User Generation

We created an auxiliary script explicitly to generate diverse, realistic user personas to seed the simulation environment while ensuring they don't form homogeneous echo chambers.

# Generate 10 new personas (auto-avoids existing archetypes)
python3 generate_users.py --count 10

# Focus on specific demographics
python3 generate_users.py --count 5 --type "elderly retiree, rural farmer, crypto enthusiast"

# One persona at a time for maximum diversity (slower, zero repetition)
python3 generate_users.py --count 20 --batch-size 1