Skip to content

Repository files navigation

Diolex

An AI-powered technical interview practice platform with real-time voice interaction

PythonFastAPIReactTypeScript

LicensePlatform

🚀 Quick Start📖 Documentation🛠️ Installation🤝 Contributing


🎯 Interactive Coding Interview

Practice technical interviews with AI-powered feedback and real-time voice interaction

🗣️ Voice-Enabled Experience

Speak naturally while coding - just like a real interview

📋 Table of Contents

🔍 About

HT6 Interview Agent is an AI-powered platform designed to help developers practice technical interviews in a realistic environment. Using advanced AI agents powered by Google's Gemini model, the platform provides interactive coding challenges with voice-enabled communication, real-time feedback, and comprehensive performance analysis.

✨ Features

  • 🤖 AI-Powered Interview Agent: Interactive interviewer using Google Gemini 2.5 Flash
  • 🗣️ Voice Recognition & TTS: Real-time speech-to-text and text-to-speech capabilities
  • 💻 Multi-Language Code Editor: Support for Python, JavaScript, Java, and C++ with syntax highlighting
  • ⏱️ Real-Time Timer: Track your interview performance with live timing
  • 🎯 Coding Problem Database: Curated collection of technical interview problems
  • 📊 Performance Analysis: Detailed feedback and performance metrics
  • 🔄 WebSocket Integration: Real-time communication between frontend and backend
  • 📱 Responsive Design: Modern, clean UI built with React and Tailwind CSS

🚀 Quick Start

  1. Clone the repository

    git clone https://github.com/eddywang4340/HT6-interview-agent.git
    cd HT6-interview-agent
  2. Set up environment variables

    # Create .env file in the backend directoryecho"GEMINI_API_KEY=your_gemini_api_key_here"> backend/.env
  3. Start the backend

    cd backend
    pip install -r requirements.txt
    uvicorn app.main:app --reload
  4. Start the frontend

    cd frontend/interview-agent-frontend
    npm install
    npm run dev
  5. Open your browser and navigate to http://localhost:5173

🛠️ Installation

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm or pnpm
  • Google Gemini API key

Backend Setup

cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

Frontend Setup

cd frontend/interview-agent-frontend
# Install dependencies
npm install
# or with pnpm
pnpm install
# Start development server
npm run dev

⚙️ Configuration

Backend Configuration

Create a .env file in the backend directory:

GEMINI_API_KEY=your_gemini_api_key_hereDATABASE_URL=postgresql://username:password@localhost/dbnameDEBUG=true

Environment Variables

VariableDescriptionRequired
GEMINI_API_KEYGoogle Gemini API key for AI agentYes
DATABASE_URLPostgreSQL connection stringYes
DEBUGEnable debug modeNo

🎯 Usage

  1. Select Interview Settings: Choose difficulty level, programming language, and interview duration
  2. Start Interview: Begin with an AI interviewer that will guide you through the process
  3. Solve Problems: Write code in the integrated editor while discussing your approach
  4. Voice Interaction: Use voice commands to communicate naturally with the AI interviewer
  5. Get Feedback: Receive real-time feedback and suggestions from the AI agent
  6. Review Results: Analyze your performance and areas for improvement

🏗️ Architecture

HT6-interview-agent/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── agent/ # AI agents (interview & feedback)
│ │ ├── core/ # Core configuration
│ │ ├── db/ # Database models and connection
│ │ └── main.py # FastAPI application entry point
│ └── requirements.txt # Python dependencies
└── frontend/ # React frontend
└── interview-agent-frontend/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ └── types/ # TypeScript type definitions
└── package.json # Node.js dependencies

Key Components

  • Interview Agent: Handles AI-powered interview interactions using Google Gemini
  • Feedback Agent: Provides performance analysis and coding feedback
  • TTS Service: Text-to-speech functionality for voice responses
  • WebSocket Manager: Real-time communication between client and server
  • Code Editor: Multi-language code editor with syntax highlighting

🧪 API Documentation

Main Endpoints

  • GET /problems - Retrieve coding problems
  • GET /problems/random - Get a random problem
  • POST /interview/start - Start a new interview session
  • POST /interview/submit - Submit code solution
  • WebSocket /ws/{client_id} - Real-time communication

WebSocket Events

  • interview_start - Begin interview session
  • code_update - Update code in real-time
  • voice_message - Send voice transcription
  • ai_response - Receive AI agent response

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Diolex: The Conversational AI Interview Simulator

The Problem: Traditional interview prep focuses on pattern recognition, not the crucial "meta-skills" of communication, strategic questioning, and hint extraction vital for real technical interviews.

Our Solution: Diolex is a voice-first AI-powered simulator designed to train these essential meta-skills. Our AI interviewer:

  • Watches code in real-time: Provides contextual feedback based on your approach.
  • Teaches strategic questioning: Withholds information, prompting you to ask clarifying questions.
  • Simulates authentic dynamics: Engages in follow-up questions, hint extraction, and edge-case discussions.
  • Provides detailed analysis: Offers specific feedback on communication and problem-solving.

How We Built It

Frontend:

  • React + TypeScript: For robust, type-safe components.
  • Tailwind CSS: For rapid, responsive styling.
  • CodeMirror 6: Provides a syntax-highlighted code editor.
  • Custom WebSocket Hooks & Speech Recognition API: Enables real-time, bidirectional communication and continuous voice input.
  • React Router: Manages seamless navigation.

Backend:

  • FastAPI: A high-performance asynchronous API.
  • WebSockets: For real-time voice and text communication.
  • Custom Interview Agent: A structured, stateful AI with authentic interviewer persona.
  • Kokoro TTS: For natural-sounding spoken feedback.
  • Piston API: Secure sandboxed code execution.
  • SQLAlchemy + PostgreSQL: For reliable data persistence.

AI & Voice Technology:

  • Finetuned Outputs & Context-Aware Responses: Ensures authentic, adaptive conversations based on code and history.
  • Multi-modal Interaction: Supports both voice and text.
  • Intelligent Hint Distribution: Provides strategic guidance without giving away answers.

Key Technical Challenges Overcome

  1. Real-time Voice + Code Synchronization: We built a sophisticated WebSocket message queue system with prioritization and conflict resolution to ensure seamless integration of speech recognition, code editing, and AI responses.
  2. Context-Aware AI Responses: Developed a dynamic context injection system that sends code snapshots with every message, allowing the AI to intelligently reference your live implementation.
  3. Authentic Interview Simulation: Achieved realistic AI behavior through extensive prompt engineering, multi-phase interview logic, information withholding strategies, and natural conversation flow patterns.
  4. Cross-browser Speech Recognition: Implemented robust fallback mechanisms, automatic restart logic, and graceful degradation to text-only mode to counter browser inconsistencies.
  5. Low-latency Voice Responses: Streamed TTS with chunk-based audio playback and WebSocket message prioritization to minimize delay for natural conversation flow.

What We Learned

Technical: Mastered WebSocket architecture, advanced speech API integration, AI prompt engineering for conversational AI, React performance optimization, and FastAPI async patterns.

Product: Understood the critical impact of authentic simulation, unique UX considerations for voice interfaces, and the importance of seamless transitions for users.

Startup: Validated our core hypothesis, discovered new use cases (e.g., explaining solutions), and recognized the scalability potential for different interview styles.

Future Vision

Diolex proves the power of AI to authentically simulate complex human interactions. Our vision is a comprehensive interview preparation platform that adapts to diverse company styles, skill levels, and formats, revolutionizing career readiness for developers.

About

Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - eddywang4340/Diolex: Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini. · GitHub
Skip to content

