chrisandrei commited on
Commit
5658df8
·
verified ·
1 Parent(s): 4561311

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +66 -86
README.md CHANGED
@@ -11,89 +11,69 @@ license: apache-2.0
11
  short_description: Generative AI
12
  ---
13
 
14
- # Software Requirements Specification (SRS)
15
-
16
- ## 1. [Introduction](#introduction)
17
- ### 1.1 [Purpose](#purpose)
18
- The purpose of this document is to define the functional and non-functional requirements for a Generative AI HR Screening Software tool. This tool will streamline the resume screening process by using AI to match resumes with job descriptions, ensuring HR employees can identify the best candidates efficiently.
19
-
20
- ### 1.2 [Scope](#scope)
21
- The software will allow HR employees to upload multiple resumes in PDF format and input a job description. Using AI models and vector search, the tool will identify and rank the resumes that most closely match the provided job description. The system will leverage Python, Streamlit, OpenAI models, and the Pinecone vector database to deliver a user-friendly experience with high precision and responsiveness.
22
-
23
- ### 1.3 [Users and Use Case](#users-and-use-case)
24
- - **Primary Users:** HR employees.
25
- - **Use Case:** HR employees upload resumes and a job description, and the software outputs the top matching resumes ranked by relevance.
26
-
27
- ## 2. [Functional Requirements](#functional-requirements)
28
- ### 2.1 [Input Requirements](#input-requirements)
29
- - The system must accept multiple resumes in PDF format.
30
- - The system must accept a job description as plain text or a PDF.
31
-
32
- ### 2.2 [Processing Requirements](#processing-requirements)
33
- - The system must parse the resumes and job description into textual data.
34
- - The system must encode the textual data using embeddings via OpenAI models.
35
- - The system must store and query embeddings using Pinecone's vector database.
36
- - The system must rank resumes based on their similarity to the job description using cosine similarity or equivalent.
37
-
38
- ### 2.3 [Output Requirements](#output-requirements)
39
- - The system must display a ranked list of the top-matching resumes.
40
- - Each result must include:
41
- - Candidate's name (if extracted from the resume).
42
- - A similarity score.
43
- - A brief summary of the candidate's relevant skills or experience (if extractable).
44
-
45
- ### 2.4 [User Interface (UI) Requirements](#user-interface-ui-requirements)
46
- - The UI must allow HR employees to:
47
- - Upload resumes in bulk (drag-and-drop functionality preferred).
48
- - Input or upload the job description.
49
- - View results in an easy-to-read, visually appealing format (e.g., ranked table or cards).
50
- - Export results as a CSV or PDF.
51
- - The UI must be responsive and intuitive, designed with HR employees in mind.
52
-
53
- ## 3. [Non-Functional Requirements](#non-functional-requirements)
54
- ### 3.1 [Performance](#performance)
55
- - The system must process and rank up to 50 resumes in under 30 seconds.
56
- - The system must handle job descriptions of up to 500 words.
57
-
58
- ### 3.2 [Scalability](#scalability)
59
- - The system must scale to accommodate 100 concurrent users without performance degradation.
60
-
61
- ### 3.3 [Usability](#usability)
62
- - The system must provide a minimal learning curve for HR employees.
63
- - The UI must adhere to modern design principles, ensuring aesthetic appeal and ease of use.
64
-
65
- ### 3.4 [Security](#security)
66
- - Resumes and job descriptions must be encrypted during upload and processing.
67
- - User data must comply with GDPR and other relevant data protection regulations.
68
-
69
- ### 3.5 [Reliability](#reliability)
70
- - The system must maintain a 99% uptime during business hours (8 AM - 6 PM).
71
-
72
- ## 4. [System Architecture](#system-architecture)
73
- ### 4.1 [Tools and Frameworks](#tools-and-frameworks)
74
- - **Backend:** Python for processing resumes and job descriptions.
75
- - **Frontend:** Streamlit for building an interactive and user-friendly UI.
76
- - **AI Models:** OpenAI for generating embeddings and ranking results.
77
- - **Database:** Pinecone vector database for similarity search and storage.
78
-
79
- ### 4.2 [Workflow](#workflow)
80
- #### Input Processing:
81
- 1. HR employees upload resumes and job descriptions.
82
- 2. Resumes are parsed, and embeddings are generated.
83
-
84
- #### Storage and Matching:
85
- 1. Embeddings are stored in Pinecone and queried using the job description embedding.
86
-
87
- #### Output Generation:
88
- 1. Top resumes are retrieved, ranked, and displayed to the user.
89
-
90
- ## 5. [Constraints](#constraints)
91
- - The system must only process resumes and job descriptions in English.
92
- - OpenAI models must be used under their rate limits and API constraints.
93
- - Pinecone's database usage must stay within the allocated quota.
94
-
95
- ## 6. [Future Enhancements](#future-enhancements)
96
- - Integration with Applicant Tracking Systems (ATS).
97
- - Support for multi-language resumes and job descriptions.
98
- - Additional ranking metrics (e.g., based on specific skills or certifications).
99
- - Custom filters for HR employees (e.g., years of experience, education level).
 
