DEV Community

Cover image for I built an AI tool that tells you exactly what's missing from your resume before you apply
Khang Nguyen Pham
Khang Nguyen Pham

Posted on

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

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.

CareerReady landing page


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

  1. Paste a job description (or upload PDF/DOCX) and upload your CV (PDF).
  2. AI compares the two and returns matched skills, missing skills ranked by priority, and quick CV tips.
  3. 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.
  4. 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.

Top comments (0)