Repository files navigation

Diolex

An AI-powered technical interview practice platform with real-time voice interaction

PythonFastAPIReactTypeScript

LicensePlatform

🚀 Quick Start📖 Documentation🛠️ Installation🤝 Contributing


🎯 Interactive Coding Interview

Practice technical interviews with AI-powered feedback and real-time voice interaction

🗣️ Voice-Enabled Experience

Speak naturally while coding - just like a real interview

📋 Table of Contents

🔍 About

HT6 Interview Agent is an AI-powered platform designed to help developers practice technical interviews in a realistic environment. Using advanced AI agents powered by Google's Gemini model, the platform provides interactive coding challenges with voice-enabled communication, real-time feedback, and comprehensive performance analysis.

✨ Features

  • 🤖 AI-Powered Interview Agent: Interactive interviewer using Google Gemini 2.5 Flash
  • 🗣️ Voice Recognition & TTS: Real-time speech-to-text and text-to-speech capabilities
  • 💻 Multi-Language Code Editor: Support for Python, JavaScript, Java, and C++ with syntax highlighting
  • ⏱️ Real-Time Timer: Track your interview performance with live timing
  • 🎯 Coding Problem Database: Curated collection of technical interview problems
  • 📊 Performance Analysis: Detailed feedback and performance metrics
  • 🔄 WebSocket Integration: Real-time communication between frontend and backend
  • 📱 Responsive Design: Modern, clean UI built with React and Tailwind CSS

🚀 Quick Start

  1. Clone the repository

    git clone https://github.com/eddywang4340/HT6-interview-agent.git
    cd HT6-interview-agent
  2. Set up environment variables

    # Create .env file in the backend directoryecho"GEMINI_API_KEY=your_gemini_api_key_here"> backend/.env
  3. Start the backend

    cd backend
    pip install -r requirements.txt
    uvicorn app.main:app --reload
  4. Start the frontend

    cd frontend/interview-agent-frontend
    npm install
    npm run dev
  5. Open your browser and navigate to http://localhost:5173

🛠️ Installation

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm or pnpm
  • Google Gemini API key

Backend Setup

cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

Frontend Setup

cd frontend/interview-agent-frontend
# Install dependencies
npm install
# or with pnpm
pnpm install
# Start development server
npm run dev

⚙️ Configuration

Backend Configuration

Create a .env file in the backend directory:

GEMINI_API_KEY=your_gemini_api_key_hereDATABASE_URL=postgresql://username:password@localhost/dbnameDEBUG=true

Environment Variables

VariableDescriptionRequired
GEMINI_API_KEYGoogle Gemini API key for AI agentYes
DATABASE_URLPostgreSQL connection stringYes
DEBUGEnable debug modeNo

🎯 Usage

  1. Select Interview Settings: Choose difficulty level, programming language, and interview duration
  2. Start Interview: Begin with an AI interviewer that will guide you through the process
  3. Solve Problems: Write code in the integrated editor while discussing your approach
  4. Voice Interaction: Use voice commands to communicate naturally with the AI interviewer
  5. Get Feedback: Receive real-time feedback and suggestions from the AI agent
  6. Review Results: Analyze your performance and areas for improvement

🏗️ Architecture

HT6-interview-agent/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── agent/ # AI agents (interview & feedback)
│ │ ├── core/ # Core configuration
│ │ ├── db/ # Database models and connection
│ │ └── main.py # FastAPI application entry point
│ └── requirements.txt # Python dependencies
└── frontend/ # React frontend
└── interview-agent-frontend/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ └── types/ # TypeScript type definitions
└── package.json # Node.js dependencies

Key Components

  • Interview Agent: Handles AI-powered interview interactions using Google Gemini
  • Feedback Agent: Provides performance analysis and coding feedback
  • TTS Service: Text-to-speech functionality for voice responses
  • WebSocket Manager: Real-time communication between client and server
  • Code Editor: Multi-language code editor with syntax highlighting

🧪 API Documentation

Main Endpoints

  • GET /problems - Retrieve coding problems
  • GET /problems/random - Get a random problem
  • POST /interview/start - Start a new interview session
  • POST /interview/submit - Submit code solution
  • WebSocket /ws/{client_id} - Real-time communication

WebSocket Events

  • interview_start - Begin interview session
  • code_update - Update code in real-time
  • voice_message - Send voice transcription
  • ai_response - Receive AI agent response

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Diolex: The Conversational AI Interview Simulator

The Problem: Traditional interview prep focuses on pattern recognition, not the crucial "meta-skills" of communication, strategic questioning, and hint extraction vital for real technical interviews.

Our Solution: Diolex is a voice-first AI-powered simulator designed to train these essential meta-skills. Our AI interviewer:

  • Watches code in real-time: Provides contextual feedback based on your approach.
  • Teaches strategic questioning: Withholds information, prompting you to ask clarifying questions.
  • Simulates authentic dynamics: Engages in follow-up questions, hint extraction, and edge-case discussions.
  • Provides detailed analysis: Offers specific feedback on communication and problem-solving.

How We Built It

Frontend:

  • React + TypeScript: For robust, type-safe components.
  • Tailwind CSS: For rapid, responsive styling.
  • CodeMirror 6: Provides a syntax-highlighted code editor.
  • Custom WebSocket Hooks & Speech Recognition API: Enables real-time, bidirectional communication and continuous voice input.
  • React Router: Manages seamless navigation.

Backend:

  • FastAPI: A high-performance asynchronous API.
  • WebSockets: For real-time voice and text communication.
  • Custom Interview Agent: A structured, stateful AI with authentic interviewer persona.
  • Kokoro TTS: For natural-sounding spoken feedback.
  • Piston API: Secure sandboxed code execution.
  • SQLAlchemy + PostgreSQL: For reliable data persistence.

AI & Voice Technology:

  • Finetuned Outputs & Context-Aware Responses: Ensures authentic, adaptive conversations based on code and history.
  • Multi-modal Interaction: Supports both voice and text.
  • Intelligent Hint Distribution: Provides strategic guidance without giving away answers.

Key Technical Challenges Overcome

  1. Real-time Voice + Code Synchronization: We built a sophisticated WebSocket message queue system with prioritization and conflict resolution to ensure seamless integration of speech recognition, code editing, and AI responses.
  2. Context-Aware AI Responses: Developed a dynamic context injection system that sends code snapshots with every message, allowing the AI to intelligently reference your live implementation.
  3. Authentic Interview Simulation: Achieved realistic AI behavior through extensive prompt engineering, multi-phase interview logic, information withholding strategies, and natural conversation flow patterns.
  4. Cross-browser Speech Recognition: Implemented robust fallback mechanisms, automatic restart logic, and graceful degradation to text-only mode to counter browser inconsistencies.
  5. Low-latency Voice Responses: Streamed TTS with chunk-based audio playback and WebSocket message prioritization to minimize delay for natural conversation flow.

What We Learned

Technical: Mastered WebSocket architecture, advanced speech API integration, AI prompt engineering for conversational AI, React performance optimization, and FastAPI async patterns.

Product: Understood the critical impact of authentic simulation, unique UX considerations for voice interfaces, and the importance of seamless transitions for users.

Startup: Validated our core hypothesis, discovered new use cases (e.g., explaining solutions), and recognized the scalability potential for different interview styles.

Future Vision

Diolex proves the power of AI to authentically simulate complex human interactions. Our vision is a comprehensive interview preparation platform that adapts to diverse company styles, skill levels, and formats, revolutionizing career readiness for developers.

About

Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - eddywang4340/Diolex: Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini. · GitHub
Skip to content

Repository files navigation

