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:
- Intro, tech stack & plan — why Python, why Django over FastAPI, why the OpenAI Agents SDK (and keeping it provider-agnostic)
- Database models — designing the interview data around what an interview actually is
- PDF resume parsing — pulling clean text out of PDFs with pdfplumber
- DOCX resume parsing — handling Word CVs, and the one table caveat most tutorials miss
- The OpenAI Agents SDK in a real app — structured Pydantic output, clean agent structure
- 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)