Skip to content

Interview Buddy is an AI-powered platform that simulates job interviews using Google Gemini AI, Deepgram speech recognition, and Murf voice synthesis. It generates personalized questions from uploaded resumes, provides real-time transcription, and delivers performance analytics to help users improve their interview skills.

Notifications You must be signed in to change notification settings

meetbatra/interview-buddy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 Interview Buddy - AI-Powered Interview Assistant

A comprehensive, AI-driven interview preparation platform that simulates real interview experiences with intelligent conversation flow, professional speech processing, and detailed performance analytics.

Interview Buddy Node.js React MongoDB

🌟 Key Features

πŸ€– AI-Powered Interview Engine

  • Dynamic Question Generation: Context-aware questions using Google's Gemini AI
  • Intelligent Follow-ups: Questions adapt based on your responses and resume
  • 10-Question Interview: Structured interview flow with professional pacing
  • Resume Analysis: AI analyzes your uploaded resume to generate relevant questions

🎀 Professional Audio Processing

  • Advanced Speech-to-Text: Deepgram Nova-3 for enterprise-grade transcription
  • High-Quality AI Voice: Murf TTS for natural, professional interviewer voice
  • Real-time Audio Capture: MediaRecorder API for seamless voice interaction
  • Smart Audio Controls: Mic disabled during AI processing for optimal experience

⏱️ Smart Session Management

  • 5-Minute Timer: Color-coded countdown with automatic submission
  • Session Persistence: Resume interrupted interviews
  • Auto-save Progress: Conversation history saved in real-time
  • Completion Tracking: Mark sessions as completed with timestamps

πŸ“Š Comprehensive Analytics & Dashboard

  • Performance Scores: Technical, Communication, and Confidence ratings (0-10)
  • Detailed Feedback: AI-generated strengths and weaknesses analysis
  • Dashboard Overview: Performance metrics and analytics across all sessions
  • Interview History: Paginated view of all past interviews with scores
  • Progress Tracking: Historical performance visualization and improvement trends
  • Session Reports: Complete transcript and detailed analysis for each interview

πŸ” Secure Authentication

  • Multiple Login Options: Email/password and Google OAuth
  • JWT Authentication: Secure session management
  • User Profiles: Personalized experience with saved data
  • Protected Routes: Secure access to interview features

🎨 Modern UI/UX

  • Terminal-Themed Design: Unique, developer-friendly interface
  • Responsive Layout: Works perfectly on desktop and mobile
  • Real-time Feedback: Loading states, animations, and visual cues
  • Accessible Design: WCAG-compliant interface elements

πŸ› οΈ Technology Stack

Backend

  • Runtime: Node.js with Express.js framework
  • Database: MongoDB with Mongoose ODM
  • Authentication: JWT tokens with bcrypt encryption
  • File Processing: Multer for resume uploads, PDF parsing
  • AI Integration: Google Gemini AI, Deepgram, Murf APIs

Frontend

  • Framework: React 18 with Vite build tool
  • Styling: Tailwind CSS with custom components
  • State Management: Zustand for global state
  • Routing: React Router for navigation
  • Audio: MediaRecorder API for voice capture
  • UI Components: Custom terminal-themed component library

AI Services

  • 🧠 Google Gemini: Dynamic question generation and analysis
  • 🎀 Deepgram Nova-3: Professional speech-to-text transcription
  • πŸ—£οΈ Murf TTS: High-quality text-to-speech synthesis

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ and npm
  • MongoDB database
  • API keys for Gemini, Deepgram, and Murf

1. Clone the Repository

git clone https://github.com/meetbatra/interview-buddy.git
cd interview-buddy

2. Backend Setup

cd backend
npm install

# Create .env file
touch .env

Configure your .env file:

PORT=8080
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
GEMINI_API_KEY=your_google_gemini_api_key
DEEPGRAM_API_KEY=your_deepgram_api_key
MURF_API_KEY=your_murf_api_key
GOOGLE_CLIENT_ID=your_google_oauth_client_id
# Start backend server
npm run dev

3. Frontend Setup

cd ../frontend
npm install

# Create .env file
touch .env

Configure your frontend .env file:

VITE_API_URL=http://localhost:8080/api
VITE_GOOGLE_CLIENT_ID=your_google_oauth_client_id
# Start frontend development server
npm run dev

