Skip to content
All projects

Case study

Vaktora

AI-powered interview preparation platform

Role
Full Stack Developer
Status
Live on Google Play
Year
2026
Organization
Kaziva
Get it on Google Playvaktora.appSource code is private. Presented as a product case study.

01

Overview

Vaktora turns interview preparation from guesswork into a guided routine. A candidate picks the role they are targeting, faces questions tailored to it (including questions drawn from their own resume), answers out loud, and receives an AI evaluation with a score, strengths and specific fixes. Every session becomes a report they can review, and their skill profile updates over time.

Vaktora is the first product of Kaziva, a software products company I am building.

200+
concurrent live sessions
<100ms
event delivery latency
40%
faster evaluation pipeline
35%
faster API responses
5,000+
real-time events per session
<10 min
deploys, down from 45 min

02

Problem

Interview practice usually means rehearsing generic question lists with no feedback on how you actually speak and no way to measure improvement. On the other side, interviewers and institutions running live sessions need infrastructure that stays responsive with hundreds of people connected at once and evaluations that do not stall the experience.

03

Product

  • Role- and job-based mock interviews across categories such as HR & Behavioral, Communication, Resume & Experience and Problem Solving
  • Resume-based questions generated from the candidate's own experience
  • Spoken-answer practice with recording, transcript and playback
  • AI feedback and scored reports: an overall grade, written feedback and per-category scores such as communication, confidence, grammar and relevance
  • Beginner, Intermediate and Advanced difficulty levels for every category
  • Live interview sessions with Admin, Interviewer and Candidate roles, real-time feedback streams and proctoring signals

04

My role

  • Owned the product across the stack: React Native client, Node.js REST services, MongoDB data model, authentication, real-time layer, AI evaluation pipeline and deployment
  • Designed the event-driven backend (Socket.IO, Redis, BullMQ) that runs live sessions and asynchronous evaluation
  • Built and compared two evaluation paths (local models and OpenAI) and the routing between them
  • Set up Docker packaging and CI/CD for four services, and shipped the Android app to Google Play

05

Architecture

  1. Client

    • React Native app

      Android app on Google Play. Records answers, streams session events, renders reports.

  2. API & real-time

    • Node.js REST services

      Interview, question, report and user APIs. JWT authentication with Admin, Interviewer and Candidate roles.

    • Socket.IO gateway

      Live sessions, feedback streams, proctoring signals and push events. 5,000+ events per session.

  3. Async & data

    • BullMQ workers

      Evaluation jobs run off the request path so the API and live sessions stay responsive.

    • Redis

      Session-state cache and queue backend. Caching cut API response times by 35%.

    • MongoDB

      Sessions, answers, reports and users. Compound indexes and tuned query plans cut retrieval time by 25%.

  4. AI layer

    • Whisper

      Speech-to-text for recorded answers.

    • Kimi (local)

      First-pass answer evaluation on a locally hosted open-weight model.

    • OpenAI API

      Fallback evaluation path when the local model fails or times out.

  5. Delivery

    • Docker + CI/CD

      Four containerized services. Deployments went from 45 minutes to under 10.

06

AI workflow

  1. 01

    Candidate answers

    The app records a spoken answer to a role-specific question and uploads it with the session context.

  2. 02

    Interview engine

    The backend validates the session, stores the answer and enqueues an evaluation job on BullMQ.

  3. 03

    Transcription

    Whisper converts the recording to text so the evaluator works from a transcript.

  4. 04

    LLM evaluation

    A local Kimi model evaluates the answer first. If it fails or times out, the job is routed to OpenAI.

  5. 05

    Scoring

    The evaluation is turned into an overall score, a grade and per-category scores for the report.

  6. 06

    Personalized feedback

    Strengths and specific fixes are written back to the report and pushed to the app over Socket.IO.

07

Technical implementation

  • REST API surface for interviews, questions, sessions, reports and user management, secured with JWT and role-based access control
  • Socket.IO event model for live sessions: session lifecycle, code execution results, proctoring signals and live feedback streams
  • Evaluation pipeline built on BullMQ workers with Redis as the queue and cache backend
  • Model routing layer: local Kimi and Whisper as the primary path, OpenAI API as the fallback, with the evaluation contract kept identical across both
  • MongoDB schemas refactored with compound indexes for session and report queries
  • Docker images for each service and a CI/CD pipeline that deploys all four with no manual steps

08

Key engineering challenges & solutions

  1. 01

    Evaluation latency was blocking the API

    Challenge
    Running LLM evaluation inside the request path tied up the API and made live sessions feel slow whenever a model call took longer than expected.
    Solution
    Moved evaluation into BullMQ workers backed by Redis. The API acknowledges immediately and results stream back when ready, cutting evaluation pipeline response time by 40%.
  2. 02

    Real-time scale for live sessions

    Challenge
    Live sessions produce thousands of events (code execution results, proctoring signals, feedback) and hundreds of sessions can be active at once.
    Solution
    Designed an event-driven Socket.IO architecture handling 5,000+ events per session across 200+ concurrent sessions, with sub-100ms event delivery.
  3. 03

    Depending on one hosted model

    Challenge
    A single hosted model meant every evaluation was a paid, network-dependent call, and any outage stopped scoring entirely.
    Solution
    Introduced a two-path evaluation: locally hosted Kimi for scoring and Whisper for transcription, with automatic fallback to OpenAI when the local path fails. Compared outputs from both paths to keep scoring consistent.
  4. 04

    Slow reads on session and report data

    Challenge
    As sessions accumulated, report and session queries slowed down and repeated reads hit the database for data that rarely changed.
    Solution
    Cached session state and frequently accessed interview data in Redis (35% faster API responses) and rebuilt MongoDB indexes and query plans (25% faster document retrieval).
  5. 05

    Manual, error-prone deployments

    Challenge
    Deploying four services by hand took around 45 minutes and was easy to get wrong.
    Solution
    Containerized every service with Docker and automated the release through CI/CD, bringing deployment time under 10 minutes.

09

Quality & evaluation

  • Compared evaluations from the local Kimi path and the OpenAI path on the same answers to keep scores and feedback consistent regardless of which path served the request
  • Kept the evaluation contract (score, grade, category scores, feedback) identical across both paths so the app never has to know which model produced a result
  • Made evaluation asynchronous and retryable through BullMQ so a failed model call degrades to a fallback rather than a lost result

10

Screenshots

  • Vaktora practice screen listing interview categories such as HR & Behavioral, Communication and Problem Solving, each with completion and score indicators
  • Vaktora live session screen recording a spoken answer to a hard behavioral question, with a waveform and timer
  • Vaktora session report showing an overall grade, a score out of 100, written feedback, the recorded answer with transcript and per-category scores
  • Vaktora level selection screen with Beginner, Intermediate and Advanced tiers and the number of questions available in each
  • Vaktora home screen with a skill breakdown radar chart across communication, confidence, grammar, relevance and body language, plus recent sessions

11

Technology stack

  • React Native
  • Node.js
  • REST APIs
  • Socket.IO
  • MongoDB
  • Redis
  • BullMQ
  • JWT & RBAC
  • OpenAI API
  • Kimi (local LLM)
  • Whisper
  • Docker
  • CI/CD

12

Outcome

Vaktora is live on Google Play and serves as the flagship product of Kaziva. The backend sustains 200+ concurrent live sessions with sub-100ms event delivery, the evaluation pipeline responds 40% faster than the original synchronous design, and releases across four services now take under 10 minutes.