Skip to content

latikaray/interviewIQ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

InterviewIQπŸ€–βœ¨

InterviewIQ is a state-of-the-art, AI-powered mock interview preparation platform designed to help candidates build confidence, refine their communication skills, and ace real-world job interviews. By combining AI-driven resume parsing, customized question generation, interactive voice-synchronized avatars, and instant performance feedback, InterviewIQ.AI acts as a personal, 24/7 mock interviewer.


🌐 Live Demo

πŸ”— Live Website: https://interviewiq-client-tbtt.onrender.com/


πŸ“Έ Screenshots


🌟 Key Features

  • πŸ“„ AI Resume Analyzer: Upload your resume in PDF format. The backend extracts text using pdfjs-dist and leverages OpenAI's gpt-4o-mini (via OpenRouter) to identify your roles, experience level, core projects, and technical skills automatically.
  • βš™οΈ Customizable Interview Sessions: Set up tailored mock interviews. Choose your target role, experience, and mode (Technical or HR), or use the auto-extracted resume details.
  • 🎭 Real-Time Voice & Video Avatars:
    • Live animated female/male AI avatars (female-ai.mp4 / male-ai.mp4) that are synchronized with the Speech Synthesis.
    • Interactive speech options using the browser's Web Speech API (webkitSpeechRecognition for speech-to-text response tracking and speechSynthesis for natural voice pacing).
    • Time-limited questions categorized by a structured difficulty curve:
      • Question 1 & 2 β†’ Easy (60-second limit)
      • Question 3 & 4 β†’ Medium (90-second limit)
      • Question 5 β†’ Hard (120-second limit)
  • πŸ“Š Real-time AI Evaluation: Submissions are graded immediately on a scale of 0-10 across three vital categories:
    • Confidence: Focuses on clarity, speed, and presentation.
    • Communication: Evaluates simplicity and structure.
    • Correctness: Assesses relevance and accuracy.
    • Provides instant, constructive, 10–15 word professional feedback.
  • πŸ“ˆ Rich Analytics Dashboard: Get a breakdown of overall scores, skill evaluations, and performance trends using interactive charts (via Recharts and react-circular-progressbar).
  • πŸ—‚οΈ History Tracking: Track past interviews, analyze performance progression over time, and revisit previous reports.
  • πŸ“„ Professional PDF Reports: Download structured performance reports containing scores, advice, and detailed question-by-question breakdowns using jsPDF and jspdf-autotable.
  • πŸ’³ Built-In Subscription & Payments: Start with 100 free credits (50 credits consumed per interview). Recharge using the integrated Razorpay Payment Gateway (Starter Pack: β‚Ή100 for 150 credits; Pro Pack: β‚Ή500 for 650 credits).

πŸ› οΈ Tech Stack

Frontend

  • Framework: React 19 + Vite
  • State Management: Redux Toolkit (auth tracking & profile info)
  • Routing: React Router DOM (v7)
  • Styling: Tailwind CSS (v4)
  • Animations: Framer Motion (motion)
  • Visual Analytics: Recharts, React Circular Progressbar
  • PDF Generation: jsPDF, jsPDF AutoTable
  • Browser APIs: Web Speech API (SpeechSynthesis, webkitSpeechRecognition)

Backend

  • Runtime: Node.js
  • Framework: Express.js (v5)
  • Database: MongoDB (via Mongoose ODM)
  • Authentication: Firebase Google Authentication (Client SDK) + JWT Cookies (HTTP-only)
  • File Upload: Multer
  • PDF Parsing: PDFJS-Dist
  • Payment Processing: Razorpay Node SDK
  • AI Engine: OpenRouter API (openai/gpt-4o-mini)

πŸ“ Project Structure

interviewIQ/
β”œβ”€β”€ client/                     # Frontend Application (Vite + React)
β”‚   β”œβ”€β”€ public/                 # Static Assets
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ assets/             # Images, icons, and AI avatar videos
β”‚   β”‚   β”‚   └── videos/         # male-ai.mp4 & female-ai.mp4
β”‚   β”‚   β”œβ”€β”€ components/         # Reusable layouts and step managers
β”‚   β”‚   β”‚   β”œβ”€β”€ AuthModel.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Footer.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Step1SetUp.jsx  # Interview configuration & resume parsing
β”‚   β”‚   β”‚   β”œβ”€β”€ Step2Interview.jsx # Avatar rendering & Web Speech recognition
β”‚   β”‚   β”‚   β”œβ”€β”€ Step3Report.jsx # Analytics and PDF export options
β”‚   β”‚   β”‚   └── Timer.jsx       # Custom circular time tracker
β”‚   β”‚   β”œβ”€β”€ pages/              # Main routing views
β”‚   β”‚   β”‚   β”œβ”€β”€ Auth.jsx        # Login gateway using Google
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.jsx        # Dashboard & setup container
β”‚   β”‚   β”‚   β”œβ”€β”€ InterviewHistory.jsx # List of previous sessions
β”‚   β”‚   β”‚   β”œβ”€β”€ InterviewPage.jsx # Core test container
β”‚   β”‚   β”‚   β”œβ”€β”€ InterviewReport.jsx # Report viewer
β”‚   β”‚   β”‚   └── Pricing.jsx     # Subscription plan selector & payments
β”‚   β”‚   β”œβ”€β”€ redux/              # Redux slices and global store
β”‚   β”‚   β”œβ”€β”€ utils/              # Firebase client helper
β”‚   β”‚   β”œβ”€β”€ App.jsx             # Route mapping & user fetcher
β”‚   β”‚   β”œβ”€β”€ index.css           # Tailwind system configuration
β”‚   β”‚   └── main.jsx            # DOM bootstrapping
β”‚   β”œβ”€β”€ package.json
β”‚   └── vite.config.js
β”‚
└── server/                     # Backend API Service (Express)
    β”œβ”€β”€ config/                 # DB connectors & token signing rules
    β”œβ”€β”€ controllers/            # Controller layers
    β”‚   β”œβ”€β”€ auth.controller.js
    β”‚   β”œβ”€β”€ interview.controller.js
    β”‚   β”œβ”€β”€ payment.controller.js
    β”‚   └── user.controller.js
    β”œβ”€β”€ middlewares/            # Token validators and file upload configuration
    β”‚   β”œβ”€β”€ isAuth.js           # JWT cookie authenticator
    β”‚   └── multer.js           # Local resume storage configuration
    β”œβ”€β”€ models/                 # Mongoose schemas
    β”‚   β”œβ”€β”€ interview.model.js
    β”‚   β”œβ”€β”€ payment.model.js
    β”‚   └── user.model.js
    β”œβ”€β”€ routes/                 # Express route configurations
    β”œβ”€β”€ services/               # Integrations
    β”‚   β”œβ”€β”€ openRouter.service.js # AI prompts and API handler
    β”‚   └── razorpay.service.js   # Razorpay client instance builder
    β”œβ”€β”€ index.js                # Server entry point
    └── package.json

