BACK TO PORTFOLIOCASE STUDY 03 / 03
ADAPTIVE EVALUATION & DISTRIBUTED STATE•NESTJS MONOREPO•REDIS & WEBSOCKETS

MERITUS

An adaptive AI interview platform that tailors interview sessions based on candidate resumes, target roles, and real-time responses, built with resilient distributed session recovery.

THE INTERVIEW SCALING CHALLENGE

Rigid Screening Pipelines & Fragile Interview States

Standard automated hiring screens rely on rigid, static multiple-choice questions or canned problem sets that ignore candidate specializations. Meanwhile, live simulated interview platforms frequently crash or lose candidate progress when browser connections fluctuate, invalidating entire interview evaluations.

THE ARCHITECTURAL SOLUTION

Adaptive Monorepo Architecture & Resilient Session Management

Designed a modular NestJS monorepo pairing resume-aware dynamic prompt engines with real-time WebSocket gateways. Interview state and turn histories are backed by Redis, enabling transparent disconnection recovery while delivering structured recruiter-style rubrics across technical and behavioral dimensions.

01 / MONOREPO ARCHITECTURE

Modular Component Boundaries

Separated into dedicated internal libraries and application layers to guarantee isolation and independent scaling:

libs/resume-intelligencePARSER ENGINE

Extracts technical proficiencies, project depth, and years of experience from uploaded candidate resumes, mapping them to target job qualification matrices.

libs/interview-engineADAPTIVE CORE

Dynamically constructs follow-up questions in response to candidate answers, probing edge cases, architectural trade-offs, and behavioral nuances.

libs/moderationSAFETY & INTEGRITY

Guards interview fairness and prevents prompt injections, topic deviations, or inappropriate content during interactive voice and text exchanges.

apps/api (NestJS Gateway)LIVE GATEWAY

High-throughput WebSocket gateway handling bidirectional audio/text transmission, heartbeats, and Redis-backed session recovery.

02 / FAULT TOLERANCE

Concurrent Interview State & Recovery Workflow

How the system preserves interview progress during unexpected network disconnections:

01. SESSION INIT
Room Provisioned

Resume and target role are compiled into an interview profile stored in Redis with session TTL.

02. LIVE STREAM
Turn Execution

Real-time audio/text messages stream over WebSockets. Each exchange appends to the active context graph.

03. DISCONNECT
Graceful Pause

If the client drops, the room state persists in Redis. On reconnection, state and unanswered prompts replay seamlessly.

04. EVALUATION
Rubric Generation

Post-session analysis computes recruiter-style feedback across technical depth, clarity, and behavioral metrics.

03 / EVALUATION MATRIX

Structured Recruiter-Style Rubric

Evaluations provide actionable, granular breakdowns rather than arbitrary percentage scores:

TECHNICAL PROFICIENCY MATRIX
  • • Architecture & Systems Trade-off Reasoning
  • • Code Correctness, Complexity, and Optimization
  • • Domain-Specific Knowledge Depth (e.g., DB, Concurrency, APIs)
  • • Edge-Case Handling & Defensive Coding Strategies
BEHAVIORAL & COMMUNICATION MATRIX
  • • Problem Decomposition and Communication Structure
  • • Response Clarity under Technical Interrogation
  • • Scenario-Based Conflict and Prioritization Handling
  • • Articulation of Engineering Trade-offs
04 / TECHNICAL SPECIFICATIONS

Architectural Stack & Decisions

LAYERTECHNOLOGYTECHNICAL RATIONALE
Backend FrameworkNestJS (TypeScript)Enterprise modular architecture, dependency injection, and gateway lifecycle.
Frontend InterfaceReact.js + Tailwind CSSLow-latency interactive voice and text interview dashboard.
Session Cache & StateRedisIn-memory distributed session management and disconnection recovery.
Real-Time GatewayWebSockets (Socket.IO / WS)Bidirectional streaming for candidate audio/text and interviewer responses.
Database & AuthSupabase (PostgreSQL & Guards)User session verification, candidate reports persistence, and access control.
PREVIOUS: QUEUELESSBACK TO ALL PROJECTS