<?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: sandeep gusain</title>
    <description>The latest articles on DEV Community by sandeep gusain (@sandeep_gusain).</description>
    <link>https://dev.to/sandeep_gusain</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%2F4038628%2F6184421f-4a47-4441-b2a9-0e2a08bed2e5.png</url>
      <title>DEV Community: sandeep gusain</title>
      <link>https://dev.to/sandeep_gusain</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sandeep_gusain"/>
    <language>en</language>
    <item>
      <title>How I Built an AI Interview Prep App with Spring Boot + RAG in 10 Days</title>
      <dc:creator>sandeep gusain</dc:creator>
      <pubDate>Mon, 20 Jul 2026 17:51:20 +0000</pubDate>
      <link>https://dev.to/sandeep_gusain/how-i-built-an-ai-interview-prep-app-with-spring-boot-rag-in-12-days-410a</link>
      <guid>https://dev.to/sandeep_gusain/how-i-built-an-ai-interview-prep-app-with-spring-boot-rag-in-12-days-410a</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every Java developer preparing for interviews does the same thing — opens ChatGPT, types "ask me Spring Boot interview questions," gets generic questions with no scoring, no progress tracking, and no way to know if their answer would pass a real interview.&lt;/p&gt;

&lt;p&gt;I built SkillRound to fix that.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;SkillRound is an AI-powered mock interview app specifically for Java/Spring Boot developers. Not a generic "interview prep for all roles" app — a deep, specialized tool for one stack.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2,358 questions&lt;/strong&gt; across 16 topics: Core Java, Collections, Multithreading, Spring Boot, Microservices, Kafka, System Design, and more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI evaluation&lt;/strong&gt; that scores your answer against a 152K word knowledge base — not generic ChatGPT "good answer!" feedback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based interviews&lt;/strong&gt; that simulate the full loop: Junior Developer (0-1 yrs) through Principal Engineer (10+ yrs) with appropriate topics and difficulty&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Study Mode&lt;/strong&gt; to read questions with ideal answers at your own pace&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress tracking&lt;/strong&gt; per topic showing exactly where you're weak&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Architecture
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting for developers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RAG (Retrieval Augmented Generation) Pipeline:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wrote 18 markdown files totaling 152,000 words — covering everything from HashMap internals to System Design HLDs. These get chunked into ~500 token segments, embedded using OpenAI's text-embedding-3-small, and stored in PostgreSQL with pgvector using an HNSW index.&lt;/p&gt;

&lt;p&gt;When a user submits an answer, the app:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Retrieves the top 5 most relevant knowledge chunks via cosine similarity&lt;/li&gt;
&lt;li&gt;Sends the question + user's answer + retrieved chunks to Claude Haiku&lt;/li&gt;
&lt;li&gt;Claude evaluates the answer against the real knowledge base content&lt;/li&gt;
&lt;li&gt;Returns a score (0-10) with specific feedback, strengths, and areas to improve&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is why the evaluation actually catches wrong answers — it has real content to compare against, not just vibes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend: Spring Boot 3.x, Java 25&lt;/li&gt;
&lt;li&gt;Database: PostgreSQL + pgvector (vector similarity search)&lt;/li&gt;
&lt;li&gt;AI: Claude Haiku (evaluation) + OpenAI embeddings (RAG)&lt;/li&gt;
&lt;li&gt;Frontend: React + Vite (web), Expo/React Native (mobile)&lt;/li&gt;
&lt;li&gt;Hosting: Railway (backend) + Vercel (web)&lt;/li&gt;
&lt;li&gt;Payment: Razorpay&lt;/li&gt;
&lt;li&gt;Auth: JWT + bcrypt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cost Optimization Journey:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The original evaluation prompt was 5,764 tokens per call — costing ~$0.027 per evaluation. After trimming to 1,266 tokens (removing verbose instructions, keeping only the scoring rubric + one example), cost dropped to ~$0.008 per evaluation. A 74% reduction with zero quality loss — scores matched within ±1 point across all test cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Question Bank
&lt;/h2&gt;

&lt;p&gt;2,358 questions, each tagged with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Topic (16 topics matching the 18 KB files)&lt;/li&gt;
&lt;li&gt;Subtopic (collections/map, spring_boot/security, etc.)&lt;/li&gt;
&lt;li&gt;Difficulty (beginner, intermediate, advanced, expert)&lt;/li&gt;
&lt;li&gt;Type (theory, scenario, coding)&lt;/li&gt;
&lt;li&gt;Stored ideal answer (for Study Mode)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The behavioral/HR answers were the hardest to get right. First version sounded like a textbook: "The candidate should demonstrate leadership by..." — nobody talks like that in an interview. Rewrote every behavioral answer in first-person conversational tone with specific tech examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  Role-Based Interviews
&lt;/h2&gt;

&lt;p&gt;This is the feature I'm most proud of. You pick a role:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Junior Developer (0-1 yrs):&lt;/strong&gt; 2 rounds — basic Core Java + HR. Beginner difficulty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSE (3-5 yrs):&lt;/strong&gt; 4 rounds — Advanced Core Java, Spring Boot + Microservices, System Design LLD, Behavioral. Advanced difficulty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution Architect (8-12 yrs):&lt;/strong&gt; 4 rounds — HLD deep, distributed systems architecture, technical leadership, executive behavioral. Expert difficulty.&lt;/p&gt;

&lt;p&gt;Each role simulates what that actual interview feels like at Indian IT companies and global enterprises. Per-round scoring at the end tells you exactly which round you'd struggle in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Process
&lt;/h2&gt;

&lt;p&gt;The entire app was built using Claude Code as the development agent. I wrote 23 spec documents, and Claude Code executed them one by one — writing all the backend code, frontend components, database migrations, and tests.&lt;/p&gt;

&lt;p&gt;I directed the architecture. The AI wrote the code. I tested and reviewed.&lt;/p&gt;

&lt;p&gt;Total build time: ~10 days from first spec to production deployment.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RAG evaluation quality depends entirely on the knowledge base quality.&lt;/strong&gt; Garbage KB = garbage evaluation. I spent as much time writing the 152K word knowledge base as building the app itself.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prompt trimming is free money.&lt;/strong&gt; Cutting the system prompt from 5,764 to 1,266 tokens saved 74% on every API call with identical output quality. Most AI prompts are 3-5x longer than they need to be.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Behavioral answers are harder than technical answers.&lt;/strong&gt; Getting AI-generated answers to sound like a real person talking — not a corporate handbook — took multiple rewrites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test with real data, not mocks.&lt;/strong&gt; The QA process ran 200+ test cases including full role-based interviews across all 6 roles. Found bugs that unit tests never would have caught — like session state bleeding between study and mock modes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;The app is live and free to try:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Web:&lt;/strong&gt; &lt;a href="https://skillround-web.vercel.app" rel="noopener noreferrer"&gt;https://skillround-web.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free tier: 10 study sessions/month + 3 mock rounds/month. No credit card needed.&lt;/p&gt;

&lt;p&gt;Currently Java/Spring Boot only. Python and JavaScript stacks coming next.&lt;/p&gt;

&lt;p&gt;I'd love feedback — what's missing? What would make you actually use this for your next interview?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you're curious about the technical details of the RAG pipeline or the cost optimization, ask in the comments — happy to go deeper on any part of the architecture.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>java</category>
      <category>springboot</category>
    </item>
  </channel>
</rss>