Diolex

An AI-powered technical interview practice platform with real-time voice interaction

PythonFastAPIReactTypeScript

LicensePlatform

🚀 Quick Start📖 Documentation🛠️ Installation🤝 Contributing


🎯 Interactive Coding Interview

Practice technical interviews with AI-powered feedback and real-time voice interaction

🗣️ Voice-Enabled Experience

Speak naturally while coding - just like a real interview

📋 Table of Contents

🔍 About

HT6 Interview Agent is an AI-powered platform designed to help developers practice technical interviews in a realistic environment. Using advanced AI agents powered by Google's Gemini model, the platform provides interactive coding challenges with voice-enabled communication, real-time feedback, and comprehensive performance analysis.

✨ Features

  • 🤖 AI-Powered Interview Agent: Interactive interviewer using Google Gemini 2.5 Flash
  • 🗣️ Voice Recognition & TTS: Real-time speech-to-text and text-to-speech capabilities
  • 💻 Multi-Language Code Editor: Support for Python, JavaScript, Java, and C++ with syntax highlighting
  • ⏱️ Real-Time Timer: Track your interview performance with live timing
  • 🎯 Coding Problem Database: Curated collection of technical interview problems
  • 📊 Performance Analysis: Detailed feedback and performance metrics
  • 🔄 WebSocket Integration: Real-time communication between frontend and backend
  • 📱 Responsive Design: Modern, clean UI built with React and Tailwind CSS

🚀 Quick Start

  1. Clone the repository

    git clone https://github.com/eddywang4340/HT6-interview-agent.git
    cd HT6-interview-agent
  2. Set up environment variables

    # Create .env file in the backend directoryecho"GEMINI_API_KEY=your_gemini_api_key_here"> backend/.env
  3. Start the backend

    cd backend
    pip install -r requirements.txt
    uvicorn app.main:app --reload
  4. Start the frontend

    cd frontend/interview-agent-frontend
    npm install
    npm run dev
  5. Open your browser and navigate to http://localhost:5173

🛠️ Installation

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm or pnpm
  • Google Gemini API key

Backend Setup

cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

Frontend Setup

cd frontend/interview-agent-frontend
# Install dependencies
npm install
# or with pnpm
pnpm install
# Start development server
npm run dev

⚙️ Configuration

Backend Configuration

Create a .env file in the backend directory:

GEMINI_API_KEY=your_gemini_api_key_hereDATABASE_URL=postgresql://username:password@localhost/dbnameDEBUG=true

Environment Variables

VariableDescriptionRequired
GEMINI_API_KEYGoogle Gemini API key for AI agentYes
DATABASE_URLPostgreSQL connection stringYes
DEBUGEnable debug modeNo

🎯 Usage

  1. Select Interview Settings: Choose difficulty level, programming language, and interview duration
  2. Start Interview: Begin with an AI interviewer that will guide you through the process
  3. Solve Problems: Write code in the integrated editor while discussing your approach
  4. Voice Interaction: Use voice commands to communicate naturally with the AI interviewer
  5. Get Feedback: Receive real-time feedback and suggestions from the AI agent
  6. Review Results: Analyze your performance and areas for improvement

🏗️ Architecture

HT6-interview-agent/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── agent/ # AI agents (interview & feedback)
│ │ ├── core/ # Core configuration
│ │ ├── db/ # Database models and connection
│ │ └── main.py # FastAPI application entry point
│ └── requirements.txt # Python dependencies
└── frontend/ # React frontend
└── interview-agent-frontend/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ └── types/ # TypeScript type definitions
└── package.json # Node.js dependencies

Key Components

  • Interview Agent: Handles AI-powered interview interactions using Google Gemini
  • Feedback Agent: Provides performance analysis and coding feedback
  • TTS Service: Text-to-speech functionality for voice responses
  • WebSocket Manager: Real-time communication between client and server
  • Code Editor: Multi-language code editor with syntax highlighting

🧪 API Documentation

Main Endpoints

  • GET /problems - Retrieve coding problems
  • GET /problems/random - Get a random problem
  • POST /interview/start - Start a new interview session
  • POST /interview/submit - Submit code solution
  • WebSocket /ws/{client_id} - Real-time communication

WebSocket Events

  • interview_start - Begin interview session
  • code_update - Update code in real-time
  • voice_message - Send voice transcription
  • ai_response - Receive AI agent response

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Diolex: The Conversational AI Interview Simulator

The Problem: Traditional interview prep focuses on pattern recognition, not the crucial "meta-skills" of communication, strategic questioning, and hint extraction vital for real technical interviews.

Our Solution: Diolex is a voice-first AI-powered simulator designed to train these essential meta-skills. Our AI interviewer:

  • Watches code in real-time: Provides contextual feedback based on your approach.
  • Teaches strategic questioning: Withholds information, prompting you to ask clarifying questions.
  • Simulates authentic dynamics: Engages in follow-up questions, hint extraction, and edge-case discussions.
  • Provides detailed analysis: Offers specific feedback on communication and problem-solving.

How We Built It

Frontend:

  • React + TypeScript: For robust, type-safe components.
  • Tailwind CSS: For rapid, responsive styling.
  • CodeMirror 6: Provides a syntax-highlighted code editor.
  • Custom WebSocket Hooks & Speech Recognition API: Enables real-time, bidirectional communication and continuous voice input.
  • React Router: Manages seamless navigation.

Backend:

  • FastAPI: A high-performance asynchronous API.
  • WebSockets: For real-time voice and text communication.
  • Custom Interview Agent: A structured, stateful AI with authentic interviewer persona.
  • Kokoro TTS: For natural-sounding spoken feedback.
  • Piston API: Secure sandboxed code execution.
  • SQLAlchemy + PostgreSQL: For reliable data persistence.

AI & Voice Technology:

  • Finetuned Outputs & Context-Aware Responses: Ensures authentic, adaptive conversations based on code and history.
  • Multi-modal Interaction: Supports both voice and text.
  • Intelligent Hint Distribution: Provides strategic guidance without giving away answers.

Key Technical Challenges Overcome

  1. Real-time Voice + Code Synchronization: We built a sophisticated WebSocket message queue system with prioritization and conflict resolution to ensure seamless integration of speech recognition, code editing, and AI responses.
  2. Context-Aware AI Responses: Developed a dynamic context injection system that sends code snapshots with every message, allowing the AI to intelligently reference your live implementation.
  3. Authentic Interview Simulation: Achieved realistic AI behavior through extensive prompt engineering, multi-phase interview logic, information withholding strategies, and natural conversation flow patterns.
  4. Cross-browser Speech Recognition: Implemented robust fallback mechanisms, automatic restart logic, and graceful degradation to text-only mode to counter browser inconsistencies.
  5. Low-latency Voice Responses: Streamed TTS with chunk-based audio playback and WebSocket message prioritization to minimize delay for natural conversation flow.

What We Learned

Technical: Mastered WebSocket architecture, advanced speech API integration, AI prompt engineering for conversational AI, React performance optimization, and FastAPI async patterns.

Product: Understood the critical impact of authentic simulation, unique UX considerations for voice interfaces, and the importance of seamless transitions for users.

Startup: Validated our core hypothesis, discovered new use cases (e.g., explaining solutions), and recognized the scalability potential for different interview styles.

Future Vision

Diolex proves the power of AI to authentically simulate complex human interactions. Our vision is a comprehensive interview preparation platform that adapts to diverse company styles, skill levels, and formats, revolutionizing career readiness for developers.

About

Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - eddywang4340/Diolex: Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini. · GitHub
Skip to content

Repository files navigation

Diolex

