The ATS is an intelligent system designed to analyze and compare resumes against job descriptions using state-of-the-art natural language processing and mechanical matching techniques. It extracts key information, identifies similarities, and highlights gaps to streamline the hiring process.
Leverages Large Language Models (LLMs) to identify textual similarities between job description keywords and resume keywords. Each match comes with a confidence level, allowing users to evaluate the strength of the match and set thresholds for displaying results based on confidence levels in future iterations.
Example: "Visual Studio ↔ certifications"
(Confidence: 0.50) → Likely ignored. "Product Roadmap Development ↔ product roadmap"
(Confidence: 0.88) → Likely accepted.
- From Resumes: Extracts and identifies important keywords from the resume, sorting them alphabetically for easy readability.
- From Job Descriptions: Extracts key terms from the job description, sorting them alphabetically for consistency and easy comparison.
Performs a 100% similarity match between keywords from resumes and job descriptions. This is a case-sensitive process, ensuring matches respect upper- and lowercase distinctions, providing a reliable list of exactly matched keywords.
Identifies missing keywords by calculating the difference between the extracted keywords from the job description and the mechanically matched keyword set. Highlights gaps in the resume, providing actionable insights for optimization or further evaluation.
- Adjustable Confidence Thresholds: Allow users to filter soft matches by confidence level.
- Support for Additional Document Types: Extend beyond resumes to include cover letters, investor pitches, and other structured documents.
- Advanced Paragraph Evaluation: Identify areas of weakness, such as unclear phrasing or misalignment with the job description, and suggest actionable improvements. This feature will also refine bullet points or transform them into well-structured paragraphs by incorporating relevant keywords.
- Advanced Keyword Insights: Integrate keyword importance scores to prioritize matches.
- Visualization Tools: Add graphical displays of match and gap analysis.
The project is organized into two main components: Backend: Contains the logic for keyword extraction, soft matching, and mechanical matching. Located in the /backend/
directory. Frontend: Provides a user-friendly interface for uploading resumes, adding job descriptions, and viewing results. Located in the root directory.
Ensure the following tools are installed: Node.js (v14 or later), npm (Node Package Manager).
Clone the repository:
git clone https://github.com/acenji/ats.git
cd ats
cd backend
npm install
cd ..
npm install
Clone (or create) the .env.example file in the root folder and rename it to .env.local: REACT_APP_API_URL=http://localhost:5001
Clone (or create) the .env.example file inside the backend folder and rename it to .env.local: OPENAI_API_KEY=TYPE-YOUR-API_KEY-HERE_WITHOUT-QUOTES PORT=5001
Navigate to the backend/ directory and start the server:
cd backend
node server.js
The backend will run at http://localhost:5001 by default.
From the root directory, start the React app:
npm start
The frontend will open at http://localhost:3000 if you followed the .env.example setup.
- Supported file formats: PDF, DOC, DOCX.
- Upload a resume in one of the supported file types.
After the validation and verification completes and the file is checked-marked as OK, add job description: either as a file in the same format as the resume or copy/paste as a plain text.
During a live session, several segments will be populated with data. The current segments include: Soft Matches with Confidence Levels (0.00 - 1.00) Simply matching keywords mechanically is not enough to determine if a resume is a strong fit. Soft Matching is an AI-powered, human-like converter that analyzes keywords from the resume, aiming to match them linguistically, preserving intent and context. Users can set a threshold level to ignore matches below a certain confidence score.
Example:
-
"Visual Studio ↔ certifications" (Confidence: 0.50) → Likely ignored.
-
"Product Roadmap Development ↔ product roadmap" (Confidence: 0.88) → Likely accepted.
-
Keywords Extracted from Resume (Alphabetical) AI extracts relevant keywords directly from the resume.
-
Keywords Extracted from Job Description (Alphabetical) AI extracts key terms from the job description.
-
Matching Keywords (Alphabetical) This section mechanically identifies overlapping keywords between the extracted resume and job description keywords (case insensitive).
-
Missing Keywords (Alphabetical) This section highlights keywords found in the job description but absent from the resume, helping identify potential gaps.
Use the insights to refine the resume.
Contributing
We welcome contributions! Here’s how you can help:
Fork the repository. Create a feature branch: git checkout -b feature-name Commit your changes: git commit -m "Description of changes" Push the branch and create a pull request.
- Frontend: React.js (JavaScript library for building user interfaces)
- Backend: Node.js (JavaScript runtime environment)
- Package Manager: npm (Node Package Manager)
License
This project is open-source and licensed under the MIT License. See the LICENSE file for details.