Projects / Marcus Aurelius: AI-powered Stoic mentor

Marcus Aurelius: AI-powered Stoic mentor

Making ancient philosophy accessible through real-time conversational AI with a photorealistic avatar

Marcus Aurelius: AI-powered Stoic mentor

Client/Context

Personal Project

Role

Learning solution architect & full-stack dev

Timeline

3-4 weeks (November 2025)

Audience

Students of Stoic philosophy, individuals seeking personal development guidance

Technologies

OpenAI Realtime API HeyGen Interactive Avatar Pipecat Framework Python/FastAPI

Deliverables

  • Live web application with voice-enabled AI mentor

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:

  1. Add conversation memory - Track philosophical progress over time and reference previous discussions
  2. Implement user research - Interview users to understand struggles with applying Stoicism
  3. Build conversation analytics - Identify which Socratic questions lead to most meaningful insights
  4. Expand philosophical voices - Add other Stoic philosophers (Epictetus, Seneca) or traditions (Buddhist, Taoist)
  5. Improve accessibility - Real-time transcription for hearing-impaired users and multi-language support

Impact & results

<1s
Response Latency
4-6 min
Average Session