DEV Community

Lalit Prajapat
Lalit Prajapat

Posted on

Building PrepAI An AI-Powered Interview Prep Platform with the Gemini API

Why I built this

Every time I applied for an internship, I did the same tedious thing: read the job description, guess what interview questions might come up, and google "common interview questions for [role]" โ€” hoping something would stick.

I wanted something smarter. Something that actually looked at my resume and the specific job description, and told me exactly where I stood and what to prepare.

That's how PrepAI was born โ€” an AI-powered career assistant that analyzes your resume against a job description and generates a match score, a skill-gap breakdown, personalized interview questions, and a 7-day preparation roadmap.

๐Ÿ”— Live: prep-ai-navy-nine.vercel.app ๐Ÿ’ป Code: github.com/Lalitprajapat47

What it does
Upload your resume + paste a job description
PrepAI extracts skills, experience, and keywords from both
It generates:
An ATS-style match score
A skill-gap analysis (what the job wants vs. what you have)
Personalized interview questions based on the actual role
A 7-day roadmap to close the gaps before the interview
Tech stack
Frontend: React.js
Backend: Node.js + Express.js
Database: MongoDB
AI: Google Gemini API for resume/JD analysis and question generation

Classic MERN, with Gemini doing the heavy lifting on the reasoning side.

The interesting part: prompting Gemini reliably

The hardest part wasn't calling the API โ€” it was getting consistent, structured output back every time. Interview prep needs predictable JSON (question lists, scores, roadmaps), not freeform paragraphs that break your UI.

What helped:

Being explicit in the prompt about the exact JSON shape I wanted back
Feeding in resume text and JD text as clearly labeled sections, not just mashed together
Adding a fallback parse step on the backend in case Gemini added extra text around the JSON

This taught me a lot about prompt engineering as an actual engineering discipline โ€” not just "ask nicely," but treating the prompt like an API contract.

What I learned
How to design a backend that talks to an LLM API and still behaves like a normal REST API to the frontend
Handling unpredictable AI output gracefully (retries, validation, fallback states)
Turning a personal frustration (bad interview prep) into an actual shipped product
What's next
Adding support for multiple resume versions
Tracking prep progress over the 7-day roadmap
Mock interview mode with follow-up questions based on your answers

If you're prepping for interviews, give it a try, and I'd genuinely love feedback: prep-ai-navy-nine.vercel.app

Happy to answer any questions about the Gemini integration or the MERN setup in the comments ๐Ÿ‘‡

Top comments (1)

Collapse
 
officialmailkr profile image
์˜คํ”ผ์…œ๋ฉ”์ผ

Gemini ์‘๋‹ต์„ ์ž์œ ๋ฌธ์ด ์•„๋‹ˆ๋ผ JSON ๊ณ„์•ฝ์œผ๋กœ ๋‹ค๋ฃจ๊ณ , ๋ผ๋ฒจ๋œ resume/JD ๊ตฌ์—ญ๊ณผ fallback parser๊นŒ์ง€ ๋‘” ์ ์ด ์ œํ’ˆ ์•ˆ์ •์„ฑ์˜ ํ•ต์‹ฌ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„์˜ mock interview์—์„œ๋Š” ์งˆ๋ฌธ๋งŒ ์ƒ์„ฑํ•˜๊ธฐ๋ณด๋‹ค ๋‹ต๋ณ€ ๊ทผ๊ฑฐ์™€ ํ‰๊ฐ€ ๊ธฐ์ค€๋„ ๊ตฌ์กฐํ™”ํ•ด ์ €์žฅํ•˜๋ฉด ์žฌํ˜„์„ฑ๊ณผ ํ”ผ๋“œ๋ฐฑ ํ’ˆ์งˆ์„ ํ•จ๊ป˜ ๋†’์ผ ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”.