InterviewIQ: The Mock Interview App That Makes a Browser Feel Like a Human Interviewer

A React, Node, and MongoDB stack that turns resumes into structured interviews, simulates a talking interviewer with native browser APIs, and packages the result as a scored PDF report.

8 to 10 min read • View on GitHub • More from sanjeev-yd

A candidate sits at a desk facing a laptop with a talking-head interviewer on screen. Behind the screen, a visible trail of waveform marks, pauses, and speech bubbles suggests the system is choreographing timing and voice to create the feeling of a live conversation. A resume page feeds into the scene like input to a machine.
InterviewIQ’s trick is not a heavyweight avatar engine. It is the careful orchestration of browser speech, static video, and controlled pacing.
Key Takeaways

The most interesting thing about InterviewIQ is not that it uses AI. It is that it makes a browser behave like a patient interviewer using cheap, familiar pieces: speech synthesis, speech recognition, static video, and tight prompt control. The result feels alive because the timing is engineered, not because the stack is flashy.

That matters because the repository is not a toy demo. It is a full loop: upload a resume, generate a structured interview, record answers, score performance, and hand back a PDF report. The whole product is built to make the session feel useful after the conversation ends.

The browser thinks it is interviewing you

InterviewIQ’s first trick is perceptual. The frontend uses browser-native speech APIs to make the interviewer speak, pause, listen, and resume in a way that reads as conversational. The avatar is not a real-time generated face. It is a controlled playback layer synchronized with the spoken prompt.

That choice keeps the experience lightweight. Instead of expensive avatar infrastructure, the app leans on timing, pacing, and a few well-placed media primitives to sell presence. In product terms, it is an illusion budgeted with discipline.

The interview loop is easier to understand as a state machine than as a pile of endpoints.

From PDF resume to five questions

The backend pipeline starts with a resume upload. The server extracts text from the PDF, normalizes it through an LLM, and forces the result into a compact schema with role, experience, and skills. That structured blob then drives question generation.

The important constraint is not just that questions are generated. It is that they are generated predictably. The controller aims for exactly five questions with a progression from easy to hard, plus time limits that shape pacing. That makes the interview feel deliberate instead of chatty.

{
  "role": "Frontend Developer",
  "experience": "3 years",
  "skills": ["React", "TypeScript", "API integration"]
}

That JSON-style normalization is the real boundary in the system. The resume is messy, but the interview logic is not. Once the backend has a clean role profile, the rest of the experience can be deterministic enough to stay fast and coherent.

A dense resume page enters a funnel in the center of the image and exits as a numbered question list and a polished feedback report. The left side is crowded with text, the middle narrows into a parsing gate, and the right side opens into a score sheet with charts and advice blocks.
InterviewIQ’s second big move is conversion. It turns unstructured input into structured output the user can keep.

The interview engine is a state machine with a voice

The frontend heart of the app is the interview step component, which has to keep audio, video, transcript capture, and question state aligned. It does not just show a question and wait. It manages a loop: speak, listen, accumulate, score, advance.

That means the browser becomes the source of truth for pacing. Speech synthesis events trigger the avatar playback, speech recognition fills the answer buffer, and the component moves forward only when the current step is complete. The user experiences one continuous interviewer, but the code is really a chain of discrete transitions.

This is where the product feels smarter than its parts. Human-like pacing comes from small hacks, like adding pauses inside the generated speech and selecting a voice that matches the persona. None of that is novel alone. Together, it is enough.

Why the report matters more than the chatbot

Most interview tools stop at conversation. InterviewIQ keeps going. The dashboard and PDF report turn a live practice session into a durable artifact, with question-wise scores, visual analytics, and written guidance that makes the session feel finished.

That is a product decision, not just a feature. A report gives the user something to compare over time, something to share, and something to pay for. It also shifts the app away from ephemeral chat and toward a measurable workflow.

DimensionInterview chat onlyInterviewIQ
Primary outputTransient conversationScored PDF report plus dashboard
User memoryWhat the user remembersStructured scores and advice
Product valuePractice in the momentPractice plus artifact
Retention hookLowHigher, because results are saved and reviewable

The report layer is also where the app starts to look like software, not just a prompt wrapper. Analytics, charts, and recommendation text turn the session into a repeatable product experience.

This is also a monetization stack

The repository is wired like a business. Credits gate usage, Razorpay handles payments, Firebase manages sign-in, and JWT sessions keep the backend controlled. That combination signals a SaaS foundation, not a hackathon demo.

It is a useful reminder that open source AI apps are often really product templates. The code does not only solve the interview problem. It also sketches the commercial shape of the company that could ship it.

LayerWhat it doesWhy it matters
Firebase authInitial user loginReduces onboarding friction
JWT sessionServer-side identityKeeps the app stateful and controllable
CreditsUsage gatingCreates a direct monetization lever
RazorpayPaymentsMakes paid usage practical
MongoDBPersistenceStores users, interviews, and payments

Where InterviewIQ sits in the market

InterviewIQ is not trying to be a stealth live copilot like Final Round AI or Verve Copilot. Those products optimize for in-the-moment assistance during a real interview. InterviewIQ optimizes for guided practice, structured feedback, and a controllable mock session.

That puts it closer to a prep platform with a stronger product loop. It is open enough to customize, opinionated enough to feel cohesive, and practical enough to support a business model. The category is not live cheating. It is simulation with receipts.

CategoryPrimary use caseInterview formatInput typeOutput typeBrowser-native audio/video tricksBest fit
InterviewIQMock interviews and feedbackGuided practice sessionResume PDFScores, analytics, PDF reportYes, central to the productBuilders and job seekers who want a customizable prep loop
Final Round AI / Verve CopilotLive interview assistanceReal-time copilotLive interview contextHints and promptsLess central, more assistance-orientedUsers who want stealth support during interviews
Classic prep platformsQuestion bank practiceStatic or semi-guidedSelected topics or templatesPractice history or scoresUsually noLearners who want repetition over simulation

The distinction matters. InterviewIQ is a controllable mock-interview engine, not a live copilot. That makes it easier to reason about ethically, and easier to productize for users who want to practice instead of cheat.