An AI-powered technical interview practice platform with real-time voice interaction

PythonFastAPIReactTypeScript

LicensePlatform

🚀 Quick Start📖 Documentation🛠️ Installation🤝 Contributing


🎯 Interactive Coding Interview

Practice technical interviews with AI-powered feedback and real-time voice interaction

🗣️ Voice-Enabled Experience

Speak naturally while coding - just like a real interview

📋 Table of Contents

🔍 About

HT6 Interview Agent is an AI-powered platform designed to help developers practice technical interviews in a realistic environment. Using advanced AI agents powered by Google's Gemini model, the platform provides interactive coding challenges with voice-enabled communication, real-time feedback, and comprehensive performance analysis.

✨ Features

  • 🤖 AI-Powered Interview Agent: Interactive interviewer using Google Gemini 2.5 Flash
  • 🗣️ Voice Recognition & TTS: Real-time speech-to-text and text-to-speech capabilities
  • 💻 Multi-Language Code Editor: Support for Python, JavaScript, Java, and C++ with syntax highlighting
  • ⏱️ Real-Time Timer: Track your interview performance with live timing
  • 🎯 Coding Problem Database: Curated collection of technical interview problems
  • 📊 Performance Analysis: Detailed feedback and performance metrics
  • 🔄 WebSocket Integration: Real-time communication between frontend and backend
  • 📱 Responsive Design: Modern, clean UI built with React and Tailwind CSS

🚀 Quick Start

  1. Clone the repository

    git clone https://github.com/eddywang4340/HT6-interview-agent.git
    cd HT6-interview-agent
  2. Set up environment variables

    # Create .env file in the backend directoryecho"GEMINI_API_KEY=your_gemini_api_key_here"> backend/.env
  3. Start the backend

    cd backend
    pip install -r requirements.txt
    uvicorn app.main:app --reload
  4. Start the frontend

    cd frontend/interview-agent-frontend
    npm install
    npm run dev
  5. Open your browser and navigate to http://localhost:5173

🛠️ Installation

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm or pnpm
  • Google Gemini API key

Backend Setup

cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

Frontend Setup

cd frontend/interview-agent-frontend
# Install dependencies
npm install
# or with pnpm
pnpm install
# Start development server
npm run dev

⚙️ Configuration

Backend Configuration

Create a .env file in the backend directory:

GEMINI_API_KEY=your_gemini_api_key_hereDATABASE_URL=postgresql://username:password@localhost/dbnameDEBUG=true

Environment Variables

VariableDescriptionRequired
GEMINI_API_KEYGoogle Gemini API key for AI agentYes
DATABASE_URLPostgreSQL connection stringYes
DEBUGEnable debug modeNo

🎯 Usage

  1. Select Interview Settings: Choose difficulty level, programming language, and interview duration
  2. Start Interview: Begin with an AI interviewer that will guide you through the process
  3. Solve Problems: Write code in the integrated editor while discussing your approach
  4. Voice Interaction: Use voice commands to communicate naturally with the AI interviewer
  5. Get Feedback: Receive real-time feedback and suggestions from the AI agent
  6. Review Results: Analyze your performance and areas for improvement

🏗️ Architecture

HT6-interview-agent/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── agent/ # AI agents (interview & feedback)
│ │ ├── core/ # Core configuration
│ │ ├── db/ # Database models and connection
│ │ └── main.py # FastAPI application entry point
│ └── requirements.txt # Python dependencies
└── frontend/ # React frontend
└── interview-agent-frontend/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ └── types/ # TypeScript type definitions
└── package.json # Node.js dependencies

Key Components

  • Interview Agent: Handles AI-powered interview interactions using Google Gemini
  • Feedback Agent: Provides performance analysis and coding feedback
  • TTS Service: Text-to-speech functionality for voice responses
  • WebSocket Manager: Real-time communication between client and server
  • Code Editor: Multi-language code editor with syntax highlighting

🧪 API Documentation

Main Endpoints

  • GET /problems - Retrieve coding problems
  • GET /problems/random - Get a random problem
  • POST /interview/start - Start a new interview session
  • POST /interview/submit - Submit code solution
  • WebSocket /ws/{client_id} - Real-time communication

WebSocket Events

  • interview_start - Begin interview session
  • code_update - Update code in real-time
  • voice_message - Send voice transcription
  • ai_response - Receive AI agent response

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Diolex: The Conversational AI Interview Simulator

The Problem: Traditional interview prep focuses on pattern recognition, not the crucial "meta-skills" of communication, strategic questioning, and hint extraction vital for real technical interviews.

Our Solution: Diolex is a voice-first AI-powered simulator designed to train these essential meta-skills. Our AI interviewer:

  • Watches code in real-time: Provides contextual feedback based on your approach.
  • Teaches strategic questioning: Withholds information, prompting you to ask clarifying questions.
  • Simulates authentic dynamics: Engages in follow-up questions, hint extraction, and edge-case discussions.
  • Provides detailed analysis: Offers specific feedback on communication and problem-solving.

How We Built It

Frontend:

  • React + TypeScript: For robust, type-safe components.
  • Tailwind CSS: For rapid, responsive styling.
  • CodeMirror 6: Provides a syntax-highlighted code editor.
  • Custom WebSocket Hooks & Speech Recognition API: Enables real-time, bidirectional communication and continuous voice input.
  • React Router: Manages seamless navigation.

Backend:

  • FastAPI: A high-performance asynchronous API.
  • WebSockets: For real-time voice and text communication.
  • Custom Interview Agent: A structured, stateful AI with authentic interviewer persona.
  • Kokoro TTS: For natural-sounding spoken feedback.
  • Piston API: Secure sandboxed code execution.
  • SQLAlchemy + PostgreSQL: For reliable data persistence.

AI & Voice Technology:

  • Finetuned Outputs & Context-Aware Responses: Ensures authentic, adaptive conversations based on code and history.
  • Multi-modal Interaction: Supports both voice and text.
  • Intelligent Hint Distribution: Provides strategic guidance without giving away answers.

Key Technical Challenges Overcome

  1. Real-time Voice + Code Synchronization: We built a sophisticated WebSocket message queue system with prioritization and conflict resolution to ensure seamless integration of speech recognition, code editing, and AI responses.
  2. Context-Aware AI Responses: Developed a dynamic context injection system that sends code snapshots with every message, allowing the AI to intelligently reference your live implementation.
  3. Authentic Interview Simulation: Achieved realistic AI behavior through extensive prompt engineering, multi-phase interview logic, information withholding strategies, and natural conversation flow patterns.
  4. Cross-browser Speech Recognition: Implemented robust fallback mechanisms, automatic restart logic, and graceful degradation to text-only mode to counter browser inconsistencies.
  5. Low-latency Voice Responses: Streamed TTS with chunk-based audio playback and WebSocket message prioritization to minimize delay for natural conversation flow.

What We Learned

Technical: Mastered WebSocket architecture, advanced speech API integration, AI prompt engineering for conversational AI, React performance optimization, and FastAPI async patterns.

Product: Understood the critical impact of authentic simulation, unique UX considerations for voice interfaces, and the importance of seamless transitions for users.

Startup: Validated our core hypothesis, discovered new use cases (e.g., explaining solutions), and recognized the scalability potential for different interview styles.

Future Vision

Diolex proves the power of AI to authentically simulate complex human interactions. Our vision is a comprehensive interview preparation platform that adapts to diverse company styles, skill levels, and formats, revolutionizing career readiness for developers.

About

Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - eddywang4340/Diolex: Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini. · GitHub
Skip to content

Repository files navigation

Diolex

