ATS Resume Analyzer is a modern web application designed to help job seekers optimize their resumes for Applicant Tracking Systems (ATS). The application parses resumes (PDFs), compares them against specific Job Descriptions (JD), calculates compatibility scores, highlights matching and missing keywords/skills, and provides AI-driven suggestions to improve resume visibility.
- 🔐 Secure Authentication: User signup and login utilizing JWT (JSON Web Tokens) and bcrypt password hashing.
- 📄 PDF Parsing: Local client-side and server-side PDF parsing to extract clean resume text.
- 🤖 Gemini AI Integration: Leverages the Google Gemini API (
gemini-2.5-flash) to deliver intelligent suggestions and deep skill gap analysis. - 📉 Local Fallback Analyzer: Features a built-in regex-based keyword matching algorithm as a fallback if the Gemini API key is not configured.
- 📊 ATS Compatibility Scoring: Displays a color-coded percentage score based on matching skill keywords.
- 🗃️ Dashboard History: Users can track, view, and manage their previously uploaded and analyzed resumes.
- Framework: React 19 (via Vite)
- Routing: React Router v7
- Styling: Vanilla CSS (Modern, responsive grid & flexbox design)
- Utility:
pdfjs-distfor client-side PDF handling,jspdf
- Runtime: Node.js
- Framework: Express
- Database: MongoDB with Mongoose ORM
- Authentication: JSON Web Tokens (JWT) & BcryptJS
- File Upload: Multer middleware
- PDF Text Extraction:
pdfjs-dist
ATS-Analyzer/
├── client/ # React Frontend (Vite)
│ ├── src/
│ │ ├── assets/ # Images & SVGs
│ │ ├── components/ # Page & reusable components (Login, Register, Dashboard, Navbar, etc.)
│ │ ├── utils/ # Client-side PDF reader utilities
│ │ ├── App.jsx # Core React Router routing
│ │ └── main.jsx # App entry point
│ ├── package.json
│ └── vite.config.js
│
├── server/ # Node.js Express Backend
│ ├── controllers/ # Auth and Resume request handlers
│ ├── middleware/ # Auth security guard & Multer setup
│ ├── models/ # Mongoose database schemas (User, Resume)
│ ├── routes/ # Express API endpoints
│ ├── utils/ # AI analysis logic & local keyword matchers
│ ├── server.js # Backend entry point
│ └── package.json
│
├── .gitignore # Global git ignore file
└── README.md # Project documentation
Ensure you have the following installed:
Follow these steps to get a local copy up and running:
git clone https://github.com/krishnamnamithaa/ATS-Analyzer.git
cd ATS-AnalyzerNavigate to the server/ directory:
cd server
npm installCreate a .env file in the server/ folder and add the following keys:
PORT=5000
MONGO_URI=mongodb://localhost:27017/ats-analyzer
JWT_SECRET=your_super_secret_jwt_secret_key_here
GEMINI_API_KEY=your_google_gemini_api_key_here💡 Note: If
GEMINI_API_KEYis left blank, the application will automatically fallback to the local keyword matching engine.
Start the backend server in development mode:
npm run devThe server will start on http://localhost:5000.
Navigate to the client/ directory from the root:
cd client
npm installStart the Vite development server:
npm run devThe client application will start running, usually at http://localhost:5173.
This project is licensed under the ISC License.