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.
- InterviewIQ works because it treats an AI interview like a controlled pipeline, not a freeform chat.
- The strongest technical move is synchronization, where speech, mic capture, timing, and scoring all hand off cleanly.
- The backend turns messy inputs like resume PDFs into strict structured data so the rest of the system can stay deterministic.
- Its credit and report flows make the repo feel like a product with real operating logic, not a demo glued together with prompts.
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.
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.
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.
| Layer | What it does | Why it matters |
|---|---|---|
| Resume parsing | Extracts text from PDF and normalizes it | Creates a stable input for the model |
| Prompt discipline | Forces structured JSON or line-based output | Keeps downstream code simple |
| Question generation | Builds a difficulty ramp across the interview | Makes the session feel intentional |
| Evaluation | Scores answers from the response stream | Turns 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.
| Capability | InterviewIQ | Typical interview demo |
|---|---|---|
| Resume input | PDF parsed into structured fields | Plain text pasted into a prompt |
| Conversation mode | Voice, avatar, mic, and timer are synchronized | Questions appear in a chat box |
| Business logic | Credits and verified payments gate usage | Free or loosely tracked sessions |
| Output | Scored feedback and downloadable reporting | A conversation transcript or nothing |
| Operational feel | Workflow system | Prompt 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.
| Dimension | InterviewIQ | Simple open-source demo | Enterprise screening tool |
|---|---|---|---|
| Voice sync | Yes | Usually no | Yes |
| Resume parsing | Yes | Sometimes | Yes |
| Vision analysis | Reported in research | Rare | Often proprietary |
| Payments | Credit-backed | No | Subscription or enterprise billing |
| Reporting | PDF and analytics | Minimal | Robust but closed |
| Self-hostable | Yes | Usually yes | Usually 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.