<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Parthiban Marimuthu</title>
    <description>The latest articles on DEV Community by Parthiban Marimuthu (@parthibharathi).</description>
    <link>https://dev.to/parthibharathi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F821070%2F870a1a08-53d9-4072-a604-57aa9d05f72d.png</url>
      <title>DEV Community: Parthiban Marimuthu</title>
      <link>https://dev.to/parthibharathi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/parthibharathi"/>
    <language>en</language>
    <item>
      <title>Building InterVU: A Real-Time AI Interview Agent with Google's Gemini Live API</title>
      <dc:creator>Parthiban Marimuthu</dc:creator>
      <pubDate>Mon, 16 Mar 2026 22:06:18 +0000</pubDate>
      <link>https://dev.to/parthibharathi/building-intervu-a-real-time-ai-interview-agent-with-googles-gemini-live-api-3g4</link>
      <guid>https://dev.to/parthibharathi/building-intervu-a-real-time-ai-interview-agent-with-googles-gemini-live-api-3g4</guid>
      <description>&lt;p&gt;&lt;em&gt;This post was created for the Gemini Live Agent Challenge.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://geminiliveagentchallenge.devpost.com/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fd112y698adiu2z.cloudfront.net%2Fphotos%2Fproduction%2Fchallenge_thumbnails%2F004%2F338%2F662%2Fdatas%2Foriginal.png" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://geminiliveagentchallenge.devpost.com/" rel="noopener noreferrer" class="c-link"&gt;
            Gemini Live Agent Challenge: Redefining Interaction: From Static Chatbots to Immersive Experiences - Devpost
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Redefining Interaction: From Static Chatbots to Immersive Experiences
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
          geminiliveagentchallenge.devpost.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://interai-683243626980.us-central1.run.app"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;Technical interview preparation is broken.&lt;/p&gt;

&lt;p&gt;Most candidates rehearse answers in isolation or practice with&lt;br&gt;
text-based mock interview tools. But real interviews evaluate much more&lt;br&gt;
than just the correctness of an answer.&lt;/p&gt;

&lt;p&gt;Interviewers observe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Eye contact&lt;/li&gt;
&lt;li&gt;  Confidence&lt;/li&gt;
&lt;li&gt;  Communication clarity&lt;/li&gt;
&lt;li&gt;  Body language&lt;/li&gt;
&lt;li&gt;  Ability to think under pressure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Existing mock interview tools are &lt;strong&gt;chatbots&lt;/strong&gt;. They cannot see you,&lt;br&gt;
hear your tone, or interrupt when you ramble.&lt;/p&gt;

&lt;p&gt;Real interviewers do.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;InterVU&lt;/strong&gt; --- a &lt;strong&gt;real‑time AI interview agent&lt;/strong&gt; that can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  👀 See you through your webcam&lt;/li&gt;
&lt;li&gt;  🎤 Hear your voice in real time&lt;/li&gt;
&lt;li&gt;  🗣️ Speak naturally like an interviewer&lt;/li&gt;
&lt;li&gt;  📊 Analyze your interview performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was to simulate the experience of sitting across from a &lt;strong&gt;real&lt;br&gt;
engineering hiring manager&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  What is InterVU?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;InterVU&lt;/strong&gt; is a real‑time AI mock interview platform powered by&lt;br&gt;
&lt;strong&gt;Google Gemini Live API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Analyze job descriptions&lt;/li&gt;
&lt;li&gt;  Parse candidate resumes&lt;/li&gt;
&lt;li&gt;  Conduct live interviews&lt;/li&gt;
&lt;li&gt;  Monitor body language and communication&lt;/li&gt;
&lt;li&gt;  Generate structured interview reports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of practicing alone, candidates receive &lt;strong&gt;real‑time coaching and&lt;br&gt;
a structured feedback report after the interview.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  System Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flyinbj9kqmjy4s4hn2m4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flyinbj9kqmjy4s4hn2m4.png" alt="Architecture diagram showing browser streaming audio and video through&amp;lt;br&amp;gt;
WebSocket to a FastAPI backend running on Cloud Run, which communicates&amp;lt;br&amp;gt;
with Gemini Live API for real‑time interaction and stores interview&amp;lt;br&amp;gt;
reports in Google Cloud&amp;lt;br&amp;gt;
Storage"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser (SPA) ←→ WebSocket ←→ FastAPI (Cloud Run) ←→ Gemini Live API
                                    ↓                      ↓
                               SQLite DB            Gemini Chat API
                                    ↓                      ↓
                              GCS Storage           Structured Reports
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Design Goals
&lt;/h3&gt;

