Real-time voice-based technical interviewer that detects bluffing, maps knowledge gaps, and dynamically escalates follow-up questions using LLM-driven gap analysis and live scoring.
Mind Duelist is a voice-based AI technical interviewer that conducts adversarial interviews in real-time. Unlike standard interview prep tools that follow scripted question lists, Mind Duelist actively listens to responses, detects when candidates are bluffing or giving surface-level answers, and dynamically escalates follow-up questions to probe genuine understanding.
The system uses ElevenLabs for natural text-to-speech voice synthesis and Gemini Flash for rapid LLM inference to analyze responses in real-time. When a candidate provides an answer, the system evaluates coherence against conversation history, assesses technical depth relative to the topic, checks consistency with prior statements, and identifies specific knowledge gaps. If bluffing is detected, the interviewer escalates difficulty; if the answer is genuine, it explores deeper into the topic.
The backend runs on Supabase with Edge Functions for serverless processing, enabling low-latency voice-to-analysis pipelines. The React frontend provides a live interview interface with real-time scoring, knowledge gap visualization, and post-interview analytics showing strengths and areas for improvement.
The project name 'NightmareBot' reflects the interviewer's adversarial design philosophy: it's meant to challenge candidates far beyond what a typical interviewer would, making real interviews feel easy by comparison.
async function analyzeResponse(
answer: string,
topic: string,
history: QAPair[]
): Promise<BluffAnalysis> {
const coherence = await measureCoherence(answer, history);
const depth = assessTechnicalDepth(answer, topic);
const consistency = checkConsistency(answer, history);
const isBluffing =
coherence < 0.4 || depth < 0.3 || consistency < 0.5;
return {
verdict: isBluffing ? "BLUFF_DETECTED" : "GENUINE",
confidence: 1 - Math.min(coherence, depth, consistency),
nextAction: isBluffing
? "ESCALATE_DIFFICULTY"
: "EXPLORE_DEEPER",
knowledgeGaps: extractGaps(answer, topic),
};
}