An AI-powered technical interview practice platform with real-time voice interaction

PythonFastAPIReactTypeScript

LicensePlatform

🚀 Quick Start📖 Documentation🛠️ Installation🤝 Contributing


🎯 Interactive Coding Interview

Practice technical interviews with AI-powered feedback and real-time voice interaction

🗣️ Voice-Enabled Experience

Speak naturally while coding - just like a real interview

📋 Table of Contents

🔍 About

HT6 Interview Agent is an AI-powered platform designed to help developers practice technical interviews in a realistic environment. Using advanced AI agents powered by Google's Gemini model, the platform provides interactive coding challenges with voice-enabled communication, real-time feedback, and comprehensive performance analysis.

✨ Features

  • 🤖 AI-Powered Interview Agent: Interactive interviewer using Google Gemini 2.5 Flash
  • 🗣️ Voice Recognition & TTS: Real-time speech-to-text and text-to-speech capabilities
  • 💻 Multi-Language Code Editor: Support for Python, JavaScript, Java, and C++ with syntax highlighting
  • ⏱️ Real-Time Timer: Track your interview performance with live timing
  • 🎯 Coding Problem Database: Curated collection of technical interview problems
  • 📊 Performance Analysis: Detailed feedback and performance metrics
  • 🔄 WebSocket Integration: Real-time communication between frontend and backend
  • 📱 Responsive Design: Modern, clean UI built with React and Tailwind CSS

🚀 Quick Start

  1. Clone the repository

    git clone https://github.com/eddywang4340/HT6-interview-agent.git
    cd HT6-interview-agent
  2. Set up environment variables

    # Create .env file in the backend directoryecho"GEMINI_API_KEY=your_gemini_api_key_here"> backend/.env
  3. Start the backend

    cd backend
    pip install -r requirements.txt
    uvicorn app.main:app --reload
  4. Start the frontend

    cd frontend/interview-agent-frontend
    npm install
    npm run dev
  5. Open your browser and navigate to http://localhost:5173

🛠️ Installation

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm or pnpm
  • Google Gemini API key

Backend Setup

cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

Frontend Setup

cd frontend/interview-agent-frontend
# Install dependencies
npm install
# or with pnpm
pnpm install
# Start development server
npm run dev

⚙️ Configuration

Backend Configuration

Create a .env file in the backend directory:

GEMINI_API_KEY=your_gemini_api_key_hereDATABASE_URL=postgresql://username:password@localhost/dbnameDEBUG=true

Environment Variables

VariableDescriptionRequired
GEMINI_API_KEYGoogle Gemini API key for AI agentYes
DATABASE_URLPostgreSQL connection stringYes
DEBUGEnable debug modeNo

🎯 Usage

  1. Select Interview Settings: Choose difficulty level, programming language, and interview duration
  2. Start Interview: Begin with an AI interviewer that will guide you through the process
  3. Solve Problems: Write code in the integrated editor while discussing your approach
  4. Voice Interaction: Use voice commands to communicate naturally with the AI interviewer
  5. Get Feedback: Receive real-time feedback and suggestions from the AI agent
  6. Review Results: Analyze your performance and areas for improvement

🏗️ Architecture

HT6-interview-agent/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── agent/ # AI agents (interview & feedback)
│ │ ├── core/ # Core configuration
│ │ ├── db/ # Database models and connection
│ │ └── main.py # FastAPI application entry point
│ └── requirements.txt # Python dependencies
└── frontend/ # React frontend
└── interview-agent-frontend/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ └── types/ # TypeScript type definitions
└── package.json # Node.js dependencies

Key Components

  • Interview Agent: Handles AI-powered interview interactions using Google Gemini
  • Feedback Agent: Provides performance analysis and coding feedback
  • TTS Service: Text-to-speech functionality for voice responses
  • WebSocket Manager: Real-time communication between client and server
  • Code Editor: Multi-language code editor with syntax highlighting

🧪 API Documentation

Main Endpoints

  • GET /problems - Retrieve coding problems
  • GET /problems/random - Get a random problem
  • POST /interview/start - Start a new interview session
  • POST /interview/submit - Submit code solution
  • WebSocket /ws/{client_id} - Real-time communication

WebSocket Events

  • interview_start - Begin interview session
  • code_update - Update code in real-time
  • voice_message - Send voice transcription
  • ai_response - Receive AI agent response

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Diolex: The Conversational AI Interview Simulator

The Problem: Traditional interview prep focuses on pattern recognition, not the crucial "meta-skills" of communication, strategic questioning, and hint extraction vital for real technical interviews.

Our Solution: Diolex is a voice-first AI-powered simulator designed to train these essential meta-skills. Our AI interviewer:

  • Watches code in real-time: Provides contextual feedback based on your approach.
  • Teaches strategic questioning: Withholds information, prompting you to ask clarifying questions.
  • Simulates authentic dynamics: Engages in follow-up questions, hint extraction, and edge-case discussions.
  • Provides detailed analysis: Offers specific feedback on communication and problem-solving.

How We Built It

Frontend:

  • React + TypeScript: For robust, type-safe components.
  • Tailwind CSS: For rapid, responsive styling.
  • CodeMirror 6: Provides a syntax-highlighted code editor.
  • Custom WebSocket Hooks & Speech Recognition API: Enables real-time, bidirectional communication and continuous voice input.
  • React Router: Manages seamless navigation.

Backend:

  • FastAPI: A high-performance asynchronous API.
  • WebSockets: For real-time voice and text communication.
  • Custom Interview Agent: A structured, stateful AI with authentic interviewer persona.
  • Kokoro TTS: For natural-sounding spoken feedback.
  • Piston API: Secure sandboxed code execution.
  • SQLAlchemy + PostgreSQL: For reliable data persistence.

AI & Voice Technology:

  • Finetuned Outputs & Context-Aware Responses: Ensures authentic, adaptive conversations based on code and history.
  • Multi-modal Interaction: Supports both voice and text.
  • Intelligent Hint Distribution: Provides strategic guidance without giving away answers.

Key Technical Challenges Overcome

  1. Real-time Voice + Code Synchronization: We built a sophisticated WebSocket message queue system with prioritization and conflict resolution to ensure seamless integration of speech recognition, code editing, and AI responses.
  2. Context-Aware AI Responses: Developed a dynamic context injection system that sends code snapshots with every message, allowing the AI to intelligently reference your live implementation.
  3. Authentic Interview Simulation: Achieved realistic AI behavior through extensive prompt engineering, multi-phase interview logic, information withholding strategies, and natural conversation flow patterns.
  4. Cross-browser Speech Recognition: Implemented robust fallback mechanisms, automatic restart logic, and graceful degradation to text-only mode to counter browser inconsistencies.
  5. Low-latency Voice Responses: Streamed TTS with chunk-based audio playback and WebSocket message prioritization to minimize delay for natural conversation flow.

What We Learned

Technical: Mastered WebSocket architecture, advanced speech API integration, AI prompt engineering for conversational AI, React performance optimization, and FastAPI async patterns.

Product: Understood the critical impact of authentic simulation, unique UX considerations for voice interfaces, and the importance of seamless transitions for users.

Startup: Validated our core hypothesis, discovered new use cases (e.g., explaining solutions), and recognized the scalability potential for different interview styles.

Future Vision

Diolex proves the power of AI to authentically simulate complex human interactions. Our vision is a comprehensive interview preparation platform that adapts to diverse company styles, skill levels, and formats, revolutionizing career readiness for developers.

About

Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - eddywang4340/Diolex: Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini. · GitHub
Skip to content

Repository files navigation

Diolex