&lt;p&gt;The architecture focuses on three core principles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Low latency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Real‑time voice conversations require extremely fast responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minimal frontend overhead&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The frontend uses &lt;strong&gt;vanilla JavaScript&lt;/strong&gt; instead of heavy frameworks to&lt;br&gt;
minimize latency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Async backend&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;FastAPI with &lt;strong&gt;asyncio&lt;/strong&gt; manages multiple concurrent streaming&lt;br&gt;
pipelines.&lt;/p&gt;


&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;HTML, CSS, Vanilla JavaScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streaming&lt;/td&gt;
&lt;td&gt;WebSockets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Gemini Live API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Structured Extraction&lt;/td&gt;
&lt;td&gt;LangChain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Google Cloud Run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;Google Cloud Storage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  Phase 1 --- Smart Setup: JD + Resume Parsing
&lt;/h2&gt;

&lt;p&gt;Before the interview begins, InterVU analyzes both the &lt;strong&gt;job description&lt;br&gt;
and the candidate's resume&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This ensures the interview is grounded in the &lt;strong&gt;actual job&lt;br&gt;
requirements&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;skills&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;parsed_resume&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;gather&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nf"&gt;parse_job_description&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;job_description&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="nf"&gt;parse_resume&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resume_text&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;skill_gap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;analyze_skill_gap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;skills&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;parsed_resume&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The system extracts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Required skills&lt;/li&gt;
&lt;li&gt;  Preferred skills&lt;/li&gt;
&lt;li&gt;  Seniority level&lt;/li&gt;
&lt;li&gt;  Domain&lt;/li&gt;
&lt;li&gt;  Responsibilities&lt;/li&gt;
&lt;li&gt;  Programming languages&lt;/li&gt;
&lt;li&gt;  Frameworks&lt;/li&gt;
&lt;li&gt;  Projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows the AI interviewer to &lt;strong&gt;ask highly relevant questions&lt;br&gt;
instead of generic ones.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Phase 2 --- The 3‑State Interview Engine
&lt;/h2&gt;

&lt;p&gt;The AI interviewer persona &lt;strong&gt;Wayne&lt;/strong&gt; operates using a &lt;strong&gt;three‑state&lt;br&gt;
behavior engine&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Interrogation Mode
&lt;/h3&gt;

&lt;p&gt;Wayne cross‑references the resume against the job description.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I see Python listed on your resume. Can you describe a project where&lt;br&gt;
you used asynchronous programming?"&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Visual Evaluation
&lt;/h3&gt;

&lt;p&gt;During the interview the system analyzes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Eye contact&lt;/li&gt;
&lt;li&gt;  Head orientation&lt;/li&gt;
&lt;li&gt;  Posture&lt;/li&gt;
&lt;li&gt;  Speaking duration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wayne can interrupt if the candidate loses focus or rambles.&lt;/p&gt;
&lt;h3&gt;
  
  
  Tutor Mode
&lt;/h3&gt;

&lt;p&gt;If a candidate struggles with a question:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Wayne explains the concept briefly&lt;/li&gt;
&lt;li&gt; Asks a simplified follow‑up&lt;/li&gt;
&lt;li&gt; Returns to interview mode&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This makes the interview &lt;strong&gt;educational instead of discouraging&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Phase 3 --- Real‑Time Conversations with Gemini Live API
&lt;/h2&gt;

&lt;p&gt;The core component is the &lt;strong&gt;GeminiLiveSession&lt;/strong&gt; class managing a&lt;br&gt;
bidirectional streaming connection.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;config_kwargs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system_instruction&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;parts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Part&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;system_text&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Voice interaction is enabled with:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;config_kwargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;response_modalities&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AUDIO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This allows &lt;strong&gt;natural spoken conversations with the AI interviewer.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The Hardest Problem: Turn‑Taking
&lt;/h2&gt;

&lt;p&gt;Real‑time conversations require correct &lt;strong&gt;turn detection&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Layer 1 --- Voice Activity Detection
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_isUserSpeaking&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;rms&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.03&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_noiseFloor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_noiseFloor&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.95&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;rms&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Layer 2 --- Echo Suppression
&lt;/h3&gt;

&lt;p&gt;Microphone input is disabled when the AI speaks to prevent feedback&lt;br&gt;
loops.&lt;/p&gt;
&lt;h3&gt;
  
  
  Layer 3 --- Silence Watchdog
