MockMate: Your AI-Powered Interview Partner 🤖

Overview

MockMate is a cutting-edge, full-stack application designed to provide realistic and comprehensive preparation for technical job interviews. By leveraging advanced AI and a robust database, MockMate helps users master technical terminology, core concepts, and industry-standard practices relevant to specified roles (e.g., Software Engineering, Data Science).

The application is built around the following core technologies: Gemini (Generative AI), ElevenLabs (Voice AI), and Firebase (Backend).


Key Features

  • Role-Specific Question Generation: Utilizes Gemini to dynamically generate a stream of interview questions tailored to the user’s specified job role and required difficulty level.
  • AI Interviewer (Text-to-Speech): Integration with ElevenLabs provides a realistic, spoken voice for the AI interviewer, offering a crucial element of simulating a live interview scenario.
  • Response Evaluation & Feedback: Gemini analyzes user text responses, providing immediate, objective feedback, grading, and actionable suggestions focused on improving technical terminology, conceptual accuracy, and completeness.
  • Progress Tracking: Secure storage via Firebase allows users to save interview sessions, track performance over time, and easily identify and revisit weak technical areas and concepts.
  • Secure & Scalable Backend: User data, interview content, and progress are managed securely using the Firebase platform (Database, Authentication, and Storage).
  • Modern UI Design: Built with Tailwind CSS to provide a clean, responsive, and customizable user interface that enhances usability and accessibility.

Tech Stack & Setup

This project requires a complete setup of three distinct third-party services. No components are currently integrated or configured and must be set up properly from scratch.

1. Backend & Database (Firebase)

Firebase serves as the backend, handling the database, authentication, and storage.

  1. Project Initialization: Create a new project in your Firebase dashboard.
  2. Schema Configuration: Set up the necessary tables (e.g., users, roles, questions, sessions, feedback).
  3. Auth Setup: Configure secure authentication methods.
  4. Environment Variables: Securely store the following in your project's environment configuration:
    • FIREBASE_URL
    • FIREBASE_ANON_KEY

2. Generative AI (Gemini)

Gemini is the core interview engine, handling question generation and evaluation logic.

  1. API Key Acquisition: Obtain a Gemini API key.
  2. Integration: Set up the client connection within your application's backend.
  3. Environment Variable: Securely store the API key:
    • GEMINI_API_KEY
  4. Prompt Engineering Focus: System prompts must be engineered to strictly output and evaluate responses based on actual technical terminologies, concepts, and interview-related context.

3. Voice AI (ElevenLabs)

ElevenLabs provides the Text-to-Speech (TTS) capabilities for the AI interviewer's spoken prompts.

  1. API Key Acquisition: Obtain an API key from ElevenLabs.
  2. Integration: Implement the SDK or API calls to convert the text output from Gemini into audio streams for the user interface.
  3. Environment Variable: Securely store the API key:
    • ELEVENLABS_API_KEY

Current Limitations & Ongoing Improvements

While MockMate provides a strong foundation for AI-powered interview preparation, there are a few areas that remain under active development:

  • Heavy Dependency on APIs & Packages: The application relies extensively on third-party services (Gemini, ElevenLabs, Firebase) and supporting libraries. This introduces some external dependency risks (e.g., rate limits, downtime, or API cost considerations) and makes the system less self-contained.
  • Performance & Optimization: Due to time constraints during the initial build, several parts of the codebase are not fully optimized. Current implementations prioritize functionality over efficiency, which may affect scalability and performance under high user load.
  • Work in Progress (WIP): Continuous refactoring and optimization efforts are planned to streamline code structure, reduce redundancy, and improve maintainability.

Despite these limitations, the project is designed with scalability and extensibility in mind, and we are actively working to refine its architecture and performance in future iterations.


Contribution

We welcome contributions! Please refer to the guidelines below for submitting changes:

  1. Fork this repository.
  2. Create a new, descriptive branch for your feature or fix.
  3. Commit changes with clear, concise messages.
  4. Push the branch to your fork.
  5. Open a Pull Request to the main branch of the original repository.

Built With

Share this project:

Updates