Local-first personality analytics app.
PersonaRadar allows you to log timestamped self-reflections, use an LLM (OpenAI, Gemini, or Ollama) to convert raw text into structured personality metrics, and visualize your personality state and drift over time.
This application is local-first and privacy-focused. All data is stored in local JSON files on your machine.
- Raw Entry Logging: Log self-reflections with automatic ISO 8601 UTC timestamping.
- AI Analysis: Analyze logs using OpenAI, Google Gemini, or Ollama (local).
- 8 Personality Axes:
- Emotional Regulation
- Self Awareness
- Discipline
- Confidence
- Social Perception
- Boundaries
- Adaptability
- Purpose Alignment
- Smart Scoring: The AI uses Optional Scoring, meaning it only scores axes clearly evidenced in the text (returning
nullotherwise) to prevent hallucinated "neutral" scores. - Human Override: Detailed review mode allowing you to adjust AI scores while preserving the original analysis context.
- AI Coach: Ask the AI Coach for personalized advice based on your history. Insights are automatically saved for future reference.
- Visualization:
- Radar Charts: View your latest snapshot overlaying your all-time average (calculated only on valid scores).
- Trend Lines: Track how your scores evolve over time.
- Interactive History: Filterable history of all past analyses.
- Security:
- Firebase Authentication: Secure email/password login with domain whitelisting.
- Data Isolation: Each user's data is strictly isolated in Firestore.
- Secrets Management: API keys are securely managed via
.streamlit/secrets.toml.
- Python 3.11+
- Streamlit: UI Framework
- Firebase: Authentication & Firestore Database
- Plotly: Interactive Visualization
- Pydantic: Strict Data Validation
- OpenAI / Google GenAI / Ollama: LLM Integration
-
Clone the repository:
git clone <repository_url> cd persona_radar
-
Create a virtual environment (recommended):
python3 -m venv .venv source .venv/bin/activate -
Install dependencies:
pip install -r requirements.txt
-
Configure Secrets: Create
.streamlit/secrets.tomlwith your credentials:FIREBASE_WEB_API_KEY = "your-firebase-web-api-key" [FIREBASE_SERVICE_ACCOUNT] type = "service_account" project_id = "your-project-id" private_key_id = "..." private_key = "-----BEGIN PRIVATE KEY-----..." client_email = "..." client_id = "..." auth_uri = "https://accounts.google.com/o/oauth2/auth" token_uri = "https://oauth2.googleapis.com/token" auth_provider_x509_cert_url = "https://www.googleapis.com/oauth2/v1/certs" client_x509_cert_url = "..."
See
FIREBASE_SETUP.mdfor detailed instructions on obtaining these. -
Configure Allowed Domains (Optional): Edit
auth/auth_config.jsonto control which email domains can sign up.
Run the application:
streamlit run main.pySign up or Log in. Your session will persist via cookies.
In the sidebar, select your preferred AI Provider and configure settings (Model, API Key). These preferences are saved to your account.
Go to the "Log Reflection" tab. Write about your day, feelings, or reactions to events.
Go to "Analyze & Interpret".
- Select a date range (Max 7 days).
- Click "Run AI Analysis". Note: You cannot re-analyze if no new logs have been added since the last analysis.
- Coach: Scroll down to ask the AI Coach for advice based on these trends.
Go to "View Trends".
- View your Persona Snapshot (Latest vs Average).
- Explore Trend Lines.
- Review History and Past Coach Insights.
You can containerize and run the application using Docker.
- Ensure
secrets.tomlexists in.streamlit/. - Run with Docker Compose:
docker-compose up --build
- Access the app at
http://localhost:8501.
persona_radar/
├── main.py # App entry point
├── auth/ # Authentication logic & UI
├── core/ # Models, Utils, Viz, Analysis Logic
├── db/ # Firestore Repositories
├── ui/ # Streamlit UI Components
├── Dockerfile # Container definition
├── docker-compose.yml # Container orchestration
├── .streamlit/ # Secrets & Config
└── requirements.txt # Dependencies
MIT