<?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: Ganesh Bharambe</title>
    <description>The latest articles on DEV Community by Ganesh Bharambe (@ganeshvbharambe).</description>
    <link>https://dev.to/ganeshvbharambe</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4155354%2F762f556d-d5b4-4b2a-91f2-bf976a5648f1.jpeg</url>
      <title>DEV Community: Ganesh Bharambe</title>
      <link>https://dev.to/ganeshvbharambe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ganeshvbharambe"/>
    <language>en</language>
    <item>
      <title>"PrepMate AI: a local AI interviewer built for my friend"</title>
      <dc:creator>Ganesh Bharambe</dc:creator>
      <pubDate>Sun, 04 Oct 2026 09:31:47 +0000</pubDate>
      <link>https://dev.to/ganeshvbharambe/prepmate-ai-a-local-ai-interviewer-built-for-my-friend-59gl</link>
      <guid>https://dev.to/ganeshvbharambe/prepmate-ai-a-local-ai-interviewer-built-for-my-friend-59gl</guid>
      <description>&lt;p&gt;**&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;PrepMate AI&lt;/strong&gt;, a local AI-powered interview practice partner for my college friend who is preparing for software development interviews.&lt;/p&gt;

&lt;p&gt;While preparing for interviews, he found it difficult to practice realistic mock interviews because he did not always have someone available to ask technical questions and give feedback on his answers.&lt;/p&gt;

&lt;p&gt;I wanted to build something that solved that specific problem instead of making another general-purpose chatbot.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;PrepMate AI&lt;/strong&gt; — an AI interviewer that can conduct a technical interview, evaluate answers, ask follow-up questions, and give a final performance report.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;p&gt;Choose a topic&lt;br&gt;
      ↓&lt;br&gt;
Choose difficulty&lt;br&gt;
      ↓&lt;br&gt;
Start interview&lt;br&gt;
      ↓&lt;br&gt;
AI asks a question&lt;br&gt;
      ↓&lt;br&gt;
Answer the question&lt;br&gt;
      ↓&lt;br&gt;
AI evaluates the answer&lt;br&gt;
      ↓&lt;br&gt;
Follow-up question&lt;br&gt;
      ↓&lt;br&gt;