An AI-powered technical interview practice platform with real-time voice interaction

PythonFastAPIReactTypeScript

LicensePlatform

🚀 Quick Start📖 Documentation🛠️ Installation🤝 Contributing


🎯 Interactive Coding Interview

Practice technical interviews with AI-powered feedback and real-time voice interaction

🗣️ Voice-Enabled Experience

Speak naturally while coding - just like a real interview

📋 Table of Contents

🔍 About

HT6 Interview Agent is an AI-powered platform designed to help developers practice technical interviews in a realistic environment. Using advanced AI agents powered by Google's Gemini model, the platform provides interactive coding challenges with voice-enabled communication, real-time feedback, and comprehensive performance analysis.

✨ Features

  • 🤖 AI-Powered Interview Agent: Interactive interviewer using Google Gemini 2.5 Flash
  • 🗣️ Voice Recognition & TTS: Real-time speech-to-text and text-to-speech capabilities
  • 💻 Multi-Language Code Editor: Support for Python, JavaScript, Java, and C++ with syntax highlighting
  • ⏱️ Real-Time Timer: Track your interview performance with live timing
  • 🎯 Coding Problem Database: Curated collection of technical interview problems
  • 📊 Performance Analysis: Detailed feedback and performance metrics
  • 🔄 WebSocket Integration: Real-time communication between frontend and backend
  • 📱 Responsive Design: Modern, clean UI built with React and Tailwind CSS

🚀 Quick Start

  1. Clone the repository

    git clone https://github.com/eddywang4340/HT6-interview-agent.git
    cd HT6-interview-agent
  2. Set up environment variables

    # Create .env file in the backend directoryecho"GEMINI_API_KEY=your_gemini_api_key_here"> backend/.env
  3. Start the backend

    cd backend
    pip install -r requirements.txt
    uvicorn app.main:app --reload
  4. Start the frontend

    cd frontend/interview-agent-frontend
    npm install
    npm run dev
  5. Open your browser and navigate to http://localhost:5173

🛠️ Installation

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm or pnpm
  • Google Gemini API key

Backend Setup

cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

Frontend Setup

cd frontend/interview-agent-frontend
# Install dependencies
npm install
# or with pnpm
pnpm install
# Start development server
npm run dev

⚙️ Configuration

Backend Configuration

Create a .env file in the backend directory:

GEMINI_API_KEY=your_gemini_api_key_hereDATABASE_URL=postgresql://username:password@localhost/dbnameDEBUG=true

Environment Variables

VariableDescriptionRequired
GEMINI_API_KEYGoogle Gemini API key for AI agentYes
DATABASE_URLPostgreSQL connection stringYes
DEBUGEnable debug modeNo

🎯 Usage

  1. Select Interview Settings: Choose difficulty level, programming language, and interview duration
  2. Start Interview: Begin with an AI interviewer that will guide you through the process
  3. Solve Problems: Write code in the integrated editor while discussing your approach
  4. Voice Interaction: Use voice commands to communicate naturally with the AI interviewer
  5. Get Feedback: Receive real-time feedback and suggestions from the AI agent
  6. Review Results: Analyze your performance and areas for improvement

🏗️ Architecture

HT6-interview-agent/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── agent/ # AI agents (interview & feedback)
│ │ ├── core/ # Core configuration
│ │ ├── db/ # Database models and connection
│ │ └── main.py # FastAPI application entry point
│ └── requirements.txt # Python dependencies
└── frontend/ # React frontend
└── interview-agent-frontend/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ └── types/ # TypeScript type definitions
└── package.json # Node.js dependencies

Key Components

  • Interview Agent: Handles AI-powered interview interactions using Google Gemini
  • Feedback Agent: Provides performance analysis and coding feedback
  • TTS Service: Text-to-speech functionality for voice responses
  • WebSocket Manager: Real-time communication between client and server
  • Code Editor: Multi-language code editor with syntax highlighting

🧪 API Documentation

Main Endpoints

  • GET /problems - Retrieve coding problems
  • GET /problems/random - Get a random problem
  • POST /interview/start - Start a new interview session
  • POST /interview/submit - Submit code solution
  • WebSocket /ws/{client_id} - Real-time communication

WebSocket Events

  • interview_start - Begin interview session
  • code_update - Update code in real-time
  • voice_message - Send voice transcription
  • ai_response - Receive AI agent response

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Diolex: The Conversational AI Interview Simulator

The Problem: Traditional interview prep focuses on pattern recognition, not the crucial "meta-skills" of communication, strategic questioning, and hint extraction vital for real technical interviews.

Our Solution: Diolex is a voice-first AI-powered simulator designed to train these essential meta-skills. Our AI interviewer:

  • Watches code in real-time: Provides contextual feedback based on your approach.
  • Teaches strategic questioning: Withholds information, prompting you to ask clarifying questions.
  • Simulates authentic dynamics: Engages in follow-up questions, hint extraction, and edge-case discussions.
  • Provides detailed analysis: Offers specific feedback on communication and problem-solving.

How We Built It

Frontend:

  • React + TypeScript: For robust, type-safe components.
  • Tailwind CSS: For rapid, responsive styling.
  • CodeMirror 6: Provides a syntax-highlighted code editor.
  • Custom WebSocket Hooks & Speech Recognition API: Enables real-time, bidirectional communication and continuous voice input.
  • React Router: Manages seamless navigation.

Backend:

  • FastAPI: A high-performance asynchronous API.
  • WebSockets: For real-time voice and text communication.
  • Custom Interview Agent: A structured, stateful AI with authentic interviewer persona.
  • Kokoro TTS: For natural-sounding spoken feedback.
  • Piston API: Secure sandboxed code execution.
  • SQLAlchemy + PostgreSQL: For reliable data persistence.

AI & Voice Technology:

  • Finetuned Outputs & Context-Aware Responses: Ensures authentic, adaptive conversations based on code and history.
  • Multi-modal Interaction: Supports both voice and text.
  • Intelligent Hint Distribution: Provides strategic guidance without giving away answers.

Key Technical Challenges Overcome

  1. Real-time Voice + Code Synchronization: We built a sophisticated WebSocket message queue system with prioritization and conflict resolution to ensure seamless integration of speech recognition, code editing, and AI responses.
  2. Context-Aware AI Responses: Developed a dynamic context injection system that sends code snapshots with every message, allowing the AI to intelligently reference your live implementation.
  3. Authentic Interview Simulation: Achieved realistic AI behavior through extensive prompt engineering, multi-phase interview logic, information withholding strategies, and natural conversation flow patterns.
  4. Cross-browser Speech Recognition: Implemented robust fallback mechanisms, automatic restart logic, and graceful degradation to text-only mode to counter browser inconsistencies.
  5. Low-latency Voice Responses: Streamed TTS with chunk-based audio playback and WebSocket message prioritization to minimize delay for natural conversation flow.

What We Learned

Technical: Mastered WebSocket architecture, advanced speech API integration, AI prompt engineering for conversational AI, React performance optimization, and FastAPI async patterns.

Product: Understood the critical impact of authentic simulation, unique UX considerations for voice interfaces, and the importance of seamless transitions for users.

Startup: Validated our core hypothesis, discovered new use cases (e.g., explaining solutions), and recognized the scalability potential for different interview styles.

Future Vision

Diolex proves the power of AI to authentically simulate complex human interactions. Our vision is a comprehensive interview preparation platform that adapts to diverse company styles, skill levels, and formats, revolutionizing career readiness for developers.

About

Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - eddywang4340/Diolex: Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini. · GitHub
Skip to content

Repository files navigation

Diolex

An AI-powered technical interview practice platform with real-time voice interaction

