Skip to content

Commit a5a099c

Browse files
authored
Merge pull request #1 from AET-DevOps25/docs/initial-uml-backlog
Docs/initial uml backlog description The branch name should switch to template since next task.
2 parents 3b3a06b + 55a2723 commit a5a099c

File tree

4 files changed

+128
-18
lines changed

4 files changed

+128
-18
lines changed

README.md

Lines changed: 128 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,141 @@
33
## 1. Introduction
44

55
### 1.1 Who are the intended users?
6-
1. Our customers are the HR.
7-
2. Our users are the candidates who apply jobs.
6+
* Our customers are HR personnel.
7+
* Our users are candidates who apply for jobs.
88

99
### 1.2 What is the main functionality?
1010

11-
1. Filter resume with qualified by the job requirements or other requirements.
12-
2. Have a simple talk with the candidates and score them.
13-
3. Show the score board to HR.
11+
* Filter resumes to identify those qualified by job requirements or other criteria.
12+
* Conduct simple automated conversations with candidates and score them.
13+
* Show the scoreboard to HR personnel.
1414

15-
### 1.3 Describe some scenarios how your app will function?
15+
### 1.3 Describe some scenarios of how your app will function.
1616

17-
1. we pretend a IT company career website
18-
2. Candidates upload the resumes to website
19-
3. backend use LLM to filter it with the requirement of the target job
20-
4. after filtering, we let the AI HR to ask candidates with some basic information about their resumes or the related technology (May combine some tech doc from vector database). For example, ask question about how they understand the technology in the requirements or talk something about the project/experience in their resume.
21-
5. AI score them
22-
6. HR can see the scores list at the console page.
17+
* We simulate an IT company's career website.
18+
* Candidates upload their resumes to the website.
19+
* The backend uses an LLM to filter resumes against the requirements of the target job.
20+
* After filtering, the AI asks candidates for basic information about their resumes or related technologies (this may involve combining tech documents from a vector database). For example, it might ask questions about their understanding of the technologies listed in the job requirements or discuss projects/experiences detailed in their resume.
21+
* The AI scores the candidates.
22+
* HR personnel can see the list of scores on a console page.
2323

2424
### 1.4 How will you integrate GenAI meaningfully?
2525

26-
1. AI filter resume with job requirements
27-
2. AI score candidates by resume, chat history
26+
* AI filters resumes based on job requirements.
27+
* AI scores candidates based on their resumes and chat history.
2828

29-
## 2. Microservices
29+
## 2. System Description
3030