Final performance report&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Live URL :[&lt;a href="https://prep-mate-ai-seven.vercel.app" rel="noopener noreferrer"&gt;https://prep-mate-ai-seven.vercel.app&lt;/a&gt;]&lt;br&gt;
The demo shows the complete interview flow:&lt;/p&gt;

&lt;p&gt;Open PrepMate AI&lt;/p&gt;

&lt;p&gt;Select the interview category&lt;br&gt;
Choose the difficulty&lt;br&gt;
Choose the number of questions&lt;br&gt;
Start the interview&lt;br&gt;
Receive an AI-generated question&lt;br&gt;
Submit an answer&lt;br&gt;
Receive AI evaluation and feedback&lt;br&gt;
Continue with follow-up questions&lt;br&gt;
Complete the interview&lt;br&gt;
View the final performance report&lt;/p&gt;

&lt;p&gt;I also show the local AI setup using Ollama and the qwen3:4b model.&lt;/p&gt;

&lt;p&gt;`Github &lt;br&gt;
{% embed &lt;a href="https://github.com/Ganesh-Bharambe29/PrepMate-AI" rel="noopener noreferrer"&gt;https://github.com/Ganesh-Bharambe29/PrepMate-AI&lt;/a&gt; %}&lt;/p&gt;

&lt;p&gt;`&lt;/p&gt;

&lt;p&gt;The repository contains the complete frontend, backend, interview logic, Ollama integration, prompts, and setup instructions for running the project locally.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;How I Built It&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
PrepMate AI is a full-stack application built around a locally running open-weight model.&lt;/p&gt;

&lt;p&gt;The main technologies I used are:&lt;/p&gt;

&lt;p&gt;Frontend&lt;br&gt;
React + Vite&lt;/p&gt;

&lt;p&gt;Backend&lt;br&gt;
Node.js + Express&lt;/p&gt;

&lt;p&gt;AI&lt;br&gt;
Ollama + Qwen3 4B&lt;/p&gt;

&lt;p&gt;Communication&lt;br&gt;
REST API&lt;/p&gt;

&lt;p&gt;The architecture is:&lt;br&gt;
┌─────────────────────┐&lt;br&gt;
│    React Frontend   │&lt;br&gt;
│                     │&lt;br&gt;
│ Setup / Interview   │&lt;br&gt;
│ Feedback / Report   │&lt;br&gt;
└──────────┬──────────┘&lt;br&gt;
           │&lt;br&gt;
           ▼&lt;br&gt;
┌─────────────────────┐&lt;br&gt;
│  Node.js + Express  │&lt;br&gt;
│                     │&lt;br&gt;
│ Interview APIs      │&lt;br&gt;
│ Prompt Handling     │&lt;br&gt;
│ Response Parsing    │&lt;br&gt;
└──────────┬──────────┘&lt;br&gt;
           │&lt;br&gt;
           ▼&lt;br&gt;
┌─────────────────────┐&lt;br&gt;
│       Ollama        │&lt;br&gt;
│  localhost:11434    │&lt;br&gt;
└──────────┬──────────┘&lt;br&gt;
           │&lt;br&gt;
           ▼&lt;br&gt;
┌─────────────────────┐&lt;br&gt;
│      Qwen3 4B       │&lt;br&gt;
│   Local Inference   │&lt;br&gt;
└─────────────────────┘&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Interview setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The candidate first chooses the interview configuration.&lt;/p&gt;

&lt;p&gt;Category&lt;br&gt;
→ Java&lt;br&gt;
→ DSA&lt;br&gt;
→ DBMS&lt;br&gt;
→ Computer Networks&lt;br&gt;
→ Operating Systems&lt;br&gt;
→ JavaScript&lt;br&gt;
→ React&lt;br&gt;
→ Full Stack Development&lt;/p&gt;

&lt;p&gt;Difficulty&lt;br&gt;
→ Easy&lt;br&gt;
→ Medium&lt;br&gt;
→ Hard&lt;/p&gt;

&lt;p&gt;Questions&lt;br&gt;
→ 5&lt;br&gt;
→ 10&lt;br&gt;
→ 15&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. AI-generated questions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When the interview starts, the backend asks Qwen3 to behave as a technical interviewer.&lt;/p&gt;

&lt;p&gt;The model generates a question based on:&lt;/p&gt;

&lt;p&gt;[- Selected category&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Difficulty&lt;/li&gt;
&lt;li&gt;Interview context&lt;/li&gt;
&lt;li&gt;Previous questions and answers where relevant](url)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application presents one question at a time so the interview feels more like a real conversation rather than a static list of questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Answer evaluation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After the candidate submits an answer, PrepMate sends the answer and relevant interview context to Qwen3.&lt;/p&gt;

&lt;p&gt;The AI evaluates the response and returns information such as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Score&lt;/li&gt;
&lt;li&gt;Verdict&lt;/li&gt;
&lt;li&gt;Strengths&lt;/li&gt;
&lt;li&gt;Issues / Missing points&lt;/li&gt;
&lt;li&gt;Ideal answer&lt;/li&gt;
&lt;li&gt;Follow-up question&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That information is then displayed in the application as structured feedback.&lt;/p&gt;

&lt;p&gt;The goal is not to tell the candidate that every answer is good.&lt;/p&gt;

&lt;p&gt;The interviewer should identify what was correct, what was missing, and what the candidate should improve.&lt;br&gt;
**&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Follow-up questions**&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is one of the parts I wanted to make more realistic.&lt;/p&gt;

&lt;p&gt;A normal practice platform might do:&lt;br&gt;
Question&lt;br&gt;
   ↓&lt;br&gt;
Answer&lt;br&gt;
   ↓&lt;br&gt;
Next unrelated question&lt;/p&gt;

&lt;p&gt;PrepMate tries to make the flow more conversational:&lt;br&gt;
Question&lt;br&gt;
   ↓&lt;br&gt;
Answer&lt;br&gt;
   ↓&lt;br&gt;
Evaluation&lt;br&gt;
   ↓&lt;br&gt;
Follow-up based on the answer&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Final performance report&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once the interview is complete, PrepMate generates a final report.&lt;/p&gt;

&lt;p&gt;The report summarizes the candidate's performance and provides question-by-question feedback.&lt;/p&gt;

&lt;p&gt;It includes information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Overall Performance&lt;/li&gt;
&lt;li&gt;Average Score&lt;/li&gt;
&lt;li&gt;Strong Areas&lt;/li&gt;
&lt;li&gt;Areas to Improve&lt;/li&gt;
&lt;li&gt;Recommended Topics&lt;/li&gt;
&lt;li&gt;Question-by-question Feedback&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnzhhh16qfuo0bx7d7can.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnzhhh16qfuo0bx7d7can.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Does Open Innovation Matter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For PrepMate AI, using an open-weight model locally was not just a technology choice. It changed how I could build the application.&lt;/p&gt;

&lt;p&gt;The model runs locally&lt;/p&gt;

&lt;p&gt;I am running Qwen3 4B locally through Ollama on my own laptop.&lt;/p&gt;

&lt;p&gt;The model was downloaded once and can then be used through the local Ollama API.&lt;/p&gt;

&lt;p&gt;That means the core interview experience can work without depending on a remote proprietary AI API for each question.&lt;/p&gt;

&lt;p&gt;More control over the AI&lt;/p&gt;

&lt;p&gt;Because the model is part of my local development environment, I can control the prompts, interview context, conversation history, evaluation format, and application logic around it.&lt;/p&gt;

&lt;p&gt;The AI is not simply a black-box button inside the application.&lt;/p&gt;

&lt;p&gt;I can change the interviewer behavior by changing the prompts and the way context is passed to the model.&lt;br&gt;
**&lt;br&gt;
Model flexibility**&lt;/p&gt;

&lt;p&gt;The application is built around Ollama rather than tightly coupling the code to one proprietary provider.&lt;/p&gt;

&lt;p&gt;That means the model layer can evolve as I experiment with other compatible open-weight models and configurations.&lt;/p&gt;

&lt;p&gt;Lower barrier to experimentation&lt;/p&gt;

&lt;p&gt;Local inference also made it possible for me to keep developing and testing the core AI functionality without needing a paid request for every test.&lt;/p&gt;

&lt;p&gt;For a student project that I wanted to build over a weekend, that mattered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters for PrepMate?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Interview answers can contain personal information about a candidate's preparation, weaknesses, and learning progress.&lt;/p&gt;

&lt;p&gt;With local inference, the AI processing for the local setup happens on the machine running the model rather than requiring those conversations to be sent to a proprietary cloud AI service.&lt;/p&gt;

&lt;p&gt;That was one of the main reasons I wanted the AI to run locally.&lt;/p&gt;

</description>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Introduction</title>
      <dc:creator>Ganesh Bharambe</dc:creator>
      <pubDate>Thu, 01 Oct 2026 16:29:45 +0000</pubDate>
      <link>https://dev.to/ganeshvbharambe/introduction-24kk</link>
      <guid>https://dev.to/ganeshvbharambe/introduction-24kk</guid>
      <description>&lt;p&gt;Hey, I am new to the community.Happry to being the part of this community and the development.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