&lt;/h3&gt;

&lt;p&gt;If the candidate stops speaking for several seconds, the server signals&lt;br&gt;
the model to respond.&lt;/p&gt;


&lt;h2&gt;
  
  
  Phase 4 --- Concurrent WebSocket Pipelines
&lt;/h2&gt;

&lt;p&gt;The interview session runs three concurrent async tasks.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;gather&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nf"&gt;forward_to_gemini&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="nf"&gt;forward_to_browser&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="nf"&gt;timer_task&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Each pipeline handles a different stream of events, enabling&lt;br&gt;
&lt;strong&gt;non‑blocking real‑time communication&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Phase 5 --- AI Interview Report
&lt;/h2&gt;

&lt;p&gt;After the interview ends, the transcript is analyzed to generate a&lt;br&gt;
structured report.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gemini_chat_model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The report includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Skill scores&lt;/li&gt;
&lt;li&gt;  Communication clarity analysis&lt;/li&gt;
&lt;li&gt;  Body language feedback&lt;/li&gt;
&lt;li&gt;  Resume accuracy verification&lt;/li&gt;
&lt;li&gt;  Strengths and improvement areas&lt;/li&gt;
&lt;li&gt;  Personalized learning plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reports are stored in &lt;strong&gt;Google Cloud Storage&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Google Cloud Services Used
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemini Live API&lt;/td&gt;
&lt;td&gt;Real-time audio/video interview conversation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini Chat API&lt;/td&gt;
&lt;td&gt;Resume parsing and interview report generation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google GenAI SDK&lt;/td&gt;
&lt;td&gt;Client library for interacting with Gemini APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud Run&lt;/td&gt;
&lt;td&gt;Hosting the FastAPI backend&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud Storage&lt;/td&gt;
&lt;td&gt;Storage for generated interview reports&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud Build&lt;/td&gt;
&lt;td&gt;Container build and deployment pipeline&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  GitHub Repository
&lt;/h2&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/paartheee" rel="noopener noreferrer"&gt;
        paartheee
      &lt;/a&gt; / &lt;a href="https://github.com/paartheee/InterVU-AI" rel="noopener noreferrer"&gt;
        InterVU-AI
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;InterAI — AI-Powered Mock Interview Platform&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;InterAI is a real-time AI mock interview agent powered by &lt;strong&gt;Google's Gemini Live API&lt;/strong&gt;. It conducts natural, voice-and-video interviews tailored to a candidate's job description and resume, evaluates technical and soft skills in real-time, and generates structured performance reports.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category:&lt;/strong&gt; Live Agents&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Preparing for interviews is stressful and inefficient. Candidates lack access to realistic, personalized mock interviews that adapt in real-time. Traditional prep tools are static — they can't see you, hear your tone, or respond to your body language.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Solution&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;InterAI creates a live AI interviewer ("Wayne") that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sees&lt;/strong&gt; your video feed and analyzes body language and confidence in real-time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hears&lt;/strong&gt; your spoken answers with natural turn-taking and barge-in support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speaks&lt;/strong&gt; back with a natural voice, asking follow-up questions adapted to your responses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluates&lt;/strong&gt; you against the actual job description and your resume&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generates&lt;/strong&gt; a structured scorecard report with…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/paartheee/InterVU-AI" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;p&gt;The repository includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Full source code&lt;/li&gt;
&lt;li&gt;  Deployment scripts&lt;/li&gt;
&lt;li&gt;  Gemini Live API integration&lt;/li&gt;
&lt;li&gt;  Architecture documentation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;InterVU demonstrates how &lt;strong&gt;real‑time multimodal AI agents&lt;/strong&gt; can&lt;br&gt;
transform interview preparation.&lt;/p&gt;

&lt;p&gt;By combining:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  live audio and video streaming&lt;/li&gt;
&lt;li&gt;  structured reasoning&lt;/li&gt;
&lt;li&gt;  behavioral analysis&lt;/li&gt;
&lt;li&gt;  conversational AI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;we can create systems that simulate &lt;strong&gt;real human interview&lt;br&gt;
experiences&lt;/strong&gt;, not just chatbot conversations.&lt;/p&gt;

&lt;p&gt;The future of AI interfaces isn't chat.&lt;/p&gt;

&lt;p&gt;It's &lt;strong&gt;conversation&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>geminiliveagentchallenge</category>
      <category>gemini</category>
    </item>
  </channel>
</rss>
