<?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: Priyansu  Nayak</title>
    <description>The latest articles on DEV Community by Priyansu  Nayak (@xdzouyvhegps).</description>
    <link>https://dev.to/xdzouyvhegps</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Priyansu  Nayak</title>
      <link>https://dev.to/xdzouyvhegps</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xdzouyvhegps"/>
    <language>en</language>
    <item>
      <title>MockMate – Your Personal Voice-Powered AI Interview Partner</title>
      <dc:creator>Priyansu  Nayak</dc:creator>
      <pubDate>Thu, 08 Oct 2026 03:39:33 +0000</pubDate>
      <link>https://dev.to/xdzouyvhegps/mockmate-your-personal-voice-powered-ai-interview-partner-5ll</link>
      <guid>https://dev.to/xdzouyvhegps/mockmate-your-personal-voice-powered-ai-interview-partner-5ll</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;MockMate&lt;/strong&gt;, a voice-powered mock interview partner designed for a close friend who gets severe interview anxiety during technical and behavioral rounds. It simulates a live hiring manager, reads interview questions out loud using natural voice synthesis, and guides them through a realistic conversational feedback loop to help them practice speaking their answers aloud.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live App:&lt;/strong&gt; &lt;a href="https://mock-mate-interview-coach--priyanshuiter.replit.app/" rel="noopener noreferrer"&gt;MockMate on Replit&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend &amp;amp; Runtime:&lt;/strong&gt; Built with &lt;strong&gt;Python&lt;/strong&gt; and &lt;strong&gt;Streamlit&lt;/strong&gt; for rapid UI development and seamless session state tracking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice &amp;amp; Audio Processing:&lt;/strong&gt; Integrated the &lt;strong&gt;ElevenLabs API&lt;/strong&gt; to translate generated interview prompts into realistic, high-quality audio streams (&lt;code&gt;st.audio&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Hosting:&lt;/strong&gt; Deployed and hosted live using &lt;strong&gt;Render / Replit&lt;/strong&gt; to make the app accessible anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Development Environment:&lt;/strong&gt; Architected completely inside browser-based developer tools using Replit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open-source frameworks and open APIs allow developers to completely decouple user interfaces from proprietary vendors. For an application handling sensitive career data like targeted job descriptions, past employment backgrounds, and vulnerable mock interview answers, utilizing flexible cloud runtimes and open modular tooling ensures that developers retain full control over data pathways, audio pipelines, and model customizations without vendor lock-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Best Use of Render&lt;/li&gt;
&lt;li&gt;Best Use of ElevenLabs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
python
import os
import streamlit as st
import requests

# Page Config
st.set_page_config(page_title="MockMate - AI Interview Partner", page_icon="🎙️", layout="centered")

st.title("🎙️ MockMate")
st.caption("Your personal, voice-powered AI interview coach. Built for a friend.")

# Sidebar for settings &amp;amp; API keys
with st.sidebar:
    st.header("Configuration")
    target_role = st.text_input("Target Role", "Frontend Developer")
    job_desc = st.text_area("Paste Job Description", "Looking for a React developer with 3+ years experience...")

    # ElevenLabs configuration
    elevenlabs_api_key = st.text_input("ElevenLabs API Key", type="password")
    voice_id = st.text_input("ElevenLabs Voice ID", "21m00Tcm4TlvDq8ikWAM") # Default Rachel voice

# Initialize session state for conversation history
if "messages" not in st.session_state:
    st.session_state.messages = []

# Function to generate ElevenLabs Audio
def text_to_speech(text, api_key, voice_id):
    url = f"[https://api.elevenlabs.io/v1/text-to-speech/](https://api.elevenlabs.io/v1/text-to-speech/){voice_id}"
    headers = {
        "Accept": "audio/mpeg",
        "Content-Type": "application/json",
        "xi-api-key": api_key
    }
    data = {
        "text": text,
        "model_id": "eleven_monolingual_v1",
        "voice_settings": {"stability": 0.5, "similarity_boost": 0.5}
    }
    response = requests.post(url, json=data, headers=headers)
    if response.status_code == 200:
        return response.content
    return None

# Start Interview Button
if not st.session_state.messages:
    if st.button("Start Mock Interview"):
        initial_question = f"Hello! Let's start your mock interview for the {target_role} position. To kick things off, can you tell me about yourself and your relevant experience?"
        st.session_state.messages.append({"role": "assistant", "content": initial_question})
        st.rerun()

# Display chat history
for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.write(message["content"])
        if message["role"] == "assistant" and elevenlabs_api_key:
            audio_bytes = text_to_speech(message["content"], elevenlabs_api_key, voice_id)
            if audio_bytes:
                st.audio(audio_bytes, format="audio/mp3")

# User Input
user_input = st.chat_input("Type your answer here...")
if user_input:
    st.session_state.messages.append({"role": "user", "content": user_input})
    with st.chat_message("user"):
        st.write(user_input)

    # Generate next mock interview question
    next_question = f"Thank you for that answer. Based on the job description for {target_role}, how do you handle debugging complex performance issues under a tight deadline?"

    st.session_state.messages.append({"role": "assistant", "content": next_question})
    with st.chat_message("assistant"):
        st.write(next_question)
        if elevenlabs_api_key:
            audio_bytes = text_to_speech(next_question, elevenlabs_api_key, voice_id)
            if audio_bytes:
                st.audio(audio_bytes, format="audio/mp3")
    st.rerun()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