PythonFastAPIReactTypeScript

LicensePlatform

🚀 Quick Start📖 Documentation🛠️ Installation🤝 Contributing


🎯 Interactive Coding Interview

Practice technical interviews with AI-powered feedback and real-time voice interaction

🗣️ Voice-Enabled Experience

Speak naturally while coding - just like a real interview

📋 Table of Contents

🔍 About

HT6 Interview Agent is an AI-powered platform designed to help developers practice technical interviews in a realistic environment. Using advanced AI agents powered by Google's Gemini model, the platform provides interactive coding challenges with voice-enabled communication, real-time feedback, and comprehensive performance analysis.

✨ Features

  • 🤖 AI-Powered Interview Agent: Interactive interviewer using Google Gemini 2.5 Flash
  • 🗣️ Voice Recognition & TTS: Real-time speech-to-text and text-to-speech capabilities
  • 💻 Multi-Language Code Editor: Support for Python, JavaScript, Java, and C++ with syntax highlighting
  • ⏱️ Real-Time Timer: Track your interview performance with live timing
  • 🎯 Coding Problem Database: Curated collection of technical interview problems
  • 📊 Performance Analysis: Detailed feedback and performance metrics
  • 🔄 WebSocket Integration: Real-time communication between frontend and backend
  • 📱 Responsive Design: Modern, clean UI built with React and Tailwind CSS

🚀 Quick Start

  1. Clone the repository

    git clone https://github.com/eddywang4340/HT6-interview-agent.git
    cd HT6-interview-agent
  2. Set up environment variables

    # Create .env file in the backend directoryecho"GEMINI_API_KEY=your_gemini_api_key_here"> backend/.env
  3. Start the backend

    cd backend
    pip install -r requirements.txt
    uvicorn app.main:app --reload
  4. Start the frontend

    cd frontend/interview-agent-frontend
    npm install
    npm run dev
  5. Open your browser and navigate to http://localhost:5173

🛠️ Installation

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm or pnpm
  • Google Gemini API key

Backend Setup

cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

Frontend Setup

cd frontend/interview-agent-frontend
# Install dependencies
npm install
# or with pnpm
pnpm install
# Start development server
npm run dev

⚙️ Configuration

Backend Configuration

Create a .env file in the backend directory:

GEMINI_API_KEY=your_gemini_api_key_hereDATABASE_URL=postgresql://username:password@localhost/dbnameDEBUG=true

Environment Variables

VariableDescriptionRequired
GEMINI_API_KEYGoogle Gemini API key for AI agentYes
DATABASE_URLPostgreSQL connection stringYes
DEBUGEnable debug modeNo

🎯 Usage

  1. Select Interview Settings: Choose difficulty level, programming language, and interview duration
  2. Start Interview: Begin with an AI interviewer that will guide you through the process
  3. Solve Problems: Write code in the integrated editor while discussing your approach
  4. Voice Interaction: Use voice commands to communicate naturally with the AI interviewer
  5. Get Feedback: Receive real-time feedback and suggestions from the AI agent
  6. Review Results: Analyze your performance and areas for improvement

🏗️ Architecture

HT6-interview-agent/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── agent/ # AI agents (interview & feedback)
│ │ ├── core/ # Core configuration
│ │ ├── db/ # Database models and connection
│ │ └── main.py # FastAPI application entry point
│ └── requirements.txt # Python dependencies
└── frontend/ # React frontend
└── interview-agent-frontend/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ └── types/ # TypeScript type definitions
└── package.json # Node.js dependencies

Key Components

  • Interview Agent: Handles AI-powered interview interactions using Google Gemini
  • Feedback Agent: Provides performance analysis and coding feedback
  • TTS Service: Text-to-speech functionality for voice responses
  • WebSocket Manager: Real-time communication between client and server
  • Code Editor: Multi-language code editor with syntax highlighting

🧪 API Documentation

Main Endpoints

  • GET /problems - Retrieve coding problems
  • GET /problems/random - Get a random problem
  • POST /interview/start - Start a new interview session
  • POST /interview/submit - Submit code solution
  • WebSocket /ws/{client_id} - Real-time communication

WebSocket Events

  • interview_start - Begin interview session
  • code_update - Update code in real-time
  • voice_message - Send voice transcription
  • ai_response - Receive AI agent response

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Diolex: The Conversational AI Interview Simulator

The Problem: Traditional interview prep focuses on pattern recognition, not the crucial "meta-skills" of communication, strategic questioning, and hint extraction vital for real technical interviews.

Our Solution: Diolex is a voice-first AI-powered simulator designed to train these essential meta-skills. Our AI interviewer:

  • Watches code in real-time: Provides contextual feedback based on your approach.
  • Teaches strategic questioning: Withholds information, prompting you to ask clarifying questions.
  • Simulates authentic dynamics: Engages in follow-up questions, hint extraction, and edge-case discussions.
  • Provides detailed analysis: Offers specific feedback on communication and problem-solving.

How We Built It

Frontend:

  • React + TypeScript: For robust, type-safe components.
  • Tailwind CSS: For rapid, responsive styling.
  • CodeMirror 6: Provides a syntax-highlighted code editor.
  • Custom WebSocket Hooks & Speech Recognition API: Enables real-time, bidirectional communication and continuous voice input.
  • React Router: Manages seamless navigation.

Backend:

  • FastAPI: A high-performance asynchronous API.
  • WebSockets: For real-time voice and text communication.
  • Custom Interview Agent: A structured, stateful AI with authentic interviewer persona.
  • Kokoro TTS: For natural-sounding spoken feedback.
  • Piston API: Secure sandboxed code execution.
  • SQLAlchemy + PostgreSQL: For reliable data persistence.

AI & Voice Technology:

  • Finetuned Outputs & Context-Aware Responses: Ensures authentic, adaptive conversations based on code and history.
  • Multi-modal Interaction: Supports both voice and text.
  • Intelligent Hint Distribution: Provides strategic guidance without giving away answers.

Key Technical Challenges Overcome

  1. Real-time Voice + Code Synchronization: We built a sophisticated WebSocket message queue system with prioritization and conflict resolution to ensure seamless integration of speech recognition, code editing, and AI responses.
  2. Context-Aware AI Responses: Developed a dynamic context injection system that sends code snapshots with every message, allowing the AI to intelligently reference your live implementation.
  3. Authentic Interview Simulation: Achieved realistic AI behavior through extensive prompt engineering, multi-phase interview logic, information withholding strategies, and natural conversation flow patterns.
  4. Cross-browser Speech Recognition: Implemented robust fallback mechanisms, automatic restart logic, and graceful degradation to text-only mode to counter browser inconsistencies.
  5. Low-latency Voice Responses: Streamed TTS with chunk-based audio playback and WebSocket message prioritization to minimize delay for natural conversation flow.

What We Learned

Technical: Mastered WebSocket architecture, advanced speech API integration, AI prompt engineering for conversational AI, React performance optimization, and FastAPI async patterns.

Product: Understood the critical impact of authentic simulation, unique UX considerations for voice interfaces, and the importance of seamless transitions for users.

Startup: Validated our core hypothesis, discovered new use cases (e.g., explaining solutions), and recognized the scalability potential for different interview styles.

Future Vision

Diolex proves the power of AI to authentically simulate complex human interactions. Our vision is a comprehensive interview preparation platform that adapts to diverse company styles, skill levels, and formats, revolutionizing career readiness for developers.

About

Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - eddywang4340/Diolex: Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini. · GitHub
Skip to content

Repository files navigation

Diolex

An AI-powered technical interview practice platform with real-time voice interaction

