AI

DRCODE Interview: the code-execution layer behind a real-time AI interviewer

An AI interview platform that talks to candidates in real time and runs a live DSA coding round. I built the code-execution layer and the code editor — here's how that part works.

Mokshit Jain · · 6 min read

DRCODE Interview is an AI interview platform. It asks a candidate questions based on their resume or a job description, listens and responds in real time, and for engineering roles it runs a live coding round. Several people built it; the parts I owned were the code-execution layer and the code editor, so I’ll focus there and give context around the rest.

How the interview works

The real-time voice interview runs on OpenAI’s Realtime API over WebRTC — the candidate speaks, the model responds, with live transcription and follow-up questions. Question generation and custom job descriptions are handled offline by Gemini, ahead of the interview. (Worth being precise about this, because it’s easy to blur: the live conversation is OpenAI Realtime; Gemini prepares the questions.)

The part I built: the coding round

For a DSA software-engineer role, the interview switches into a coding round. That’s the piece I wired up:

  • The code editor. I integrated Monaco with multi-language support and per-language code persistence, so a candidate can switch between Python, JavaScript, C++, and Java without losing work.
  • The execution layer. Candidate code runs against sample and hidden test cases, and I built this on Judge0 — base64-encoded submissions, polling for the result, and scoring by how many test cases pass. The platform can also run on Daytona sandboxes as an alternative provider, switchable by config.
// Each language carries its Judge0 language id; a submission is
// just source + stdin + expected, scored on the returned status.
const submission = {
  source_code: b64(code),
  language_id: lang.judge0Id,
  stdin: b64(input),
};
const result = await judge0.submit(submission, { wait: true });
const passed = result.status.id === 3; // "Accepted"

I did the initial framework and wiring for this; later iterations were picked up by other developers.

Around it

The wider platform is a Next.js app on MongoDB with a lot of surface — credit-based access with Razorpay top-ups, resume analysis, GitHub/LeetCode stats, and PDF interview summaries — deployed on GCP Cloud Run through GitHub Actions. My slice was making sure that when a candidate hits “Run”, their code executes safely and gets scored correctly, which is the moment the whole coding round lives or dies on.

What I took away

Working on one well-defined layer of a big product taught me to make my seam solid and predictable — clean language handling, reliable execution, honest scoring — so the people building on top of it didn’t have to think about it. That’s a different skill from owning a whole product, and a useful one.

Share
Written by
Mokshit Jain

AI engineer & full-stack developer building LLM products, automation, and RAG pipelines.

Continue reading