Resume Lens
ResumeLens is an AI-powered resume screening and job matching tool designed to automate and enhance the hiring process. It extracts and analyzes resumes and job descriptions (JDs), ranks candidates based on skills and experience, and integrates seamlessly with the Frappe…
- Author: AssimilateFrappe
- Repository: https://github.com/AssimilateFrappe/resume_lens
- GitHub stars: 0
- Forks: 1
- License: GPL-3.0
- Category: Integrations
- Maintenance: Actively Maintained
- Frappe versions: develop
Install Resume Lens
bench get-app https://github.com/AssimilateFrappe/resume_lens
Add the Frappe Gems badge to your README
Maintain Resume Lens? Paste this into your README:
[](https://frappegems.com/gems/apps/AssimilateFrappe/resume_lens)
About Resume Lens
# ResumeLens - AI-Powered Resume Screening & Job Matching "Shortlist candidates"
### 📌 Repository: [GitHub - ResumeLens](https://github.com/AssimilateFrappe/resume_lens)
### 📌 Technologies: Python (Frappe), React (Frontend)
### 📌 License: MIT
---
## 📖 Index
1. Introduction
2. System Requirements
3. Installation & Setup
4. Features Overview
5. API Documentation
6. Backend (Frappe) API Implementation
7. Frontend (React) Implementation
8. Security & Permissions
9. Performance Optimization
10. Error Handling & Debugging
11. Contributing
12. License
---
## 1. Introduction
ResumeLens is an AI-powered resume screening and job matching tool designed to automate and enhance the hiring process. It extracts and analyzes resumes and job descriptions (JDs), ranks candidates based on skills and experience, and integrates seamlessly with the Frappe framework for job applicant tracking.
### Key Features:
- ✅ AI-driven resume screening based on job descriptions.
- ✅ Secure document handling (resume upload, view & download).
- ✅ Automated candidate ranking using AI algorithms.
- ✅ Frappe integration for job & applicant management.
- ✅ React-based frontend for an intuitive user experience.
- ✅ Token-based authentication for secure resume access.
- ✅ User-friendly dashboard with resume analytics.
- ✅ Multi-language support for international recruitment.
- ✅ Customizable scoring algorithms to fit diverse hiring needs.
---
## 2. System Requirements
### Backend (Frappe Framework)
- Python 3.10+
- Frappe Framework 14+
- MariaDB 10.3+
- Redis (for caching and queue processing)
- Node.js 16+ (for Frappe assets)
- npm 7+
### Frontend (React)
- React 18+
- TypeScript (recommended)
- Node.js & npm
---
## 3. Installation & Setup
### 1️⃣ Clone the Repository
```bash
git clone https://github.com/AssimilateFrappe/resume_lens.git
cd resume_lens
```
### 2️⃣ Install Backend Dependencies
```bash
pip install -r requirements.txt
```
### 3️⃣ Setup & Install Frappe App
```bash
bench get-app resume_lens
bench install-app resume_lens
bench start
```
### 4️⃣ Frontend Setup (React)
Navigate to the frontend directory:
```bash
cd frontend
npm install
npm start
```
---
## 4. Features Overview
### 1️⃣ Resume & Job Description Parsing
- ✅ Extracts text from PDF, DOC, and DOCX resumes & job descriptions.
- ✅ Identifies required skills, experience levels, and key competencies.
- ✅ Supports multiple file formats with seamless parsing.
### 2️⃣ Secure File Handling
- ✅ Generates secure download/view URLs for resumes.
- ✅ Implements token-based authentication for access control.
- ✅ Ensures file type validation before processing.
- ✅ Encrypts stored resumes for added security.
### 3️⃣ AI-Driven Resume Screening & Matching
- ✅ Uses cosine similarity and NLP-based algorithms to score resumes.
- ✅ Filters candidates based on skills, experience range, and job requirements.
- ✅ Categorizes resumes into Perfect, Top, Good, Poor, & Not Good matches.
- ✅ Provides detailed analytics and reporting on candidate matching.
### 4️⃣ Job & Applicant Management (Frappe Integration)
- ✅ Fetches job openings & applicants from Frappe.
- ✅ Identifies open applications and retrieves relevant resumes.
- ✅ Automates shortlisting of top candidates based on AI scores.
- ✅ Enables recruiters to track hiring progress efficiently.
---
## 5. API Documentation
### 1️⃣ Process Resumes
- **Endpoint:** `/api/method/resume_lens.api.process_resumes`
- **Method:** `POST`
- **Description:** Parses job descriptions & resumes, evaluates them, and ranks candidates.
- **Request Parameters:**
```json
{
"job_title_select": "Software Engineer",
"jd_text": "Python, Django, REST API experience required"
}
```
- **Response Example:**
```json
{
"status": "success",
"Matched_Resumes": {
"PerfectMatched": [
{
"applicant_name": "John Doe",
"resume_name": "john_doe_resume.pdf",
"score": "85.5%",
"experience_years": 5,
"resume_skills": ["Python", "Django", "REST API"],
"view_url": "/api/method/resume_lens.api.view_matched_resume?token=xyz"
}
]
},
"jd_required_skills": ["Python", "Django", "REST API"]
}
```
### 2️⃣ Secure Resume Download
- **Endpoint:** `/api/method/resume_lens.api.download_matched_resume?token={token}`
- **Method:** `GET`
- **Description:** Securely downloads the matched resume using a token-based URL.
### 3️⃣ View Matched Resume
- **Endpoint:** `/api/method/resume_lens.api.view_matched_resume?token={token}`
- **Method:** `GET`
- **Description:** Securely serves a resume file for viewing.
---
## 6. Backend (Frappe) API Implementation
The Frappe backend handles resume parsing, job description processing, and secure file handling.
### ✅ Key Functions:
- `generate_download_token(filepath)` – Generates secure tokens for resume downloads.
- `get_secure_download_url(resume_url)` – Creates a secure download URL.
- `download_matched_resume(token)` – Serves a resume file for download.
- `process_resumes()` – Parses JDs & resumes, calculates matching scores, and ranks candidates.
---
## 7. Frontend (React) Implementation
### ✅ Key Features:
- Fetches job openings from the backend API.
- Allows users to upload job descriptions (text or file).
- Uploads resumes and submits them for processing.
- Displays ranked resumes based on AI scoring.
- Provides secure viewing & downloading of resumes.
---
## 8. Security & Permissions
- 🔹 Token-based security ensures that only authorized users can access resumes.
- 🔹 Access control mechanisms prevent unauthorized downloads and data leaks.
- 🔹 Whitelisted API methods enforce secure backend operations.
- 🔹 All resume processing is performed securely within the Frappe framework.
---
## 9. Performance Optimization
- ✅ Optimized resume parsing for faster processing.
- ✅ Implemented caching mechanisms for frequent queries.
- ✅ Asynchronous job processing for large-scale screening.
---
## 10. Error Handling & Debugging
- ✅ Implemented structured logging for backend events.
- ✅ Added detailed error messages for API responses.
- ✅ Exception handling for file upload and parsing errors.
---
## 11. Contributing
1️⃣ Fork the repository:
```bash
git clone https://github.com/AssimilateFrappe/resume_lens.git
```
2️⃣ Create a new feature branch:
```bash
git checkout -b feature-name
```
3️⃣ Commit your changes:
```bash
git commit -m "Added new feature"
```
4️⃣ Push to GitHub and open a pull request.
---
## 12. License
📜 **MIT License** – Open-source and free to use. Feel free to contribute and enhance ResumeLens!
Related Integrations apps for Frappe & ERPNext
- Insights — Open Source Business Intelligence Tool
- Raven — Simple, open source team messaging platform
- Frappe Whatsapp — WhatsApp cloud integration for frappe
- Frappe Assistant Core — Infrastructure that connects LLMs to ERPNext. Frappe Assistant Core works with the Model Context Protocol (MCP) to expose ERPNext functionality to any compatible Language Model
- Biometric Attendance Sync Tool — A simple tool for syncing Biometric Attendance data with your ERPNext server
- Frappe React Sdk — React hooks for Frappe
- Frappe Js Sdk — TypeScript/JavaScript library for Frappe REST API
- Mcp — Frappe MCP allows Frappe apps to function as MCP servers