βš™οΈ Environment Variables

Before starting the applications, configure the environment files in both the client and server root directories.

1. Backend (/server/.env)

Create a file named .env in the server directory:

PORT=8000
MONGODB_URL=your_mongodb_connection_string
JWT_SECRET=your_jwt_signing_secret
OPENROUTER_API_KEY=your_openrouter_api_key
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secret

2. Frontend (/client/.env)

Create a file named .env in the client directory:

VITE_FIREBASE_APIKEY=your_firebase_api_key
VITE_RAZORPAY_KEY_ID=your_razorpay_key_id

πŸš€ Installation & Setup

Follow these steps to run the application locally.

Prerequisites

  • Node.js (v18 or higher recommended)
  • MongoDB instance (Atlas or local compass setup)

Step 1: Clone the Repository

git clone https://github.com/your-username/interviewIQ.git
cd interviewIQ

Step 2: Configure & Start Backend Server

  1. Navigate to the server folder:
    cd server
  2. Install dependencies:
    npm install
  3. Set up the .env file as described in the Environment Variables section.
  4. Run the server in development mode:
    npm run dev
    The server will run on http://localhost:8000 (or your configured port).

Step 3: Configure & Start Frontend Client

  1. Navigate to the client folder:
    cd ../client
  2. Install dependencies:
    npm install
  3. Set up the .env file as described in the Environment Variables section.
  4. Run the frontend in development mode:
    npm run dev
    The app will run on http://localhost:5173.

πŸ”„ User Journey & Core Flow

graph TD
    A[Sign in with Google OAuth] --> B[Dashboard / Home]
    B --> C[Configure Interview Settings]
    C -->|Optional| D[Upload Resume PDF]
    D -->|AI Extracts Profile| E[Generate Questions]
    C -->|Manual Inputs| E
    E --> F[Start Interactive Session]
    F --> G[Avatar Speaks Question]
    G --> H[Candidate Speaks/Types Response]
    H -->|Submit Answer| I[Real-time AI Feedback]
    I --> J{Next Question?}
    J -->|Yes| G
    J -->|No| K[Finish Session]
    K --> L[Generate Analytics Report]
    L --> M[Export Performance PDF]
Loading

πŸ“‘ API Reference

πŸ” Authentication (/api/auth)

  • POST /google - Processes Google authentication details sent from the frontend client and returns user details. Sets an HTTP-only token cookie.
  • GET /logout - Clears the authentication token cookie.

πŸ‘€ User Information (/api/user)

  • GET /current-user - Fetches profile details and remaining credits for the currently authenticated user.

πŸŽ™οΈ Interview Operations (/api/interview)

  • POST /resume - Uploads a PDF resume, parses it, and uses GPT-4o-mini to extract skills, experience, and projects.
  • POST /generate-questions - Generates 5 tailored questions based on configuration, deducting 50 credits from the user's account.
  • POST /submit-answer - Submits a candidate's answer for evaluation. Triggers AI feedback scoring.
  • POST /finish - Computes the aggregate scores (confidence, communication, correctness) and marks the session completed.
  • GET /get-interview - Lists the historical record of interviews for the authenticated user.
  • GET /report/:id - Fetches details and breakdowns of a completed interview.

πŸ’³ Payment Integration (/api/payment)

  • POST /order - Creates a new payment order using the Razorpay SDK.
  • POST /verify - Validates the webhook/callback signature from Razorpay. Increments user credits on success.


❀️ Built with love, powered by coffee β˜•, and held together by a very long YouTube tutorial πŸ“Ί

β€” Latika Manoj Ray

About

InterviewIQ is a MERN-stack, AI-powered mock interview platform that delivers personalized interview practice through resume-based questions, voice interaction, and instant feedback. πŸš€πŸ€–

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages