Resume Tailor is a full‑stack AI‑assisted web application that helps users optimize their resumes against a specific job description. It analyzes resume content, extracts relevant technical keywords from the job description, identifies gaps, and generates context‑aware, professional resume suggestions using an LLM.
This project focuses on practical ATS optimization, clean backend design, and real‑world frontend–backend integration.
Recruiters and ATS systems often filter resumes based on keyword relevance rather than intent. Resume Tailor bridges this gap by:
- Identifying missing technical skills from a job reinforce job description
- Enhancing resume bullets without changing the candidate’s core experience
- Producing action‑oriented, concise, and ATS‑friendly resume lines
-
Upload or paste Resume and Job Description
-
Automatic extraction of technical keywords from JD
-
Line‑by‑line resume analysis
-
AI‑generated suggestions with:
- Original line
- Improved version
- Reason for change
-
Clean REST API architecture
-
CORS‑enabled for frontend integration
- Maintains a curated list of known technical skills
- Normalizes job description text
- Matches relevant skills using string containment
Why this approach?
- Lightweight
- Fast
- Transparent (easy to debug and extend)
Each resume bullet is:
-
Compared against extracted JD skills
-
Checked for missing keywords
-
Either:
- Returned unchanged (if fully aligned)
- Or rewritten with missing skills added naturally
-
Uses OpenAI Chat Completions API
-
Sends a structured prompt including:
- Original resume line
- Missing technical skills
-
Ensures output is:
- Concise
- Professional
- Action‑oriented
Why AI here?
- Rule‑based rewriting fails at natural language
- LLM ensures human‑like phrasing while preserving meaning
- React – component‑based UI
- Axios – API communication
- CSS Modules – scoped styling
- Java 17+
- Spring Boot – REST API framework
- Spring Web – controller & request handling
- Jackson – JSON serialization/deserialization
- Java HTTP Client – OpenAI API integration
- OpenAI API (Chat Completions)
- Secure API key handling via environment variables
src/main/java/com/example/resume_tailor
│
├── ResumeTailorApplication.java # Spring Boot entry point
├── ResumeController.java # REST API controller
├── ResumeRequest.java # Request DTO (resume + JD)
├── Suggestion.java # Response model
├── SuggestionService.java # Core business logic + AI integration
│
src/main/resources
│
└── application.properties
Request Body
{
"resume": [
"Built REST APIs using Spring Boot",
"Worked with databases"
],
"jd": "Looking for a Java developer with Spring Boot, REST APIs, and MySQL"
}Response
[
{
"original": "Built REST APIs using Spring Boot",
"suggested": "Developed RESTful APIs using Spring Boot and MySQL to support scalable backend services",
"reason": "Improved to include: mysql"
}
]- Clone the repository
git clone https://github.com/your-username/resume-tailor.git
cd resume-tailor/backend- Set OpenAI API Key
Linux / macOS
export OPENAI_API_KEY=your_api_key_hereWindows (PowerShell)
setx OPENAI_API_KEY "your_api_key_here"- Run Spring Boot
./mvnw spring-boot:runBackend will start at:
http://localhost:8080
cd frontend
npm install
npm startFrontend runs at:
http://localhost:3000
- OpenAI API key stored using environment variables
- No API keys exposed to frontend
- Backend handles all AI requests securely
- ATS score calculation
- Resume PDF parsing
- Skill weighting instead of binary matching
- User authentication
- Cloud deployment (AWS / GCP)
Bhumika Deshmukh B.Tech Student | Full‑Stack & Backend Enthusiast




