# abhi07jith10/resume-screener- architecture

> Architecture diagram of the GitHub repository abhi07jith10/resume-screener-, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/abhi07jith10/resume-screener-
- Repository: https://github.com/abhi07jith10/resume-screener-

## Overview

This is a recruiter-facing resume-screening and interview-scheduling platform. Recruiters manage candidates and jobs, upload PDF resumes for text extraction, create applications that are scored against job descriptions, review ranked results, and propose interview slots. The React pages call the FastAPI API through a shared Axios client; the API coordinates persistence, PDF extraction, scoring, and scheduling. The README documents JWT authentication and explainable skill matching; source excerpts show the auth and scoring integrations, but not every frontend or API detail.

Main entry points: [`backend/main.py`](https://github.com/abhi07jith10/resume-screener-/blob/main/backend/main.py) (API routes), [`frontend/src/App.jsx`](https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/App.jsx) (App routing), [`frontend/src/api/axios.js`](https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/api/axios.js) (API client), [`backend/auth.py`](https://github.com/abhi07jith10/resume-screener-/blob/main/backend/auth.py) (JWT authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Recruiter interface"]
  node_app["App routing<br/>[App.jsx]"]
  node_candidates_ui["Candidates<br/>[Candidates.jsx]"]
  node_jobs_ui["Jobs<br/>[Jobs.jsx]"]
  node_applications_ui["Applications<br/>[Applications.jsx]"]
  node_api_client["API client<br/>[axios.js]"]
  node_home_ui["Home<br/>[Home.jsx]"]
end

subgraph group_api["Recruitment API"]
  node_api_routes["API routes<br/>[main.py]"]
  node_contracts["API schemas<br/>[schemas.py]"]
  node_pdf_extract["PDF extraction<br/>[main.py]"]
end

subgraph group_services["AI and identity"]
  node_scoring["Resume scoring<br/>[llm_service.py]"]
  node_auth["JWT authentication<br/>[auth.py]"]
end

subgraph group_data["Persistence"]
  node_models["Domain models<br/>[models.py]"]
  node_db_session["DB sessions<br/>[database.py]"]
end

node_recruiter(("Recruiter"))
node_groq{{"Groq LLM"}}
node_database[("PostgreSQL")]

node_recruiter -->|"uses"| node_app
node_app -->|"routes"| node_candidates_ui
node_app -->|"routes"| node_jobs_ui
node_app -->|"routes"| node_applications_ui
node_app -->|"routes"| node_home_ui
node_candidates_ui -->|"requests"| node_api_client
node_jobs_ui -->|"requests"| node_api_client
node_applications_ui -->|"requests"| node_api_client
node_api_client -->|"HTTP requests"| node_api_routes
node_api_routes -->|"validates and shapes"| node_contracts
node_api_routes -->|"extracts PDF text"| node_pdf_extract
node_api_routes -->|"scores resumes"| node_scoring
node_scoring -->|"prompts model"| node_groq
node_api_routes -->|"auth operations"| node_auth
node_api_routes -->|"uses sessions"| node_db_session
node_api_routes -->|"queries and writes"| node_models
node_auth -->|"loads user"| node_db_session
node_auth -->|"queries user"| node_models
node_db_session -->|"connects"| node_database

click node_app "https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/App.jsx"
click node_candidates_ui "https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/pages/Candidates.jsx"
click node_jobs_ui "https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/pages/Jobs.jsx"
click node_applications_ui "https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/pages/Applications.jsx"
click node_api_client "https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/api/axios.js"
click node_api_routes "https://github.com/abhi07jith10/resume-screener-/blob/main/backend/main.py"
click node_contracts "https://github.com/abhi07jith10/resume-screener-/blob/main/backend/schemas.py"
click node_pdf_extract "https://github.com/abhi07jith10/resume-screener-/blob/main/backend/main.py"
click node_scoring "https://github.com/abhi07jith10/resume-screener-/blob/main/backend/llm_service.py"
click node_auth "https://github.com/abhi07jith10/resume-screener-/blob/main/backend/auth.py"
click node_models "https://github.com/abhi07jith10/resume-screener-/blob/main/backend/models/models.py"
click node_db_session "https://github.com/abhi07jith10/resume-screener-/blob/main/backend/database.py"
click node_home_ui "https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/pages/Home.jsx"

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_app,node_candidates_ui,node_jobs_ui,node_applications_ui,node_api_client,node_home_ui toneBlue
class node_api_routes,node_contracts,node_pdf_extract,node_database toneAmber
class node_scoring,node_auth toneMint
class node_models,node_db_session toneRose
class node_recruiter,node_groq toneIndigo
```

## Components

### Recruiter interface

- [App routing](https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Candidates](https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/pages/Candidates.jsx): `frontend/src/pages/Candidates.jsx`
- [Jobs](https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/pages/Jobs.jsx): `frontend/src/pages/Jobs.jsx`
- [Applications](https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/pages/Applications.jsx): `frontend/src/pages/Applications.jsx`
- [API client](https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/api/axios.js): `frontend/src/api/axios.js`
- [Home](https://github.com/abhi07jith10/resume-screener-/blob/main/frontend/src/pages/Home.jsx): `frontend/src/pages/Home.jsx`

### Recruitment API

- [API routes](https://github.com/abhi07jith10/resume-screener-/blob/main/backend/main.py): `backend/main.py`
- [API schemas](https://github.com/abhi07jith10/resume-screener-/blob/main/backend/schemas.py): `backend/schemas.py`
- [PDF extraction](https://github.com/abhi07jith10/resume-screener-/blob/main/backend/main.py): `backend/main.py`

### AI and identity

- [Resume scoring](https://github.com/abhi07jith10/resume-screener-/blob/main/backend/llm_service.py): `backend/llm_service.py`
- [JWT authentication](https://github.com/abhi07jith10/resume-screener-/blob/main/backend/auth.py): `backend/auth.py`

### Persistence

- [Domain models](https://github.com/abhi07jith10/resume-screener-/blob/main/backend/models/models.py): `backend/models/models.py`
- [DB sessions](https://github.com/abhi07jith10/resume-screener-/blob/main/backend/database.py): `backend/database.py`

### Other components

- **Recruiter**
- **Groq LLM**
- **PostgreSQL**

## Connections

- Recruiter → App routing: uses
- App routing → Candidates: routes
- App routing → Jobs: routes
- App routing → Applications: routes
- App routing → Home: routes
- Candidates → API client: requests
- Jobs → API client: requests
- Applications → API client: requests
- API client → API routes: HTTP requests
- API routes → API schemas: validates and shapes
- API routes → PDF extraction: extracts PDF text
- API routes → Resume scoring: scores resumes
- Resume scoring → Groq LLM: prompts model
- API routes → JWT authentication: auth operations
- API routes → DB sessions: uses sessions
- API routes → Domain models: queries and writes
- JWT authentication → DB sessions: loads user
- JWT authentication → Domain models: queries user
- DB sessions → PostgreSQL: connects
