# techbypradnya/ai-powered-intelligent-hiring-assistant architecture

> Architecture diagram of the GitHub repository techbypradnya/ai-powered-intelligent-hiring-assistant, 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/techbypradnya/ai-powered-intelligent-hiring-assistant
- Repository: https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant

## Overview

Hire Signal is a recruiter-facing hiring platform. Recruiters create a role, upload resumes, review parsed candidate profiles and explainable match scores, then manage candidates through interviews and hiring stages. The React interface talks to a FastAPI backend, which persists jobs, resumes, match results, interview sessions, and scorecards in SQLite. The README documents additional directory, analytics, export, and report features; their routes are represented where the tree supports them. Some frontend and service-to-service wiring is inferred from the README because those source files were not sampled.

Main entry points: [`backend/app/main.py`](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/main.py) (FastAPI App), [`backend/app/db/crud.py`](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/db/crud.py) (Database Operations), [`backend/app/api/routes_resume.py`](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_resume.py) (Resume Upload), [`frontend/src/App.jsx`](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/frontend/src/App.jsx) (App Navigation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Recruiter Interface"]
  node_app["App Navigation<br/>[App.jsx]"]
  node_dashboard["Hiring Dashboard<br/>[Dashboard.jsx]"]
  node_directory["Candidate Directory"]
  node_api_client["API Client<br/>[api.js]"]
end

subgraph group_api["API Workflows"]
  node_main["FastAPI App<br/>[main.py]"]
  node_resume_routes["Resume Upload<br/>[routes_resume.py]"]
  node_match_routes["Jobs and Matching<br/>[routes_match.py]"]
  node_candidate_routes["Directory and Exports"]
  node_chat_routes["Candidate Chat<br/>[routes_chat.py]"]
  node_interview_routes["Interviews and Scorecards"]
end

subgraph group_screening["Resume Screening"]
  node_parser["Resume Parser<br/>[resume_parser.py]"]
  node_classifier["Role Classifier<br/>[classifier.py]"]
  node_matcher["Explainable Matcher<br/>[matcher.py]"]
  node_embeddings["Embeddings and FAISS"]
  node_feedback["Skill-Gap Feedback"]
  node_rag["Resume Q&amp;A<br/>[rag_chat.py]"]
  node_interview_generator["AI Interview Generator"]
end

subgraph group_persistence["Hiring Data"]
  node_database[("SQLite Hiring Store<br/>[database.py]")]
  node_crud["Database Operations<br/>[crud.py]"]
end

node_recruiter(("Recruiter"))
node_llm["Anthropic API"]

node_recruiter -->|"uses"| node_app
node_app -->|"opens"| node_dashboard
node_app -->|"navigates"| node_directory
node_dashboard -->|"requests data"| node_api_client
node_directory -->|"requests data"| node_api_client
node_api_client -->|"REST requests"| node_main
node_main -->|"registers"| node_resume_routes
node_main -->|"registers"| node_match_routes
node_main -->|"registers"| node_candidate_routes
node_main -->|"registers"| node_chat_routes
node_main -->|"registers"| node_interview_routes
node_resume_routes -->|"parses uploads"| node_parser
node_resume_routes -->|"classifies text"| node_classifier
node_resume_routes -->|"saves resumes"| node_crud
node_match_routes -->|"loads and saves"| node_crud
node_match_routes -->|"scores resumes"| node_matcher
node_matcher -->|"computes similarity"| node_embeddings
node_matcher -->|"generates feedback"| node_feedback
node_candidate_routes -->|"reads candidates"| node_crud
node_chat_routes -->|"loads resume"| node_crud
node_chat_routes -->|"answers questions"| node_rag
node_rag -->|"retrieves chunks"| node_embeddings
node_rag -.->|"polishes answer"| node_llm
node_interview_routes -->|"stores sessions"| node_crud
node_interview_routes -->|"generates and evaluates"| node_interview_generator
node_crud -->|"reads and writes"| node_database

click node_app "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/frontend/src/App.jsx"
click node_dashboard "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/frontend/src/pages/Dashboard.jsx"
click node_directory "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/frontend/src/pages/CandidateDirectory.jsx"
click node_api_client "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/frontend/src/api/api.js"
click node_main "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/main.py"
click node_resume_routes "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_resume.py"
click node_match_routes "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_match.py"
click node_candidate_routes "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_candidates.py"
click node_chat_routes "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_chat.py"
click node_interview_routes "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_interviews.py"
click node_parser "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/resume_parser.py"
click node_classifier "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/classifier.py"
click node_matcher "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/matcher.py"
click node_embeddings "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/embedding_engine.py"
click node_feedback "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/feedback_generator.py"
click node_rag "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/rag_chat.py"
click node_interview_generator "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/interview_generator.py"
click node_database "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/db/database.py"
click node_crud "https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/db/crud.py"

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_dashboard,node_directory,node_api_client toneBlue
class node_main,node_resume_routes,node_match_routes,node_candidate_routes,node_chat_routes,node_interview_routes toneAmber
class node_parser,node_classifier,node_matcher,node_embeddings,node_feedback,node_rag,node_interview_generator,node_llm toneMint
class node_database,node_crud toneRose
class node_recruiter toneIndigo
```

## Components

### Recruiter Interface

- [App Navigation](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Hiring Dashboard](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Candidate Directory](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/frontend/src/pages/CandidateDirectory.jsx): `frontend/src/pages/CandidateDirectory.jsx`
- [API Client](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/frontend/src/api/api.js): `frontend/src/api/api.js`

### API Workflows

- [FastAPI App](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/main.py): `backend/app/main.py`
- [Resume Upload](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_resume.py): `backend/app/api/routes_resume.py`
- [Jobs and Matching](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_match.py): `backend/app/api/routes_match.py`
- [Directory and Exports](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_candidates.py): `backend/app/api/routes_candidates.py`
- [Candidate Chat](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_chat.py): `backend/app/api/routes_chat.py`
- [Interviews and Scorecards](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/api/routes_interviews.py): `backend/app/api/routes_interviews.py`

### Resume Screening

- [Resume Parser](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/resume_parser.py): `backend/app/services/resume_parser.py`
- [Role Classifier](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/classifier.py): `backend/app/services/classifier.py`
- [Explainable Matcher](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/matcher.py): `backend/app/services/matcher.py`
- [Embeddings and FAISS](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/embedding_engine.py): `backend/app/services/embedding_engine.py`
- [Skill-Gap Feedback](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/feedback_generator.py): `backend/app/services/feedback_generator.py`
- [Resume Q&A](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/rag_chat.py): `backend/app/services/rag_chat.py`
- [AI Interview Generator](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/services/interview_generator.py): `backend/app/services/interview_generator.py`

### Hiring Data

- [SQLite Hiring Store](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/db/database.py): `backend/app/db/database.py`
- [Database Operations](https://github.com/techbypradnya/ai-powered-intelligent-hiring-assistant/blob/main/backend/app/db/crud.py): `backend/app/db/crud.py`

### Other components

- **Recruiter**
- **Anthropic API**

## Connections

- Recruiter → App Navigation: uses
- App Navigation → Hiring Dashboard: opens
- App Navigation → Candidate Directory: navigates
- Hiring Dashboard → API Client: requests data
- Candidate Directory → API Client: requests data
- API Client → FastAPI App: REST requests
- FastAPI App → Resume Upload: registers
- FastAPI App → Jobs and Matching: registers
- FastAPI App → Directory and Exports: registers
- FastAPI App → Candidate Chat: registers
- FastAPI App → Interviews and Scorecards: registers
- Resume Upload → Resume Parser: parses uploads
- Resume Upload → Role Classifier: classifies text
- Resume Upload → Database Operations: saves resumes
- Jobs and Matching → Database Operations: loads and saves
- Jobs and Matching → Explainable Matcher: scores resumes
- Explainable Matcher → Embeddings and FAISS: computes similarity
- Explainable Matcher → Skill-Gap Feedback: generates feedback
- Directory and Exports → Database Operations: reads candidates
- Candidate Chat → Database Operations: loads resume
- Candidate Chat → Resume Q&A: answers questions
- Resume Q&A → Embeddings and FAISS: retrieves chunks
- Resume Q&A → Anthropic API: polishes answer
- Interviews and Scorecards → Database Operations: stores sessions
- Interviews and Scorecards → AI Interview Generator: generates and evaluates
- Database Operations → SQLite Hiring Store: reads and writes
