A multi-agent AI system that researches fictional characters and determines their Socionics personality type through web search and parallel analysis.
-
Multi-Agent Analysis: Three specialist AI agents analyze characters from different Socionics perspectives:
- Agent Reinin - Analyzes Reinin Dichotomies
- Agent Quadra - Analyzes Quadra Values
- Agent Functions - Analyzes Model A Functions
-
The Scout: Automated web research to gather character information and build a comprehensive dossier
-
The Council: Parallel analysis by specialist agents with live discussion and debate
-
The Validator: Fact-checks theoretical claims for accuracy
-
The Manager: Synthesizes all analyses into a final type determination
-
PDF Reports: Generate downloadable PDF reports of your analysis
-
Analysis History: Save and review past character analyses
-
Auto-Proceed Mode: Automatically progress through all analysis phases
- Python 3.8 or higher
- An OpenRouter API Key for AI model access
git clone https://github.com/spaceynyc/socionics-panel.git
cd socionics-panelpip install -r requirements.txtNote for macOS/Linux: If
pipdoesn't work, trypip3 install -r requirements.txt
streamlit run app.pyThe application will open in your default web browser at http://localhost:8501.
- In the sidebar, enter your OpenRouter API Key
- Select your preferred AI model
- Your settings will be saved automatically for future sessions
socionics-panel/
├── app.py # Main Streamlit application
├── requirements.txt # Python dependencies
├── agents/ # AI Agent implementations
│ ├── scout.py # Research agent (web search)
│ ├── council.py # Analysis specialists (Reinin, Quadra, Functions)
│ └── manager.py # Synthesis agent
├── config/ # Configuration files
│ ├── models.py # OpenRouter model definitions
│ ├── prompts.py # Agent prompts and instructions
│ └── socionics_kb.py # Socionics knowledge base
├── utils/ # Utility functions
│ ├── pdf_generator.py # PDF report generation
│ └── search.py # Web search utilities
├── styles/ # Custom CSS styling
│ └── main.css
└── .analysis_history/ # Saved analysis history (auto-created)
- Enter the Character Name (e.g., "Walter White")
- Enter the Media Source (e.g., "Breaking Bad")
- Click 🚀 Begin Analysis
| Phase | Description |
|---|---|
| Phase 1: Research | The Scout agent searches the web and builds a character dossier |
| Phase 2: Analysis | The Council (3 specialist agents) analyzes the dossier in parallel |
| Phase 3: Discussion | Agents review each other's work and debate their findings |
| Phase 4: Synthesis | The Manager produces a final type determination |
- Auto-proceed: Enable to automatically progress through all phases
- Reset Analysis: Start over with a new character
- History: View and reload past analyses
| Package | Purpose |
|---|---|
streamlit |
Web application framework |
langchain |
LLM orchestration |
langchain-openai |
OpenAI/OpenRouter integration |
duckduckgo-search |
Web search for character research |
python-dotenv |
Environment variable management |
reportlab |
PDF report generation |
This application runs on Google Gemini 3 Pro Preview via OpenRouter. All agents use the same model for best results:
All Agents → google/gemini-3-pro-preview
If you want to use a different model, edit config/models.py:
# All agents use the same model - change this to use a different one
PRO_MODEL = "google/gemini-3-pro-preview"
MID_MODEL = "google/gemini-3-pro-preview"
FLASH_MODEL = "google/gemini-3-pro-preview"You can replace these with any model available on OpenRouter.
Your preferences are automatically saved to .user_config.json:
- API Key
- Auto-proceed preference
"Please enter your OpenRouter API key"
- Ensure you have a valid API key from openrouter.ai
- Check that the key is correctly entered in the sidebar
Research phase takes too long
- Web search depends on DuckDuckGo availability
- Some characters may have limited online information
PDF download fails
- Ensure
reportlabis properly installed - Check console for specific error messages
For server deployments:
streamlit run app.py --server.headless trueThis project is for educational and research purposes.
Made with ❤️ for the Socionics community