A full-stack application for HR professionals to analyze CVs/resumes with ATS (Applicant Tracking System) scoring and AI-powered insights.
- π CV Upload Support: PDF, DOC, DOCX files up to 5MB
- π ATS Scoring: Comprehensive scoring based on:
- Contact information completeness
- Skills section presence
- Work experience documentation
- Education details
- Keyword matching with job descriptions
- Document formatting and structure
- π€ AI Analysis: Powered by Google's Gemini 2.0 Flash for detailed feedback
- π Job Comparison: Compare CVs against specific job descriptions
- π» Professional UI: Clean, responsive design for HR workflows
- Node.js with Express
- Google Generative AI (Gemini 2.0 Flash)
- PDF parsing with pdf-parse
- Word document parsing with mammoth
- File upload handling with multer
- Vanilla HTML, CSS, JavaScript
- Responsive design
- Font Awesome icons
- Modern gradient UI
- Node.js (v14 or higher)
- Google AI API key (Gemini)
- Navigate to the backend directory:
cd backend- Install dependencies:
npm install-
Configure environment variables:
- Open
.envfile - Replace
your_gemini_api_key_herewith your actual Google AI API key - Get your API key from: https://makersuite.google.com/app/apikey
- Open
-
Start the server:
npm run devThe backend will run on http://localhost:3000
- Navigate to the frontend directory:
cd frontend- Serve the frontend files using a local server:
- Using Python:
python -m http.server 8080 - Using Node.js:
npx serve . - Or open
index.htmldirectly in your browser
- Using Python:
The frontend will be available at http://localhost:8080 (or your chosen port)
-
π€ Upload CV: Select or drag-and-drop a CV file (PDF, DOC, DOCX)
-
βοΈ Choose Analysis Type:
- Basic Analysis: General ATS scoring and AI feedback
- Job Comparison: Compare CV against a specific job description
-
π View Results:
- ATS score out of 100 with grade (Excellent/Good/Fair/Poor)
- Detailed breakdown by category
- AI-powered analysis and recommendations
Analyze a CV file and return ATS score with AI insights.
Request: Multipart form data with CV file Response:
{
"success": true,
"data": {
"fileName": "resume.pdf",
"atsScore": {
"totalScore": 85,
"grade": "Excellent",
"breakdown": { ... }
},
"aiAnalysis": "Detailed AI feedback...",
"timestamp": "2024-01-01T00:00:00.000Z"
}
}Compare a CV against a job description.
Request: Multipart form data with CV file and job description Response: Similar to analyze endpoint with comparison analysis
- Contact Information (20 points): Email and phone number presence
- Skills Section (25 points): Dedicated skills or competencies section
- Work Experience (25 points): Employment history documentation
- Education (15 points): Educational background details
- Keyword Matching (10 points): Relevance to job description (when provided)
- Formatting (5 points): Document structure and readability
- File type validation (PDF, DOC, DOCX only)
- File size limits (5MB maximum)
- Automatic file cleanup after processing
- Input sanitization and error handling
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the ISC License.
For issues or questions, please create an issue in the repository or contact the development team.