4. Access the Application

πŸ“– How to Use

1. Create Account

  • Sign up with email/password or Google OAuth
  • Secure authentication with JWT tokens

2. Upload Resume

  • Drag & drop or click to upload PDF resume
  • AI analyzes your background for personalized questions

3. Provide Bio

  • Enter a brief bio about yourself
  • Helps AI understand your career goals and experience

4. Start Interview

  • 5-minute timed interview session
  • Speak naturally - AI transcribes your responses
  • Answer 10 contextual questions based on your background

5. Review Results

  • Get detailed performance analysis
  • View scores for technical skills, communication, and confidence
  • Read AI-generated feedback on strengths and areas for improvement
  • Access complete conversation transcript

6. Track Progress

  • View dashboard with performance analytics
  • Browse interview history with pagination
  • Monitor improvement trends over time
  • Compare scores across multiple sessions

πŸ—οΈ Project Structure

interview-buddy/
β”œβ”€β”€ backend/                 # Node.js backend application
β”‚   β”œβ”€β”€ controllers/         # Route handlers and business logic
β”‚   β”‚   β”œβ”€β”€ auth.js         # Authentication (signup, login, Google OAuth)
β”‚   β”‚   β”œβ”€β”€ dashboard.js    # Dashboard analytics and interview history
β”‚   β”‚   └── interview.js    # Interview management and processing
β”‚   β”œβ”€β”€ models/             # MongoDB schemas and models
β”‚   β”‚   β”œβ”€β”€ user.js         # User model with authentication fields
β”‚   β”‚   └── interviewSession.js # Interview session with conversation history
β”‚   β”œβ”€β”€ routes/             # API route definitions
β”‚   β”‚   β”œβ”€β”€ auth.js         # Authentication routes
β”‚   β”‚   β”œβ”€β”€ dashboard.js    # Dashboard and analytics routes
β”‚   β”‚   └── interview.js    # Interview management routes
β”‚   β”œβ”€β”€ services/           # External API integrations
β”‚   β”‚   β”œβ”€β”€ geminiService.js    # Google Gemini AI integration
β”‚   β”‚   β”œβ”€β”€ speechToTextService.js # Deepgram speech-to-text
β”‚   β”‚   β”œβ”€β”€ murffService.js     # Murf text-to-speech
β”‚   β”‚   └── pdfService.js       # PDF resume parsing
β”‚   β”œβ”€β”€ middleware/         # Authentication and validation middleware
β”‚   β”œβ”€β”€ config/            # Database and app configuration
β”‚   β”œβ”€β”€ utils/             # Utility functions (JWT, etc.)
β”‚   └── uploads/           # Temporary file storage (resumes, audio)
β”œβ”€β”€ frontend/               # React frontend application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/    # Reusable UI components
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/      # Authentication components
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/ # Dashboard and analytics components
β”‚   β”‚   β”‚   β”œβ”€β”€ home/      # Home page components
β”‚   β”‚   β”‚   β”œβ”€β”€ interview/ # Interview session components
β”‚   β”‚   β”‚   β”œβ”€β”€ report/    # Report and results components
β”‚   β”‚   β”‚   β”œβ”€β”€ shared/    # Shared UI components
β”‚   β”‚   β”‚   └── ui/        # Base UI components (buttons, inputs, etc.)
β”‚   β”‚   β”œβ”€β”€ pages/         # Main application pages
β”‚   β”‚   β”‚   β”œβ”€β”€ HomePage.jsx       # Landing page with resume upload
β”‚   β”‚   β”‚   β”œβ”€β”€ LoginPage.jsx      # User authentication
β”‚   β”‚   β”‚   β”œβ”€β”€ SignupPage.jsx     # User registration
β”‚   β”‚   β”‚   β”œβ”€β”€ DashboardPage.jsx  # Analytics dashboard
β”‚   β”‚   β”‚   β”œβ”€β”€ InterviewPage.jsx  # Interview session
β”‚   β”‚   β”‚   └── ReportPage.jsx     # Interview results
β”‚   β”‚   β”œβ”€β”€ hooks/         # Custom React hooks
β”‚   β”‚   β”‚   └── useInterviewLogic.js # Interview session management
β”‚   β”‚   β”œβ”€β”€ stores/        # Zustand state management
β”‚   β”‚   β”‚   β”œβ”€β”€ authStore.js       # Authentication state
β”‚   β”‚   β”‚   └── interviewStore.js  # Interview session state
β”‚   β”‚   β”œβ”€β”€ api/          # API service functions
β”‚   β”‚   β”‚   β”œβ”€β”€ userApi.js         # Authentication API calls
β”‚   β”‚   β”‚   β”œβ”€β”€ interviewApi.js    # Interview management API
β”‚   β”‚   β”‚   └── dashboardApi.js    # Dashboard and analytics API
β”‚   β”‚   └── assets/       # Static assets and images
β”‚   └── public/           # Public static files
└── README.md             # Project documentation

