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)
Gemini ์๋ต์ ์์ ๋ฌธ์ด ์๋๋ผ JSON ๊ณ์ฝ์ผ๋ก ๋ค๋ฃจ๊ณ , ๋ผ๋ฒจ๋ resume/JD ๊ตฌ์ญ๊ณผ fallback parser๊น์ง ๋ ์ ์ด ์ ํ ์์ ์ฑ์ ํต์ฌ์ผ๋ก ๋ณด์ ๋๋ค. ๋ค์ ๋จ๊ณ์ mock interview์์๋ ์ง๋ฌธ๋ง ์์ฑํ๊ธฐ๋ณด๋ค ๋ต๋ณ ๊ทผ๊ฑฐ์ ํ๊ฐ ๊ธฐ์ค๋ ๊ตฌ์กฐํํด ์ ์ฅํ๋ฉด ์ฌํ์ฑ๊ณผ ํผ๋๋ฐฑ ํ์ง์ ํจ๊ป ๋์ผ ์ ์๊ฒ ๋ค์.