# gauravgavhale2002/agenticai_hr_candidate-portal architecture

> Architecture diagram of the GitHub repository gauravgavhale2002/agenticai_hr_candidate-portal, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gauravgavhale2002/agenticai_hr_candidate-portal
- Repository: https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal

## Overview

TalentFlow AI combines a React candidate portal and HR dashboard with a Spring Boot recruitment API. Candidates register with a profile, skills, and PDF resume, then can sign in to view hiring progress; HR reviews candidates, accesses resumes, and updates hiring stages. The source excerpts show controller-to-service calls and some service-to-repository interactions. The README documents in-memory H2 storage; connections not evidenced in the excerpts are omitted or marked unverified.

Main entry points: [`backend/src/main/java/com/talentflow/controller/HrController.java`](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/controller/HrController.java) (HR workflow API), [`frontend/src/App.tsx`](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/frontend/src/App.tsx) (Candidate and HR UI), [`backend/src/main/java/com/talentflow/service/AuthService.java`](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/AuthService.java) (Registration and hiring stages), [`backend/src/main/java/com/talentflow/service/JobApplicationService.java`](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/JobApplicationService.java) (Job applications)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_webapp["Candidate and HR UI<br/>[App.tsx]"]
end

subgraph group_api["API endpoints"]
  node_authapi["Registration and login API"]
  node_candidateapi["Candidate profile API"]
  node_hrapi["HR workflow API<br/>[HrController.java]"]
end

subgraph group_workflow["Recruitment workflow"]
  node_auth["Registration and hiring stages<br/>[AuthService.java]"]
  node_screening["Resume screening"]
  node_resume["Resume file storage"]
  node_candidateprofile["Candidate profiles"]
  node_applications["Job applications"]
  node_jobs["Job listings<br/>[JobService.java]"]
end

subgraph group_persistence["Persistence"]
  node_candidate_repo[("Candidate records")]
  node_user_repo[("User records")]
  node_application_repo[("Application records")]
  node_job_repo[("Job records<br/>[JobRepository.java]")]
  node_h2[("In-memory H2 database")]
end

node_candidate(("Candidate"))
node_hr(("HR administrator"))

node_candidate -->|"uses portal"| node_webapp
node_hr -->|"uses dashboard"| node_webapp
node_webapp -.->|"submits registration"| node_authapi
node_webapp -.->|"requests HR workflow"| node_hrapi
node_webapp -.->|"requests candidate login"| node_authapi
node_authapi -->|"registers and logs in"| node_auth
node_candidateapi -->|"creates and reads profiles"| node_candidateprofile
node_hrapi -->|"lists and updates candidates"| node_auth
node_hrapi -->|"submits and reads applications"| node_applications
node_hrapi -->|"loads resume metadata"| node_auth
node_hrapi -->|"resolves resume file"| node_resume
node_auth -->|"analyzes resume"| node_screening
node_auth -->|"validates and stores resume"| node_resume
node_candidateprofile -->|"saves and queries"| node_candidate_repo
node_candidateprofile -->|"loads user"| node_user_repo
node_applications -->|"loads candidate"| node_candidate_repo
node_applications -->|"loads job"| node_job_repo
node_applications -->|"saves and queries"| node_application_repo
node_candidate_repo -.->|"persists records"| node_h2
node_user_repo -.->|"persists records"| node_h2
node_application_repo -.->|"persists records"| node_h2
node_job_repo -.->|"persists records"| node_h2

click node_webapp "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/frontend/src/App.tsx"
click node_authapi "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/controller/AuthController.java"
click node_candidateapi "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/controller/CandidateController.java"
click node_hrapi "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/controller/HrController.java"
click node_auth "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/AuthService.java"
click node_screening "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/ResumeScreeningAgent.java"
click node_resume "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/ResumeStorageService.java"
click node_candidateprofile "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/CandidateService.java"
click node_applications "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/JobApplicationService.java"
click node_jobs "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/JobService.java"
click node_candidate_repo "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/repository/CandidateRepository.java"
click node_user_repo "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/repository/UserRepository.java"
click node_application_repo "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/repository/JobApplicationRepository.java"
click node_job_repo "https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/repository/JobRepository.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webapp toneBlue
class node_authapi,node_candidateapi,node_hrapi toneAmber
class node_auth,node_screening,node_resume,node_candidateprofile,node_applications,node_jobs toneMint
class node_candidate_repo,node_user_repo,node_application_repo,node_job_repo,node_h2 toneRose
class node_candidate,node_hr toneIndigo
```

## Components

### User experience

- [Candidate and HR UI](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`