πŸ”§ API Endpoints

Authentication (/api/auth)

  • POST /api/auth/signup - User registration with username, email, password
  • POST /api/auth/login - User login with email/password
  • POST /api/auth/google - Google OAuth authentication

Interview Management (/api/interview)

  • POST /api/interview/start - Start new interview session (with resume upload)
  • POST /api/interview/:sessionId/transcribe - Transcribe audio response to text
  • POST /api/interview/:sessionId/next - Get next question based on previous answer
  • POST /api/interview/:sessionId/end - End interview and get final completion message
  • GET /api/interview/:sessionId/report - Get detailed interview performance report

Dashboard & Analytics (/api/dashboard)

  • GET /api/dashboard/overview - Get dashboard analytics and performance metrics
  • GET /api/dashboard/history - Get paginated interview history with scores

🎯 Key Features in Detail

Intelligent Question Flow

The AI interviewer generates questions that:

  • Build upon your previous answers
  • Explore different aspects of your experience
  • Progress from general to specific topics
  • Adapt difficulty based on your responses

Professional Audio Experience

  • Crystal Clear Transcription: Deepgram's Nova-3 model ensures accurate speech recognition
  • Natural AI Voice: Murf's premium TTS creates a realistic interviewer experience
  • Optimized Audio Flow: Smart mic management prevents feedback and ensures smooth conversation

Multi-Dimensional Performance Analysis

Your interview is evaluated across multiple dimensions:

  • Technical Skills: Knowledge depth and problem-solving approach
  • Communication: Clarity, structure, and articulation
  • Confidence: Delivery, poise, and presence
  • Overall Performance: Comprehensive scoring with detailed feedback

Smart Session Management

  • Sessions auto-save progress every response
  • Resume interrupted interviews seamlessly
  • Timer management with visual countdown
  • Automatic submission prevents incomplete sessions
  • Dashboard analytics for progress tracking
  • Historical performance comparison

πŸ”’ Security Features

  • JWT Authentication: Secure token-based authentication
  • Password Encryption: Bcrypt hashing for user passwords
  • Input Validation: Comprehensive request validation
  • File Upload Security: Type and size validation for resumes
  • Rate Limiting: API protection against abuse
  • CORS Configuration: Secure cross-origin requests

Environment Variables for Production

  • MONGODB_URI - MongoDB connection string
  • JWT_SECRET - JWT signing secret
  • GEMINI_API_KEY - Google Gemini AI API key
  • DEEPGRAM_API_KEY - Deepgram speech-to-text API key
  • MURF_API_KEY - Murf text-to-speech API key
  • GOOGLE_CLIENT_ID - Google OAuth client ID
  • PORT - Server port (default: 8080)
  • VITE_API_URL - Backend API URL for frontend
  • VITE_GOOGLE_CLIENT_ID - Google OAuth client ID for frontend

🀝 Contributing

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

πŸ“ž Support

For support, questions, or feature requests:

πŸ† Acknowledgments

  • Google Gemini AI for intelligent conversation generation
  • Deepgram for professional speech-to-text processing
  • Murf for high-quality text-to-speech synthesis
  • MongoDB for robust data storage
  • React & Node.js communities for excellent frameworks

Built with ❀️ by Meet Batra

Interview Buddy - Your AI-powered career companion πŸš€

About

Interview Buddy is an AI-powered platform that simulates job interviews using Google Gemini AI, Deepgram speech recognition, and Murf voice synthesis. It generates personalized questions from uploaded resumes, provides real-time transcription, and delivers performance analytics to help users improve their interview skills.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published