I built an AI tool that tells you exactly what's missing from your resume before you apply

Every time I applied to a job, I'd stare at a JD and a resume side by side, trying to guess which keywords mattered and which gaps would actually come up in the interview. I built CareerReady to do that comparison for me, and then let me practice the exact gaps it found. Live: career-ready.site Repo: GiottoPham/dev-career-ready / dev-career-ready CareerReady Biết mình thiếu gì. Luyện đúng chỗ. Tự tin phỏng vấn. Know your gaps. Practice right. Interview with confidence. Live: career-ready.site Ca
Every time I applied to a job, I'd stare at a JD and a resume side by side, trying to guess which keywords mattered and which gaps would actually come up in the interview. I built CareerReady to do that comparison for me, and then let me practice the exact gaps it found.
Live: career-ready.site
Repo: GiottoPham/dev-career-ready
CareerReady
Biết mình thiếu gì. Luyện đúng chỗ. Tự tin phỏng vấn. Know your gaps. Practice right. Interview with confidence.
Live: career-ready.site
CareerReady helps developers prepare for job interviews. Paste a job description and upload your CV — the AI analyzes your skills against the JD, surfaces matched/missing skills with CV quick tips, and generates a mock interview covering the gaps.
Modules
| Module | Description |
|---|---|
| Skill Analyzer | Paste or upload a JD (PDF/DOCX) + upload CV (PDF) or enter skills manually. AI outputs matched skills, missing skills (with priority), and CV quick tips. |
| Mock Interview | Two modes — Project Deep Dive and Technical Quiz — generated from your CV/JD analysis. Answer via text or voice; AI scores the session and gives feedback with a full transcript. |
| Dashboard | Recent analyses, mock interview history, and score tracking across sessions. |
Note: there is currently no learning-roadmap generation feature — the Skill Analyzer surfaces gaps…
What it does
- Paste a job description (or upload PDF/DOCX) and upload your CV (PDF).
- AI compares the two and returns matched skills, missing skills ranked by priority, and quick CV tips.
- From there you jump straight into a mock interview built from the gaps it found — either a Project Deep Dive or a Technical Quiz, answered by text or voice.
- Everything lands on a dashboard: past analyses, interview history, and score trends over time.
Why this design
The interesting part wasn't the AI call, it was making the waiting feel honest. The analyze pipeline is a few real steps — parsing the CV/JD, validating the JD is actually a job description (so someone can't paste garbage and burn a Gemini call), uploading files, then the actual skill-gap analysis — and I stream each step's status to the frontend over SSE instead of showing a generic spinner. If step 1 fails, the user sees that step fail, not a blank error.
Stack
- Frontend: Vite + TanStack Router (file-based routing), React 19, Tailwind v4, Base UI primitives
- Backend: Bun + Express 5, Drizzle ORM over Postgres (Supabase)
- AI: Google Gemini for the skill-gap analysis and interview question generation
-
Deploy: Cloudflare Pages (frontend) + Railway (API), with a CF Pages Function proxying
/api/*so auth cookies stay same-origin across the two hosts
Try it
It's free to use at career-ready.site. I'd genuinely appreciate feedback, especially on whether the missing-skills output feels accurate, and whether the mock interview questions feel like something you'd actually get asked.
If you want to poke at the code, it's open on GitHub.




