DEV Community

Abdul Wasih
Abdul Wasih

Posted on AI-assisted

Viva: a mock interview that knows which parts of your project an AI wrote

What I Built

If you have sat in a placement interview, you know the moment.

The interviewer stops scrolling through your repo, points at one file, and says: "Walk me through this function."

You know what the function does. You typed the prompt that produced it. You did not write it.

That happened to a friend of mine, with a project the two of us built at a hackathon. It works. It is on his resume. He could tell you what every screen does. He could not tell you why the code is the way it is, because an AI agent wrote a lot of it and we shipped before we understood it.

Every fresher I know is a little scared of that question. So I built Viva: a mock interview about your own project, that knows which parts an AI wrote.

You give it a repo. It reads the code, finds the files your coding agent wrote, and then interviews you the way a panel would. When it reaches the AI-written part, it says so:

Your Entire session shows an AI agent wrote src/lib/interview/prompts.ts (the prompt was: "1,2 isdone lets skip teh devrealy install, render and eleven labs credits i will claim, yep lets do stacked prs"). Explain the logic behind how briefPrompt structures the input data to ensure the generated brief remains grounded in the actual repository content.

That is a real question Viva asked me, about Viva. The typos in the prompt are mine.

Viva asking about a file an AI agent wrote, quoting the prompt from the coding session above the question.

Demo

Try it: https://viva-ou6t.onrender.com

Click "Viva (this project)" to see the AI-code question straight away, or paste any public GitHub repo (reading a new one takes about 45 seconds).

In the video, the candidate is simulated and the voice is Kokoro, an open speech model running on my laptop. The app on screen is real, with the waiting cut out.

Code

GitHub logo AbdulWasih05 / Viva

A local first AI interview coach

Viva

A mock technical interview about your own project, for the AI-coding era.

Students now ship projects an AI agent half-wrote, and interviewers know it. Viva reads your repo, finds the parts an agent wrote, and questions you about them the way a placement interviewer or a final-year viva panel would. It asks follow-ups based on what you actually said, remembers your weak spots, and ends with a scored report.

Built for the DEV Hacktoberfest 2026 Weekend Challenge (Build for a Friend). The interviewer is Gemma, an open-weight model; Mastra runs the agent; Entire checkpoints tell Viva which code an AI wrote.

Deploy to Render

What it does

  1. Reads your project. Paste a public GitHub URL (or, in local mode, a folder path). Viva picks the most telling files and Gemma writes a short brief. Every file path in that brief is checked against the real file list; invented ones are dropped.
  2. …

One rule runs through the code: Gemma decides what to say. Code decides what happens. The round order, the follow-up limit, the scores and every file path are plain, tested TypeScript.

How I Built It

Piece What it does in Viva
Gemma 4 26B (open weights) The interviewer: writes the brief, the questions, the scores and the report
Mastra Runs the interviewer as an agent with a readFile tool, and remembers your weak spots between sessions
Entire Records each coding-agent session next to its commit. Viva reads that to find AI-written code
Sentry Traces every interview turn, with quality flags on each one
Render Hosts it. One free service, no database

An interview in four moves. Viva reads the repo and Gemma writes a brief; code throws out any file path Gemma made up. For a code question, the agent opens the file itself before asking. After each answer, Gemma scores it and may follow up, but the follow-up has to quote something you actually said, and code checks the quote. At the end, code adds up the scores and Gemma writes the coaching.

What I measured, across scripted interviews on two real repos:

Check Result
Model replies that passed the schema check 119 of 119
Deep-dive questions that named a real file 6 of 6
Follow-ups that really quoted the answer 51 of 51
Code questions where the agent opened a file first 18 of 18
Second session opened with last time's weak spot 3 of 3
Interviews on Viva's own repo that asked about AI-written code 3 of 3

How Viva knows what the AI wrote. A file counts as AI-written when it was changed in a commit that Entire linked to a coding-agent session. The prompt Viva quotes is the one you typed in that session, taken from the session transcript.

 A Sentry trace of one Viva interview turn, with flags showing the question was about AI-written code, named a real file, and needed no retry or fallback.

That Sentry trace is one interview turn: question_names_real_file: true, ai_authored_question: true, no retry, no fallback. Each turn carries these flags, so I can see whether the interviewer is doing its job without reading every chat.

Why Does Open Innovation Matter?

Because of who this is for.

A student should not need a credit card to practise for an interview. His next project may be private. A college lab may have no reliable internet. With an open model, the same code talks to Gemma on a server or to Gemma on your own machine through Ollama, and switching is one setting. A closed API does not give you that choice.

Nobody has to trust my copy either. The prompts and the scoring rubric are plain files, and the Deploy button gives any coding club its own private Viva.

Open is not free, and I measured the price. On my 16 GB laptop with no real GPU, local Gemma took 50 to 544 seconds per call and never finished a project brief. So today, local mode needs better hardware than a student usually has. But that is a limit I can see and work on, in code I can read.

My Agent Session

The whole build is public. Each phase is one commit, and each commit carries its Entire checkpoint: the same data Viva reads to interview me. Every decision is numbered, with its reason, in docs/DECISIONS.md.

Prize Categories

  • Gemma: the interviewer itself
  • Mastra: the agent, its tools and its memory
  • Entire: the source of every AI-code question
  • Sentry Agent Tracing: each turn traced with quality flags
  • Render: hosting and a one-click blueprint

Still to build: voice answers, showing what the agent reads while it reads, and getting a turn under 8 seconds (a new question takes 11 to 14 today).

Have you been asked to explain code your AI wrote? How did it go? Tell me in the comments.

I built Viva with an AI coding agent (Claude Code). The numbers are measured and the sessions are public in the repo.

Top comments (0)