PythonFastAPIReactTypeScript

LicensePlatform

🚀 Quick Start📖 Documentation🛠️ Installation🤝 Contributing


🎯 Interactive Coding Interview

Practice technical interviews with AI-powered feedback and real-time voice interaction

🗣️ Voice-Enabled Experience

Speak naturally while coding - just like a real interview

📋 Table of Contents

🔍 About

HT6 Interview Agent is an AI-powered platform designed to help developers practice technical interviews in a realistic environment. Using advanced AI agents powered by Google's Gemini model, the platform provides interactive coding challenges with voice-enabled communication, real-time feedback, and comprehensive performance analysis.

✨ Features

  • 🤖 AI-Powered Interview Agent: Interactive interviewer using Google Gemini 2.5 Flash
  • 🗣️ Voice Recognition & TTS: Real-time speech-to-text and text-to-speech capabilities
  • 💻 Multi-Language Code Editor: Support for Python, JavaScript, Java, and C++ with syntax highlighting
  • ⏱️ Real-Time Timer: Track your interview performance with live timing
  • 🎯 Coding Problem Database: Curated collection of technical interview problems
  • 📊 Performance Analysis: Detailed feedback and performance metrics
  • 🔄 WebSocket Integration: Real-time communication between frontend and backend
  • 📱 Responsive Design: Modern, clean UI built with React and Tailwind CSS

🚀 Quick Start

  1. Clone the repository

    git clone https://github.com/eddywang4340/HT6-interview-agent.git
    cd HT6-interview-agent
  2. Set up environment variables

    # Create .env file in the backend directoryecho"GEMINI_API_KEY=your_gemini_api_key_here"> backend/.env
  3. Start the backend

    cd backend
    pip install -r requirements.txt
    uvicorn app.main:app --reload
  4. Start the frontend

    cd frontend/interview-agent-frontend
    npm install
    npm run dev
  5. Open your browser and navigate to http://localhost:5173

🛠️ Installation

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm or pnpm
  • Google Gemini API key

Backend Setup

cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate# Install dependencies
pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

Frontend Setup

cd frontend/interview-agent-frontend
# Install dependencies
npm install
# or with pnpm
pnpm install
# Start development server
npm run dev

⚙️ Configuration

Backend Configuration

Create a .env file in the backend directory:

GEMINI_API_KEY=your_gemini_api_key_hereDATABASE_URL=postgresql://username:password@localhost/dbnameDEBUG=true

Environment Variables

VariableDescriptionRequired
GEMINI_API_KEYGoogle Gemini API key for AI agentYes
DATABASE_URLPostgreSQL connection stringYes
DEBUGEnable debug modeNo

🎯 Usage

  1. Select Interview Settings: Choose difficulty level, programming language, and interview duration
  2. Start Interview: Begin with an AI interviewer that will guide you through the process
  3. Solve Problems: Write code in the integrated editor while discussing your approach
  4. Voice Interaction: Use voice commands to communicate naturally with the AI interviewer
  5. Get Feedback: Receive real-time feedback and suggestions from the AI agent
  6. Review Results: Analyze your performance and areas for improvement

🏗️ Architecture

HT6-interview-agent/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── agent/ # AI agents (interview & feedback)
│ │ ├── core/ # Core configuration
│ │ ├── db/ # Database models and connection
│ │ └── main.py # FastAPI application entry point
│ └── requirements.txt # Python dependencies
└── frontend/ # React frontend
└── interview-agent-frontend/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components
│ └── types/ # TypeScript type definitions
└── package.json # Node.js dependencies

Key Components

  • Interview Agent: Handles AI-powered interview interactions using Google Gemini
  • Feedback Agent: Provides performance analysis and coding feedback
  • TTS Service: Text-to-speech functionality for voice responses
  • WebSocket Manager: Real-time communication between client and server
  • Code Editor: Multi-language code editor with syntax highlighting

🧪 API Documentation

Main Endpoints

  • GET /problems - Retrieve coding problems
  • GET /problems/random - Get a random problem
  • POST /interview/start - Start a new interview session
  • POST /interview/submit - Submit code solution
  • WebSocket /ws/{client_id} - Real-time communication

WebSocket Events

  • interview_start - Begin interview session
  • code_update - Update code in real-time
  • voice_message - Send voice transcription
  • ai_response - Receive AI agent response

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Diolex: The Conversational AI Interview Simulator

The Problem: Traditional interview prep focuses on pattern recognition, not the crucial "meta-skills" of communication, strategic questioning, and hint extraction vital for real technical interviews.

Our Solution: Diolex is a voice-first AI-powered simulator designed to train these essential meta-skills. Our AI interviewer:

  • Watches code in real-time: Provides contextual feedback based on your approach.
  • Teaches strategic questioning: Withholds information, prompting you to ask clarifying questions.
  • Simulates authentic dynamics: Engages in follow-up questions, hint extraction, and edge-case discussions.
  • Provides detailed analysis: Offers specific feedback on communication and problem-solving.

How We Built It

Frontend:

  • React + TypeScript: For robust, type-safe components.
  • Tailwind CSS: For rapid, responsive styling.
  • CodeMirror 6: Provides a syntax-highlighted code editor.
  • Custom WebSocket Hooks & Speech Recognition API: Enables real-time, bidirectional communication and continuous voice input.
  • React Router: Manages seamless navigation.

Backend:

  • FastAPI: A high-performance asynchronous API.
  • WebSockets: For real-time voice and text communication.
  • Custom Interview Agent: A structured, stateful AI with authentic interviewer persona.
  • Kokoro TTS: For natural-sounding spoken feedback.
  • Piston API: Secure sandboxed code execution.
  • SQLAlchemy + PostgreSQL: For reliable data persistence.

AI & Voice Technology:

  • Finetuned Outputs & Context-Aware Responses: Ensures authentic, adaptive conversations based on code and history.
  • Multi-modal Interaction: Supports both voice and text.
  • Intelligent Hint Distribution: Provides strategic guidance without giving away answers.

Key Technical Challenges Overcome

  1. Real-time Voice + Code Synchronization: We built a sophisticated WebSocket message queue system with prioritization and conflict resolution to ensure seamless integration of speech recognition, code editing, and AI responses.
  2. Context-Aware AI Responses: Developed a dynamic context injection system that sends code snapshots with every message, allowing the AI to intelligently reference your live implementation.
  3. Authentic Interview Simulation: Achieved realistic AI behavior through extensive prompt engineering, multi-phase interview logic, information withholding strategies, and natural conversation flow patterns.
  4. Cross-browser Speech Recognition: Implemented robust fallback mechanisms, automatic restart logic, and graceful degradation to text-only mode to counter browser inconsistencies.
  5. Low-latency Voice Responses: Streamed TTS with chunk-based audio playback and WebSocket message prioritization to minimize delay for natural conversation flow.

What We Learned

Technical: Mastered WebSocket architecture, advanced speech API integration, AI prompt engineering for conversational AI, React performance optimization, and FastAPI async patterns.

Product: Understood the critical impact of authentic simulation, unique UX considerations for voice interfaces, and the importance of seamless transitions for users.

Startup: Validated our core hypothesis, discovered new use cases (e.g., explaining solutions), and recognized the scalability potential for different interview styles.

Future Vision

Diolex proves the power of AI to authentically simulate complex human interactions. Our vision is a comprehensive interview preparation platform that adapts to diverse company styles, skill levels, and formats, revolutionizing career readiness for developers.

About

Voice-first AI interview simulator syncing voice, code edits, and agent feedback in real time over WebSockets. Built with React, FastAPI, and Gemini.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages