Match Your Resume to Any Job Description Using AI โ Full Stack Guide


Struggling to tailor your resume for specific job postings? I built an AI-powered Resume Optimizer that helps you analyze your resume against any job description using Google Gemini. Here's how I built it using the MEAN stack (MongoDB-free) with Angular standalone components, Tailwind CSS, and Googleโs Generative AI API.
๐ก Why I Built This
Every job role has unique expectations, but most resumes stay generic. I wanted to automate the process of matching resumes with job descriptions, highlighting what's missing, and suggesting improvementsโall with the power of AI.
๐ Tech Stack
Layer | Stack |
Frontend | Angular 20, Standalone Components, Tailwind CSS, Signals, Reactive Forms |
Backend | Node.js, Express, Multer |
AI Engine | Google Gemini via @google/genai |
Parsing | pdf-parse and mammoth for file extraction |
๐ง Features
โ Upload Resume (PDF or DOCX)
โ Upload or Paste Job Description
โ Get AI analysis:
Match Score
Missing Keywords
Tailored Suggestions
๐ Dark Mode Support
๐ฑ Fully Responsive UI
๐งฉ System Architecture
[Angular UI] --> [Express API] --> [Gemini API]
|
[PDF/DOCX Parser]
๐ฅ๏ธ Frontend Highlights
Standalone Angular Components
Signals for local state (
resumeFile
,jdFile
, etc.)Native control flow (
@if
,@else
) over structural directivesReactive Forms for input validation
Markdown rendering using
ngx-markdown
for AI response formatting
const form = fb.nonNullable.group({ jdText: '' });
const resumeFile = signal<File | null>(null);
const result = signal<string | null>(null);
๐ง Backend Highlights
File parsing using
pdf-parse
(PDF) andmammoth
(DOCX)Gemini prompt format:
Compare the following resume and job description. Provide:
- Match score (0-100)
- Missing keywords
- Suggested improvements
- AI integration via
@google/genai
:
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({ model: 'gemini-2.5-flash', contents: prompt });
๐ How to Run It Locally
๐ Clone the Project
git clone https://github.com/manthanank/resume-optimizer.git
cd resume-optimizer
โ๏ธ Backend Setup
cd backend
npm install
cp .env.example .env
# Add your GEMINI_API_KEY
npm run dev
๐ Frontend Setup
cd frontend
npm install
ng serve
๐ Hosted Live (Demo)
Frontend: https://resume-optimizer-app.vercel.app
Backend API: https://resume-optimizer-api.vercel.app
๐ฆ Future Improvements
๐ Auth for saving resume history
๐ Editable resume templates
๐ PDF download of feedback
๐ Multi-language support
๐ License
MIT โ Free to use and modify. Contributions welcome!
โจ Final Thoughts
This project taught me how to combine real-time file processing with AI content generation in a full-stack TypeScript environment. Whether you're building something for HR, job seekers, or just love AIโthis app is a perfect side project to learn from.
๐ Want to try it?
Subscribe to my newsletter
Read articles from Manthan Ankolekar directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Manthan Ankolekar
Manthan Ankolekar
I am an intermediate learner, full-stack developer, and blogger.......