31-
1. User authorization service
32-
2. Resume filtering and scoring service
33-
3. AI-powered HR chatbot service
31+
This system is designed with a layered architecture, consisting of the following layers:
32+
33+
* **UI Layer**
34+
* Tech: React
35+
* Components: Candidate Portal, HR Dashboard
36+
* **Application Services Layer**
37+
* Tech: Spring Boot
38+
* Components: API Gateway, Job Management Service, Candidate Application Service, Candidate Assessment Service, LangChain GenAI Service
39+
* **Data Storage Layer**
40+
* Tech: PostgreSQL + pgvector
41+
* Details: PostgreSQL serves as the relational database for structured data, while pgvector provides vector database capabilities for RAG.
42+
* **External Services Layer**
43+
* Details: OpenAI API for LLM capabilities (specific model TBD).
44+
45+
### 2.1 Server: Spring Boot REST API
46+
47+
The backend is implemented using **Spring Boot**, exposing RESTful APIs to support both candidate and HR operations. It handles business logic, including:
48+
49+
* Job posting and management (via `Job Management Service`).
50+
* Candidate application processing (via `Candidate Application Service`).
51+
* Resume filtering, interview generation, and scoring (via `Candidate Assessment Service`).
52+
* Integration with external services, such as OpenAI, for GenAI tasks (via `LangChain GenAI Service`).
53+
54+
The `API Gateway` serves as the single entry point, routing requests from UI clients to the appropriate services.
55+
56+
### 2.2 Client: React Frontend
57+
58+
The system has two main user interfaces developed in **React**:
59+
60+
* **Candidate Portal**: Allows candidates to upload resumes and complete AI-based interviews.
61+
* **HR Dashboard**: Enables HR users to post jobs, view filtered resumes, see generated interview questions, and review ranked candidate lists.
62+
63+
All frontend components communicate with the backend via REST APIs.
64+
65+
### 2.3 GenAI Service: Python, LangChain Microservice
66+
67+
A separate microservice is developed in **Python**, using **LangChain** to orchestrate LLM tasks. This `LangChain GenAI Service` is responsible for:
68+
69+
* Filtering resumes against job requirements and scoring them.
70+
* Generating interview questions based on job requirements, candidate resumes, and documents in the vector database.
71+
* Analyzing chat history and scoring candidates against job requirements.
72+
73+
It communicates with the main Spring Boot backend (Application Services Layer) and uses the **OpenAI API** for underlying LLM capabilities.
74+
75+
### 2.4 Database: PostgreSQL with pgvector
76+
77+
The system utilizes a **PostgreSQL** database extended with the **pgvector** extension to support semantic search and vector-based operations. It stores:
78+
79+
* User data (candidates, HR personnel)
80+
* Job postings and requirements
81+
* Candidate resumes and applications
82+
* Assessment scores and chat histories
83+
* Vector embeddings for technical documents (for RAG)
84+
85+
This design allows the system to store structured HR data alongside high-dimensional AI data used for generating questions, scoring, and analysis.
86+
87+
## 3. UML Diagrams
88+
89+
### 3.1 Top-Level Architecture Diagram
90+
91+
![arch](./docs/images/arch.webp)
92+
93+
### 3.2 Use Case Diagram
94+
95+
![use-case](./docs/images/use-case.webp)
96+
97+
### 3.3 Analysis Object Model
98+
99+
![object](./docs/images/object.webp)
100+
101+
## 4. Backlog
102+
103+
1. As an HR user, I want to add a new job requirement so that candidates can apply for it.
104+
2. As an HR user, I want to close a job requirement so that candidates can no longer apply for it.
105+
3. As a candidate, I want to upload my resume so that I can apply for a job.
106+
4. As an HR user, I want the AI to filter resumes so that I can find qualified candidates.
107+
5. As an HR user, I want the AI to generate questions to ask candidates so that I can better understand their qualifications.
108+
6. As a candidate, I want to answer the AI's questions about my resume or projects so that I can better present my strengths.
109+
7. As an HR user, I want the AI to score candidates based on their resumes and chat history so that I can find the best candidates.
110+
8. As an HR user, I want to view a ranked list of candidate scores so that I can quickly identify the best candidates.
111+
112+
## 5. Branch Name Template
113+
114+
```
115+
week<digit>-<task>
116+
```
117+
118+
## 6. Commit Template
119+
120+
```
121+
<type>[optional scope]: <description>
122+
123+
[optional body]
124+
125+
[optional footer(s)]
126+
```
127+
128+
For example:
129+
```bash
130+
git commit -m "feat: add a new feature" \
131+
-m "add a new feature to the project" \
132+
-m "closes: #1234"
133+
```
134+
135+
**Commit Types:**
136+
137+
* **feat**: A new feature
138+
* **fix**: A bug fix
139+
* **docs**: Documentation only changes
140+
* **ci**: Changes to CI configuration files and scripts
141+
* **test**: Adding missing tests or correcting existing tests
142+
* **refactor**: Refactoring code without changing business logic (e.g., changing variable names, structures, code style)
143+
* **perf**: Optimizing performance by improving code logic

docs/images/arch.webp

27.5 KB
Loading

docs/images/object.webp

40.1 KB
Loading

docs/images/use-case.webp

10.7 KB
Loading

0 commit comments

Comments
 (0)