InterviewIQ_AI_Interview_Agent: InterviewIQ: The AI Interviewer That Turns a Resume Into a Controlled Conversation

A deep look at how this repo combines structured prompt engineering, browser speech APIs, and credit-backed SaaS logic to simulate a realistic mock interview.

8 min read • View on GitHub • More from PrimeSiddhesh

A wide editorial scene shows a candidate at a desk facing a browser-based interviewer while a resume, stopwatch, scorecard, and speech wave all connect into a single machine. It explains that the product is not just chat, but a coordinated interview pipeline.
InterviewIQ feels less like a chatbot and more like a staged system where each step hands off to the next.
Key Takeaways

The browser interview that actually talks back

The first thing InterviewIQ gets right is the feeling. A question arrives in voice, the avatar animates, the microphone opens at the right moment, and the timer starts only when the conversation is ready to move. That makes the experience feel coordinated instead of improvised.

That matters because most AI interview tools stop at question generation. This repo goes further and tries to make the browser behave like a host, a listener, and a scoring engine at the same time.

An intelligent, AI-powered mock interview platform designed to help job seekers practice and improve their interview skills through realistic simulations, real-time feedback, and comprehensive performance analytics.

Siddhesh, Author/Maintainer · InterviewIQ - AI Interview Coach GitHub

The real product is synchronization

The core trick is orchestration. In the client, the interview flow chains speech synthesis, avatar playback, speech recognition, and timers through browser events and React state. The system only feels believable because each stage hands off cleanly to the next.

The interview works because independent browser events are forced into one reliable sequence.

A close-up of browser events passing hand to hand like a relay race, from speech synthesis to avatar playback to microphone activation and transcript capture. It explains how InterviewIQ keeps audio, video, and timing in sync.
The visible conversation depends on invisible handoffs between browser APIs and React state.

Resume PDF in, structured interview out

On the server side, the interesting move is not model choice. It is constraint. The repo uses pdfjs-dist to extract raw resume text, cleans it up, then pushes Gemini toward strict structured output so the interview generator can rely on predictable fields instead of guessing.

That matters because the next steps depend on shape, not just content. The app wants roles, skills, projects, and difficulty progression in a form the backend can trust, because the rest of the interview engine is built on those fields.

LayerWhat it doesWhy it matters
Resume parsingExtracts text from PDF and normalizes itCreates a stable input for the model
Prompt disciplineForces structured JSON or line-based outputKeeps downstream code simple
Question generationBuilds a difficulty ramp across the interviewMakes the session feel intentional
EvaluationScores answers from the response streamTurns conversation into measurable feedback

Why the credit model matters

InterviewIQ does not behave like a toy because it charges like a service. Credits are tied to validated AI usage, and payment verification uses HMAC SHA256 before balances are updated. That keeps the system honest when APIs fail or requests get interrupted.

The point is product discipline. If the model call breaks, the user should not lose value. If payment is spoofed, the backend should reject it. Those rules make the repo feel closer to a real SaaS than a polished demo.

CapabilityInterviewIQTypical interview demo
Resume inputPDF parsed into structured fieldsPlain text pasted into a prompt
Conversation modeVoice, avatar, mic, and timer are synchronizedQuestions appear in a chat box
Business logicCredits and verified payments gate usageFree or loosely tracked sessions
OutputScored feedback and downloadable reportingA conversation transcript or nothing
Operational feelWorkflow systemPrompt showcase

A feedback engine, not just a question generator

The repo keeps going after the last answer. Report generation turns interview data into charts and a downloadable PDF, which changes the product category. It is no longer just asking questions. It is packaging performance into something a user can revisit, compare, and share.

useEffect(() => {
  if (!isSpeaking && transcriptReady) {
    startMicrophone();
    startTimer();
  }
}, [isSpeaking, transcriptReady]);

That is the deeper pattern here. The model may generate the content, but the application owns the loop, the record, and the outcome.

How it compares to simpler interview tools

Compared with lightweight open-source interview apps, InterviewIQ is more complete. Compared with enterprise screening platforms, it is narrower and more self-contained. That middle position is the real story: it is ambitious enough to feel like software, but focused enough to be built by a solo maintainer.

DimensionInterviewIQSimple open-source demoEnterprise screening tool
Voice syncYesUsually noYes
Resume parsingYesSometimesYes
Vision analysisReported in researchRareOften proprietary
PaymentsCredit-backedNoSubscription or enterprise billing
ReportingPDF and analyticsMinimalRobust but closed
Self-hostableYesUsually yesUsually no

What this repo says about the next generation of mock tools

InterviewIQ points to a useful pattern for AI products. First, constrain the model until its output is machine-friendly. Second, synchronize the browser until the experience feels real. Third, attach billing and reporting so the workflow can survive beyond the demo stage.

That combination is why the repo stands out. It is not trying to impress with one clever prompt. It is trying to make a full interview loop behave deterministically enough to ship.