How farooqpersonal12/resume-screener works
Smart Resume Screener is a Spring Boot backend for managing candidates, jobs, and resumes, then producing explainable candidate–job evaluations and score-based shortlists. The primary workflow creates a candidate and job, uploads their documents, extracts resume text and job-description text, requests semantic evaluation from Gemini, and stores the resulting score, skills, and justification for retrieval or shortlisting. The graph follows documented capabilities and sampled service/controller calls; several CRUD service implementations were not sampled, so their detailed wiring is not expanded.
Main entry points: MatchResultService.java Matching / Shortlisting · ResumeService.java Resume Management · CandidateRepository.java Candidate Repository · LLMMatchingService.java LLM Matching Client
Components 21
REST API
- Candidate API
src/main/java/com/resumescreener/resume_screener/Controller/CandidateController.java - Job API
src/main/java/com/resumescreener/resume_screener/Controller/JobController.java - Resume API
src/main/java/com/resumescreener/resume_screener/Controller/ResumeController.java - Match API
src/main/java/com/resumescreener/resume_screener/Controller/MatchResultController.java - Request / Response DTOs
src/main/java/com/resumescreener/resume_screener/DTOs
Screening Workflows
- Candidate Management
src/main/java/com/resumescreener/resume_screener/service/CandidateService.java - Job Management
src/main/java/com/resumescreener/resume_screener/service/JobService.java - Resume Management
src/main/java/com/resumescreener/resume_screener/service/ResumeService.java - Matching / Shortlisting
src/main/java/com/resumescreener/resume_screener/service/MatchResultService.java - PDF Text Extraction
src/main/java/com/resumescreener/resume_screener/service/PdfExtractionService.java - Resume Field Parsing
src/main/java/com/resumescreener/resume_screener/service/ResumeParsingService.java - LLM Matching Client
src/main/java/com/resumescreener/resume_screener/service/LLMMatchingService.java - LLM Match Result DTO
src/main/java/com/resumescreener/resume_screener/DTOs/LLMMatchResponseDTO.java
Persistence
- Candidate Repository
src/main/java/com/resumescreener/resume_screener/repository/CandidateRepository.java - Job Repository
src/main/java/com/resumescreener/resume_screener/repository/JobRepository.java - Resume Repository
src/main/java/com/resumescreener/resume_screener/repository/ResumeRepository.java - Match Repository
src/main/java/com/resumescreener/resume_screener/repository/MatchResultRepository.java - Persistent Entities
src/main/java/com/resumescreener/resume_screener/entity
External Integration
- MySQL Database
- Gemini API
Other components
- Recruiter / Client
Connections 35
- Recruiter / Client → Candidate API: manages candidates
- Recruiter / Client → Job API: manages jobs
- Recruiter / Client → Resume API: uploads resumes
- Recruiter / Client → Match API: requests screening
- Candidate API → Candidate Management: dispatches
- Job API → Job Management: dispatches
- Resume API → Resume Management: dispatches
- Match API → Matching / Shortlisting: dispatches
- Candidate API → Request / Response DTOs: uses
- Job API → Request / Response DTOs: uses
- Resume API → Request / Response DTOs: uses
- Match API → Request / Response DTOs: uses
- Candidate Management → Candidate Repository: reads / writes
- Job Management → Job Repository: reads / writes
- Job Management → PDF Text Extraction: extracts JD text
- Resume Management → Candidate Repository: loads candidate
- Resume Management → PDF Text Extraction: extracts resume text
- Resume Management → Resume Field Parsing: parses resume fields
- Resume Management → Resume Repository: stores resume
- Matching / Shortlisting → Candidate Repository: loads candidate
- Matching / Shortlisting → Job Repository: loads job
- Matching / Shortlisting → Resume Repository: loads latest resume
- Matching / Shortlisting → LLM Matching Client: sends resume and JD
- LLM Matching Client → Gemini API: requests evaluation
- Gemini API → LLM Matching Client: returns evaluation
- LLM Matching Client → LLM Match Result DTO: parses response
- Matching / Shortlisting → Match Repository: stores / queries matches
- Candidate Repository → MySQL Database: persists entities
- Job Repository → MySQL Database: persists entities
- Resume Repository → MySQL Database: persists entities
- Match Repository → MySQL Database: persists entities
- Candidate Repository → Persistent Entities: maps candidate
- Job Repository → Persistent Entities: maps job
- Resume Repository → Persistent Entities: maps resume
- Match Repository → Persistent Entities: maps match result