The challenge
Project context
This personal project explored how AI can enable conversational learning at scale—applying instructional design principles to create an always-available Socratic mentor. While developed independently, this work demonstrated capabilities directly applicable to enterprise learning: using AI to provide personalized guidance, reduce cognitive load through brief interactions, and create emotionally safe learning environments.
Learning objective: Prove that AI can teach using the Socratic method (guiding self-discovery through questions) rather than just delivering information—validating conversational AI as a viable learning modality for complex, nuanced subject matter.
Core problem
Traditional philosophy education fails to connect ancient wisdom with modern challenges. Students read dense texts but struggle to apply Stoic concepts to real-life situations like workplace stress or relationships.
The opportunity
Enable learners to have real conversations with Marcus Aurelius; not read about Stoicism, but discuss their specific problems and receive personalized guidance in real-time.
Key design challenges
- Teach through Socratic questioning (not prescribing answers)
- Maintain philosophical authenticity
- Manage cognitive load during real-time conversation
- Create meaningful presence (avoid gimmicky interactions)
The process
Research & analysis
Research revealed a fundamental gap: traditional philosophy study creates knowledge without transformation.
Learner needs identified:
- Philosophy students found texts interesting but couldn’t apply concepts to their lives
- People facing real challenges wanted immediate, practical wisdom—not academic theory
- Existing AI chatbots felt impersonal and failed to create reflective space for dialogue
Core insight:
- The Socratic method teaches through dialogue, not lecture. Great philosophy teachers ask questions that guide self-discovery. This became the foundation of my design.
Design approach
I applied four key learning principles to shape the experience:
1. Socratic pedagogy
The AI guides self-discovery through questions, not answers. Example: If a user says “My boss is impossible,” Marcus asks: “Is it your boss’s actions that harm you, or your judgment about them?”
2. Cognitive load management
Responses limited to 1-3 sentences. Testing showed shorter responses led to deeper reflection—users needed space to think, not philosophy lectures.
3. Embodied presence
Photorealistic avatar with synchronized lip movements creates a sense of “being with” Marcus. This design choice supports embodied cognition research: we learn better from “people” than disembodied text.
4. Emotional safety
Calm, non-judgmental persona (no exclamation marks, no judgment) creates safe space for exploring difficult topics like death, failure, and loss.
Development & iteration
Three critical design decisions shaped the implementation:
Voice-first interface
Chose voice over text chat—natural speech creates authentic philosophical dialogue. Used OpenAI’s Realtime API to eliminate 2-4 second delays common in traditional speech processing.
Four opening strategies
Varied greetings prevent scripted feel across sessions:
- Direct: “What weighs on your mind?”
- Reflective: “What brings you to philosophy today?”
- Challenge-oriented: “Is there a situation testing your peace of mind?”
- Growth-focused: “What aspect of yourself are you working to strengthen?”
Explicit boundaries
Refuses medical, legal, or financial advice. This serves dual purposes:
- Ethical: Prevents harm from inappropriate guidance
- Pedagogical: Teaches that philosophy addresses how to think, not what to decide
Testing & refinement
Problem identified: Early versions were too agreeable—validating users instead of challenging their reasoning.
Solution implemented:
- Rebuilt system prompt with examples of productive pushback
- Marcus now challenges faulty reasoning while remaining supportive
Example exchange:
- User: “I just need to work harder and everything will be fine.”
- Marcus: “Can you control the outcome through effort alone? What if you work with excellence yet circumstances remain unchanged?”
Quality assurance: Automated testing validates 12 criteria per response:
- Brevity (1-3 sentences)
- Stoic concepts present
- Socratic questions asked
- Appropriate tone
- Boundary respect
The solution
What users experience
Visit the site, authenticate, and within 8 seconds meet a photorealistic Marcus Aurelius. Speak naturally and receive brief, probing Stoic guidance focused on what’s within your control.
Example conversation
User: “I’m so stressed about work. My boss keeps changing priorities and I can’t keep up.”
Marcus: “Is it your boss’s actions that harm you, or your judgment about them? What specifically feels beyond your control?”
User: “I guess I can’t control what he asks for, but I feel like I’m failing.”
Marcus: “There is your answer. You control your effort and excellence, not his requests. Can you find peace in doing your best with changing circumstances?”
Technical architecture enables
- Sub-second response using OpenAI Realtime API (feels like talking to a person)
- Synchronized lip movements via HeyGen (creates presence and engagement)
- WebRTC streaming for reliable voice/video delivery
- Cost controls through rate limiting (~$2 per session)
System architecture
graph LR
%% Define Nodes
subgraph Client["👤 Client Endpoint"]
Browser(["📱 User Browser
(Web UI + Daily SDK)"])
end
subgraph Services["☁️ External Services"]
Daily{{"🌐 Daily.co
(WebRTC Hub)"}}
OpenAI[["🧠 OpenAI
(Realtime API)"]]
HeyGen[["🎬 HeyGen
(Avatar API)"]]
end
subgraph Platform["🚀 App Platform (Fly.io)"]
FastAPI["⚙️ FastAPI
(Server)"]
Bot[("🤖 Bot
(Pipecat)")]
end
%% Control Flow (HTTP)
Browser -->|"1. Auth & Start"| FastAPI
FastAPI -->|"2. Spawn Bot"| Bot
%% Real-time Media Flow (WebRTC)
Browser <-->|"Audio/Video
Stream"| Daily
Bot <-->|"Audio/Video
Stream"| Daily
%% AI Processing Loop
Bot -->|"3. User Audio"| OpenAI
OpenAI -->|"4. AI Response"| Bot
Bot -->|"5. Sync Request"| HeyGen
HeyGen -->|"6. Video Frames"| Bot
%% Dark theme styling with amber/gold accents
classDef client fill:#2d1b0e,stroke:#f59e0b,stroke-width:3px,color:#f9fafb,font-weight:bold;
classDef platform fill:#1a2234,stroke:#fbbf24,stroke-width:3px,color:#f9fafb,font-weight:bold;
classDef services fill:#0f1419,stroke:#d97706,stroke-width:2px,color:#d1d5db;
classDef transport fill:#1e1b4b,stroke:#a78bfa,stroke-width:4px,color:#f9fafb,font-weight:bold;
class Browser client;
class FastAPI,Bot platform;
class OpenAI,HeyGen,Daily services;
%% Link Styling for better visibility
linkStyle 0,1 stroke:#fbbf24,stroke-width:3px;
linkStyle 2,3 stroke:#a78bfa,stroke-width:4px;
linkStyle 4,5,6,7 stroke:#f59e0b,stroke-width:2px,stroke-dasharray:5 5; Results & impact
Key metrics
- Uptime: 99%+ on live production application
- Engagement: 4-6 minute average session length (indicates genuine dialogue, not quick queries)
- Performance: <1 second response latency (comparable to human conversation)
- Cost efficiency: $1.50-3.00 per session through architectural optimization
Technical achievements
- Mobile-optimized responsive design works on iPhone, Android, desktop
- Automated quality assurance validates philosophical authenticity across updates
Learning design impact
- Made ancient philosophy accessible through conversation instead of dense texts
- Demonstrated AI can teach using Socratic method, not just deliver information
- Created emotionally safe space for exploring difficult life questions
User feedback pattern
Users report the experience feels “surprisingly real” and “actually helpful.” Brief responses (1-3 sentences) help users think rather than passively receive wisdom.
Key takeaways
-
Presence drives engagement. Photorealistic avatars create a sense of “being with” Marcus that dramatically increases engagement versus text or voice-only. This validates embodied cognition research.
-
Conversational scaffolding is instructional design. Forcing Socratic questioning (not direct answers) ensures active thinking versus passive listening. The system prompt functions as a teaching strategy.
-
Less content enables deeper learning. Limiting responses to 1-3 sentences creates space for reflection. Brief wisdom works better than long explanations—users retain and apply shorter responses.
-
Cost-aware architecture matters. Building rate limiting and monitoring from day one prevented runaway costs. Real-time AI is expensive (~$2-3 per session), so treating cost as a design constraint shaped better decisions.
-
Prompt engineering requires instructional design expertise. Writing the system prompt meant defining learning objectives (apply Stoic principles), pedagogy (Socratic method), assessment criteria (quality responses), and boundaries. AI persona design is fundamentally a teaching task.
Future enhancements
Five potential improvements could expand the project’s impact:
- Add conversation memory - Track philosophical progress over time and reference previous discussions
- Implement user research - Interview users to understand struggles with applying Stoicism
- Build conversation analytics - Identify which Socratic questions lead to most meaningful insights
- Expand philosophical voices - Add other Stoic philosophers (Epictetus, Seneca) or traditions (Buddhist, Taoist)
- Improve accessibility - Real-time transcription for hearing-impaired users and multi-language support