DEV Community

Ravi Verma
Ravi Verma

Posted on

I Built an AI Mock Interview Coach That Doesn't Fake Praise (Next.js + NVIDIA NIM)

Most AI interview prep tools are polite. They tell you "great answer!" and move on — which means you walk into the real interview with a false sense of confidence.

I built the opposite.

InterviewIQ is an AI mock interview coach that scores you like a strict hiring manager. No fake praise. If your answer is vague, it says so. If you'd get a "No Hire" in real life, it tells you — and tells you exactly why.

Live demo: https://interviewiq-hazel.vercel.app
Repo: https://github.com/ravikumarve/interviewiq

What it does

You pick a role (Frontend, Backend, Data Science, PM, DevOps, AI/ML — or type any custom role), optionally paste a real job description, and answer 5 questions from a live AI interviewer with a 90-second timer.

Then you get a dossier-style report:

  • Score out of 100 and a hiring verdict: Hire / Lean Hire / Lean No Hire / No Hire
  • Strengths and weaknesses — specific, not generic
  • A targeted practice plan for your weakest skill
  • Peer benchmarking — "You beat 66% of Frontend candidates" with a live leaderboard

Why the "strict evaluator" matters

This is the differentiator. I tested it: answer "Yes, I know React" to a React question, and the evaluator scores you below 30 with a No Hire verdict. Answer with a detailed, example-backed story, and you get 85+ with a Hire.

The evaluation prompt is deliberately aggressive:

const EVALUATOR_SYSTEM = (role, jd) =>
  `You are a strict hiring manager for "${role}". Evaluate the candidate's answers. ` +
  `Penalize one-word/vague answers HARD: if most answers are under 20 words, score MUST be below 30. ` +
  `Never pass (>50) without concrete technical knowledge. Do not invent strengths.`;
Enter fullscreen mode Exit fullscreen mode

Most AI wrappers optimize for "user feels good." I optimized for "user is ready for the real thing."

Adaptive follow-ups

If you give a thin answer (under 14 words), the interviewer doesn't just move on. It fires a follow-up probe — "Can you give a concrete example?" — up to twice per question, without consuming your question count.

Verified in a real flow: a 10-word vague answer triggered "Can you give an example of a React component…", and the counter stayed at "Question 2 of 5."

JD targeting

Paste a real job posting and every question adapts to its exact stack, tools, and responsibilities. The evaluator scores you against those requirements and calls out missed core skills.

Verified: pasted a "Senior React Engineer — Redux/GraphQL/WCAG" JD → Q1 was React-specific, Q3 was accessibility-specific, and the final evaluation penalized a candidate who never touched GraphQL or WCAG.

Tech stack

  • Next.js 16 (App Router, TypeScript, Tailwind CSS)
  • NVIDIA NIM APImeta/llama-3.1-8b-instruct, ~450ms responses
  • Ollama fallback — local CPU inference if the API key is missing (perfect for demos)
  • jsonblob — zero-signup shared store for the leaderboard (swap-in ready for Upstash Redis)
  • Vercel — one-command deploy

What I learned building it in 8 hours

  1. Strict prompts beat big models. llama-3.1-8b with a hard "never pass without substance" prompt outperformed a larger model with a soft one. Evaluation quality is prompt engineering, not model size.
  2. JSON extraction needs a fallback. Models wrap JSON in prose sometimes. I built an extractJson() that does balanced-brace recovery — it saved the eval flow twice during testing.
  3. A local fallback is a superpower. When the NVIDIA key rate-limits, Ollama on my laptop keeps the demo alive. Users see "evaluating…" instead of an error page.
  4. The viral loop is the differentiator. The peer percentile + share button ("I beat 66% of Frontend candidates") is what makes users share the report. Building that in early matters more than polish.

Try it

The live demo takes about 8 minutes for a full interview. Paste a real job description you're targeting and see how specific it gets.

Built solo in 8 hours for Hack Devengers 1.0. Questions, feedback, and ruthless criticism welcome — I built an app that doesn't fake praise, so I can take it. 😄

Top comments (1)

Collapse
 
pagerroast profile image
pagerroast

"No fake praise" is a legitimately good wedge — every interview tool has the politeness problem and nobody's named it this cleanly.

Three things on the landing page:

  1. "STRICT EVALUATION PROTOCOL" as your hero eyebrow is jargon working against the honesty of the pitch. "Get told the truth" is already the best line on the page — give it the top spot.
  2. The stat row shows "0 generic feedback" — a zero displayed prominently reads like a broken counter on first glance, even though the meaning is positive. Rephrase to "0% fake praise" or drop it.
  3. "No sign-up" is a real differentiator and it's buried. Move it into the CTA itself: "Start Mock Interview → — no sign-up needed".

I do landing page teardowns for a living (kimmy.inkboxwire.com/roasts has 550+ free one-line examples from this week's launches if you want the pattern). The product is solid — the page just needs to sound as honest as the coach.