midhunpm.
All projects

Midhun P M — Case studyProbe Interview

  • Python
  • FastAPI
  • LangGraph
  • OpenAI
  • React
  • Vite
  • Docker

The problem

Most interview practice is either a memorized question bank or an unstructured chat. Neither one knows what a person has actually learned, where they struggled, or when a follow-up would be more useful than another generic question.

I built Probe Interview for VicoDathon, ABTalks’ 48-hour online AI build sprint. The brief rewarded originality, polish, and how well participants directed AI tools. I wanted the interview to react to evidence, not pretend every candidate starts from the same blank page.

What I built

Probe turns a candidate’s learning history into an adaptive technical conversation with Dr. Probey. First-try passes become calibration strengths. Retries, failures, and skipped missions become explicit areas to investigate.

The interview graph has seven focused agents:

  • Strengths Finder, Weaknesses Finder, and Topic Planner build a short evidence-backed interview plan.
  • Dr. Probey asks one focused question at a time.
  • Response Reviewer and Consistency Checker assess depth, correctness, vagueness, engagement, and material contradictions.
  • Evaluator returns grounded strengths, gaps, next steps, and a recap of the session.

LangGraph owns the state machine. Deterministic routing decides whether to simplify, escalate, probe one claim, check in, move on, or finish. Each session checkpoints after a question, so the next message resumes the same interview instead of starting over.

Making the system inspectable

The app has a Scene Mode with an animated interview room and a reasoning trail, plus a focused Classic Mode. Both use the same engine. The user can inspect safe structured outputs from the agents without exposing hidden prompts.

I also added strict Pydantic schemas, output caps, payload limits, prompt-injection boundaries, bounded retries, and per-IP rate limits. Public responses carry no-index headers because an interview transcript is not search content.

What I learned

The useful part of an interview assistant is not asking more questions. It is choosing the next question for a reason, then being honest about what the answer did and did not demonstrate. Keeping that logic visible made the product better and made the graph easier to debug.