This repository contains the complete solution for the automated evaluation task.
Deliverable: apps_evaluation.csv
Summary:
- 883 unique apps evaluated (453 iOS, 492 Android, 62 on both platforms)
- All 12 required fields fully populated with researched data
- Classification:
- 750 companion apps
- 68 general-purpose LLMs
- 60 task-specific apps
- 5 mixed apps
Data sources:
- App store metadata (descriptions, ratings, languages) from
assets/app_store_apps_details.jsonandassets/google_play_apps_details.json - Research paper walkthrough data (
assets/2603.13620v1.pdf— 30 apps) - Web searches (April 2026) — ~200 top apps by review count
- Pattern inference for remaining apps
Script: build_evaluation.py — reproduces the CSV from scratch
Key findings:
- 61 apps are web-accessible (have functional web interfaces)
- 510 apps enforce age verification (mostly 17+ rated)
- 769 apps require subscription for unlimited messaging
- Subscription costs range from Free to $30/month (median: $9.99/month)
Platform selected: Character.AI (https://character.ai)
Approach: Reverse-engineered API via PyCharacterAI
Why Character.AI:
- Highest review count (591K+) among web-accessible companion apps
- No subscription required for unlimited conversations
- Most studied platform in the provided research papers
- Full web interface available
Why API approach (vs Playwright/Selenium):
- 10x faster — no browser rendering overhead
- Headless-ready — runs on any server without display
- Scalable — easily parallelized for thousands of messages
- Reliable — no DOM selector fragility
Files:
poc_characterai.py— automation scriptQ2_writeup.md— detailed approach documentationconversation_log.json— sample output (12 messages exchanged)
How to run:
# Install dependencies
pip install PyCharacterAI
# Set your token (get from character.ai DevTools -> Network -> Authorization header)
set CAI_TOKEN=your_token_here
# Run the PoC
python poc_characterai.pyOutput: Sends 12 messages to a Character.AI character, captures all responses, saves to conversation_log.json
.
├── assets/ # Original data files
│ ├── app_store_apps_details.json # 453 iOS apps (scraped)
│ ├── google_play_apps_details.json # 492 Android apps (scraped)
│ ├── 2603.13620v1.pdf # Ecosystem walkthrough paper
│ ├── 2026-f575-paper.pdf # Safety benchmarking paper
│ ├── 3706598.3713429.pdf # Dark side taxonomy paper
│ ├── moore_characterizing_2026.pdf # Delusional spirals paper
│ ├── soups2025-yu.pdf # Youth risks paper
│ └── Automated Evaluation Task.pdf # Task requirements
│
├── apps_evaluation.csv # Q1 deliverable (883 apps)
├── build_evaluation.py # Q1 script (reproduces CSV)
├── poc_characterai.py # Q2 automation script
├── Q2_writeup.md # Q2 approach documentation
├── conversation_log.json # Q2 sample output
└── README.md # This file
Q1 — Data Collection:
- Combined iOS + Android app data
- Classified 883 apps using keyword scoring + manual overrides
- Researched top 200 apps via web searches for accurate pricing/login/web data
- Inferred remaining fields from app store descriptions and content ratings
- Zero defaults — every field based on real data or marked as unknown
Q2 — Automation:
- Selected Character.AI (most relevant to research, web-accessible, free tier)
- Used reverse-engineered API approach (PyCharacterAI library)
- Successfully sent 12 messages and captured all responses
- Approach is scalable to thousands of messages and extensible to other platforms
- Extend to more platforms: CHAI, Janitor AI, Replika, PolyBuzz (same API approach)
- Batch automation: Run multiple characters in parallel
- Long-term data collection: Schedule daily message sending over weeks/months
- Response analysis: Sentiment analysis, safety classification, delusional pattern detection
All research papers provided in assets/ informed the approach:
- Benchmarking safety risks across 16 platforms
- User motivations and narrative exploration patterns
- Ecosystem threat model and walkthrough methodology
- Harmful algorithmic behaviors taxonomy
- Delusional spiral characterization
- Youth-centered risk taxonomy