11
  short_description: Generative AI
12
  ---
13
 
14
+ <h1 align="center">HR Screening Tool</h1>
15
+
16
+ ## Table of Contents
17
+
18
+ - [Installation](#installation)
19
+ - [Local Installation](#local-installation)
20
+ - [HuggingFace Spaces](#huggingface-spaces)
21
+ - [Program Flow](#program-flow)
22
+ - [Software Design Document](#software-design-document)
23
+
24
+
25
+
26
+ <a name="installation"></a>
27
+ ## Installation
28
+
29
+ Installation can be done locally or have an instance hosted in your own [HuggingFace space](https://huggingface.co/spaces).
30
+
31
+ <a name="local-installation"></a>
32
+ ### Local installation
33
+
34
+ Requirements: Python, Streamlit
35
+
36
+ 1. Download this repository as ZIP
37
+ 2. Extract the ZIP into a folder.
38
+ 3. Open your terminal and run the following command with the working directory as the extract folder.
39
+
40
+ ```bash
41
+ pip install -r requirements.txt
42
+ ```
43
+ 4. Wait for the installation of dependencies to complete.
44
+ 5. Make an `.env` file and write the corresponding needed API keys. Replace the placeholders `<key>` (inclusive). For example:
45
+
46
+ ```env
47
+ OPENAI_API_KEY = <OpenAI API key>
48
+ PINECONE_API_KEY = <Pinecone API key>
49
+ ```
50
+ 6. Run the application using the following command
51
+ ```bash
52
+ streamlit run app.py
53
+ ```
54
+
55
+ <a name="huggingface-spaces"></a>
56
+ ### HuggingFace Spaces
57
+
58
+ Requirements: HuggingFace account (Free Tier)
59
+
60
+ You can either use my space as is and just skip to **Step 2**.
61
+
62
+ 1. Clone my repository
63
+
64
+ ![](https://github.com/iragca/HR-Screening-Tool/blob/main/docs/brave_vU07N8VQ11.png?raw=true)
65
+
66
+
67
+ 2. Set your API keys by navigating to Settings > Variable and Secrets
68
+
69
+ ![](https://github.com/iragca/HR-Screening-Tool/blob/main/docs/brave_6lBnGhWTE4.png?raw=true)
70
+
71
+ ![](https://github.com/iragca/HR-Screening-Tool/blob/main/docs/brave_jKUWhHLjcF.png?raw=true)
72
+
73
+ 3. Set your API keys ('OPENAI_API_KEY', 'PINECONE_API_KEY') with their value by replacing the `<placeholder>' (inclusive.)
74
+
75
+ ![](https://github.com/iragca/HR-Screening-Tool/blob/main/docs/brave_nBeqDrwLnQ.png?raw=true)
76
+
77
+ 4. You can now start the using the app by clicking on the 'App' button on the main repository page.
78
+
79
+ ![](https://github.com/iragca/HR-Screening-Tool/blob/main/docs/brave_d30L5ZBh04.png?raw=true)