Blundr is an AI-driven dating-coach system designed to help users improve their communication and interpersonal skills through simulated dating interactions. Users are matched randomly and engage in live video calls that the system performs emotion, speech, and transcription analysis on. After each session, a Large Language Model evaluates key conversational moments, rated with a chess.com style scale and provides targeted feedback.
Detailed project documentation, including Requirements and Architecture Design, can be found on our Project Wiki.
The project is deployed and accessible at: blundr.razvanalbu.com
Blundr is built as a distributed microservices ecosystem to handle concurrent, real-time data streams. The main workflows are:
- Data Acquisition: NextJS Proxy and Chatroom Service manage live WebRTC streams and WebSocket signaling between clients.
- Inference: Parallel services (FER and VER) process video and audio frames to detect emotional states.
- Transcription: Audio is processed via Whisper Large v3 to generate timestamped text.
- Aggregation & Evaluation: The Aggregator Service syncs transcripts with emotional data, which is then evaluated by an LLM (via Ollama).
Detailed component diagram is available in the Architecture section of the Wiki.
Each component of the system is located in the src directory. Click the links below to view specific documentation regarding setup, compilation, and execution:
- Admin API: Backend service for administrative and model controls.
- Admin CLI: Administrative Command Line Interface for system management.
- FER Service: ML service specialized in facial expression recognition.
- VER Service: ML service for voice-based emotion detection.
- Ollama: Local LLM orchestration for session summarization.
- Aggregator: Consolidates emotional data and transcripts for LLM analysis.
- Chatroom: Manages live WebRTC/WebSocket connections for the video dating sessions.
- Frontend: The NextJS web application for users.
- Aliaksei Khval (guskhval@student.gu.se)
- Danis Music (gusmusida@student.gu.se)
- Maxine Orlen (gusorloma@student.gu.se)
- Razvan Albu (gusalbura@student.gu.se)