### API endpoints

- [Registration and login API](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/controller/AuthController.java): `backend/src/main/java/com/talentflow/controller/AuthController.java`
- [Candidate profile API](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/controller/CandidateController.java): `backend/src/main/java/com/talentflow/controller/CandidateController.java`
- [HR workflow API](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/controller/HrController.java): `backend/src/main/java/com/talentflow/controller/HrController.java`

### Recruitment workflow

- [Registration and hiring stages](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/AuthService.java): `backend/src/main/java/com/talentflow/service/AuthService.java`
- [Resume screening](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/ResumeScreeningAgent.java): `backend/src/main/java/com/talentflow/service/ResumeScreeningAgent.java`
- [Resume file storage](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/ResumeStorageService.java): `backend/src/main/java/com/talentflow/service/ResumeStorageService.java`
- [Candidate profiles](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/CandidateService.java): `backend/src/main/java/com/talentflow/service/CandidateService.java`
- [Job applications](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/JobApplicationService.java): `backend/src/main/java/com/talentflow/service/JobApplicationService.java`
- [Job listings](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/service/JobService.java): `backend/src/main/java/com/talentflow/service/JobService.java`

### Persistence

- [Candidate records](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/repository/CandidateRepository.java): `backend/src/main/java/com/talentflow/repository/CandidateRepository.java`
- [User records](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/repository/UserRepository.java): `backend/src/main/java/com/talentflow/repository/UserRepository.java`
- [Application records](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/repository/JobApplicationRepository.java): `backend/src/main/java/com/talentflow/repository/JobApplicationRepository.java`
- [Job records](https://github.com/gauravgavhale2002/agenticai_hr_candidate-portal/blob/main/backend/src/main/java/com/talentflow/repository/JobRepository.java): `backend/src/main/java/com/talentflow/repository/JobRepository.java`
- **In-memory H2 database**

### Other components

- **Candidate**
- **HR administrator**

## Connections

- Candidate → Candidate and HR UI: uses portal (evidence: `README.md`)
- HR administrator → Candidate and HR UI: uses dashboard (evidence: `README.md`)
- Candidate and HR UI → Registration and login API: submits registration
- Candidate and HR UI → HR workflow API: requests HR workflow
- Candidate and HR UI → Registration and login API: requests candidate login
- Registration and login API → Registration and hiring stages: registers and logs in (evidence: `backend/src/main/java/com/talentflow/controller/AuthController.java`)
- Candidate profile API → Candidate profiles: creates and reads profiles (evidence: `backend/src/main/java/com/talentflow/controller/CandidateController.java`)
- HR workflow API → Registration and hiring stages: lists and updates candidates (evidence: `backend/src/main/java/com/talentflow/controller/HrController.java`)
- HR workflow API → Job applications: submits and reads applications (evidence: `backend/src/main/java/com/talentflow/controller/HrController.java`)
- HR workflow API → Registration and hiring stages: loads resume metadata (evidence: `backend/src/main/java/com/talentflow/controller/HrController.java`)
- HR workflow API → Resume file storage: resolves resume file (evidence: `backend/src/main/java/com/talentflow/controller/HrController.java`)
- Registration and hiring stages → Resume screening: analyzes resume (evidence: `backend/src/main/java/com/talentflow/service/AuthService.java`)
- Registration and hiring stages → Resume file storage: validates and stores resume (evidence: `backend/src/main/java/com/talentflow/service/AuthService.java`)
- Candidate profiles → Candidate records: saves and queries (evidence: `backend/src/main/java/com/talentflow/service/CandidateService.java`)
- Candidate profiles → User records: loads user (evidence: `backend/src/main/java/com/talentflow/service/CandidateService.java`)
- Job applications → Candidate records: loads candidate (evidence: `backend/src/main/java/com/talentflow/service/JobApplicationService.java`)
- Job applications → Job records: loads job (evidence: `backend/src/main/java/com/talentflow/service/JobApplicationService.java`)
- Job applications → Application records: saves and queries (evidence: `backend/src/main/java/com/talentflow/service/JobApplicationService.java`)
- Candidate records → In-memory H2 database: persists records
- User records → In-memory H2 database: persists records
- Application records → In-memory H2 database: persists records
- Job records → In-memory H2 database: persists records
