DEV Community

Long Nguyen
Long Nguyen

Posted on

I built a free AI mock interview tool — here's the full build, in public

I'm a Vietnamese developer, and English isn't my first language. Prepping for technical interviews in English was the hardest part of my job search — I could answer in my head, but saying it out loud under pressure was the gap no amount of reading fixed.

Every practice tool I tried buried the actual practice behind sign-ups, paywalls, and setup screens. I just wanted to upload my CV and start talking. So I built AI Interviewer — free, no login, straight into a mock interview.

Then I decided to write down exactly how I built it, in public — the real decisions and real code behind a live app, not a toy repo.

The series so far

It's a Django build, part by part:

  1. Intro, tech stack & plan — why Python, why Django over FastAPI, why the OpenAI Agents SDK (and keeping it provider-agnostic)
  2. Database models — designing the interview data around what an interview actually is
  3. PDF resume parsing — pulling clean text out of PDFs with pdfplumber
  4. DOCX resume parsing — handling Word CVs, and the one table caveat most tutorials miss
  5. The OpenAI Agents SDK in a real app — structured Pydantic output, clean agent structure
  6. Generating interview questions — the agent flow: validate → structure → generate, and why treating the CV as untrusted data matters (prompt injection is real)

Voice input, upload security, and production-readiness are still coming.

The recurring theme

Most of it comes down to one idea: constrain the AI, don't trust it blindly. Structured output, code-orchestrated steps, validation at the boundaries. That's what turns a probabilistic model into something reliable enough to ship.

Full series here 👉 Build an AI Interview App in Django

If you'd rather start from the finished source instead of building it yourself, the whole thing is available as a starter kit — or just try the live app, it's free.

Happy to answer any questions about the build in the comments.

Top comments (0)