# kalyansai956/smarthire_ats architecture

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

- Interactive diagram: https://gitdiagram.com/kalyansai956/smarthire_ats
- Repository: https://github.com/kalyansai956/smarthire_ats

## Overview

SmartHire is a resume-analysis and career workspace: users submit a resume, optionally with a job description, and receive ATS-oriented scoring, match information, quality findings, and recommendations. The tree also shows history, PDF reports, profile, usage, and configurable LLM-provider features. Sampled source confirms the API entry points, resume parsing, history access, and report generation; the README contains no further product detail, and wiring among several analysis engines and LLM modules is not fully shown.

Main entry points: [`web/src/App.jsx`](https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/App.jsx) (Web application), [`backend/main.py`](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/main.py) (FastAPI application), [`backend/api/routes.py`](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/routes.py) (Analysis and history routes), [`web/src/services/api.js`](https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/services/api.js) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Career workspace"]
  node_app["Web application<br/>[App.jsx]"]
  node_analyze_page["Analyze resume<br/>[Analyze.jsx]"]
  node_history_page["Analysis history<br/>[History.jsx]"]
  node_analysis_page["Analysis details<br/>[Analysis.jsx]"]
  node_jobs_page["Job workspace<br/>[Jobs.jsx]"]
  node_settings_page["AI settings<br/>[AISettings.jsx]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_api["API and accounts"]
  node_api_app["FastAPI application<br/>[main.py]"]
  node_routes["Analysis and history routes<br/>[routes.py]"]
  node_auth["Authentication<br/>[auth.py]"]
  node_profile["Profile routes<br/>[profile.py]"]
  node_usage["Usage routes<br/>[usage.py]"]
  node_llm_settings["LLM settings routes<br/>[llm_settings.py]"]
end

subgraph group_analysis["Resume intelligence"]
  node_parser["Resume parser<br/>[resume_parser.py]"]
  node_resume_analysis["Resume analyzer<br/>[resume_analyzer.py]"]
  node_ats["ATS scoring"]
  node_quality["Resume quality"]
  node_feedback["Issue feedback<br/>[feedback_engine.py]"]
  node_recommendations["Recommendations"]
  node_jd_intelligence["Job description insights"]
  node_jd_matcher["Job matching<br/>[jd_matcher.py]"]
end

subgraph group_services["Persistence and AI"]
  node_report["Report generation"]
  node_pdf["PDF export<br/>[pdf_export.py]"]
  node_database["Supabase data access<br/>[supabase_db.py]"]
  node_llm_gateway["LLM gateway<br/>[gateway.py]"]
  node_llm_factory["Provider factory<br/>[factory.py]"]
  node_llm_providers["LLM providers<br/>[base.py]"]
end

node_person(("Job seeker"))

node_person -->|"uses"| node_app
node_app -->|"routes to"| node_analyze_page
node_app -->|"routes to"| node_history_page
node_app -->|"routes to"| node_analysis_page
node_app -->|"routes to"| node_jobs_page
node_app -->|"routes to"| node_settings_page
node_analyze_page -->|"submits analysis"| node_api_client
node_history_page -->|"requests history"| node_api_client
node_analysis_page -->|"requests details"| node_api_client
node_settings_page -->|"requests settings"| node_api_client
node_api_client -->|"calls API"| node_api_app
node_api_app -->|"mounts routes"| node_routes
node_api_app -->|"mounts routes"| node_profile
node_api_app -->|"mounts routes"| node_usage
node_api_app -->|"mounts routes"| node_llm_settings
node_routes -->|"parses upload"| node_parser
node_routes -->|"reads and writes"| node_database
node_routes -->|"requests reports"| node_report
node_routes -->|"exports PDF"| node_pdf
node_llm_settings -->|"manages credentials"| node_database
node_llm_gateway -->|"selects provider"| node_llm_factory
node_llm_factory -->|"creates provider"| node_llm_providers

click node_app "https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/App.jsx"
click node_analyze_page "https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/Analyze.jsx"
click node_history_page "https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/History.jsx"
click node_analysis_page "https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/Analysis.jsx"
click node_jobs_page "https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/Jobs.jsx"
click node_settings_page "https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/AISettings.jsx"
click node_api_client "https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/services/api.js"
click node_api_app "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/main.py"
click node_routes "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/routes.py"
click node_auth "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/auth.py"
click node_profile "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/profile.py"
click node_usage "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/usage.py"
click node_llm_settings "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/llm_settings.py"
click node_parser "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/resume_parser.py"
click node_resume_analysis "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/resume_analyzer.py"
click node_ats "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/advanced_ats_engine.py"
click node_quality "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/resume_quality_engine.py"
click node_feedback "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/feedback_engine.py"
click node_recommendations "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/recommendation_engine.py"
click node_jd_intelligence "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/jd_intelligence_engine.py"
click node_jd_matcher "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/jd_matcher.py"
click node_report "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/report_generator.py"
click node_pdf "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/pdf_export.py"
click node_database "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/database/supabase_db.py"
click node_llm_gateway "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/llm/gateway.py"
click node_llm_factory "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/llm/factory.py"
click node_llm_providers "https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/llm/base.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_analyze_page,node_history_page,node_analysis_page,node_jobs_page,node_settings_page,node_api_client toneBlue
class node_api_app,node_routes,node_auth,node_profile,node_usage,node_llm_settings toneAmber
class node_parser,node_resume_analysis,node_ats,node_quality,node_feedback,node_recommendations,node_jd_intelligence,node_jd_matcher toneMint
class node_report,node_pdf,node_database,node_llm_gateway,node_llm_factory,node_llm_providers toneRose
class node_person toneIndigo
```

## Components

### Career workspace

- [Web application](https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/App.jsx): `web/src/App.jsx`
- [Analyze resume](https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/Analyze.jsx): `web/src/pages/Analyze.jsx`
- [Analysis history](https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/History.jsx): `web/src/pages/History.jsx`
- [Analysis details](https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/Analysis.jsx): `web/src/pages/Analysis.jsx`
- [Job workspace](https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/Jobs.jsx): `web/src/pages/Jobs.jsx`
- [AI settings](https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/pages/AISettings.jsx): `web/src/pages/AISettings.jsx`
- [API client](https://github.com/kalyansai956/smarthire_ats/blob/main/web/src/services/api.js): `web/src/services/api.js`

### API and accounts

- [FastAPI application](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/main.py): `backend/main.py`
- [Analysis and history routes](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/routes.py): `backend/api/routes.py`
- [Authentication](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/auth.py): `backend/api/auth.py`
- [Profile routes](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/profile.py): `backend/api/profile.py`
- [Usage routes](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/usage.py): `backend/api/usage.py`
- [LLM settings routes](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/api/llm_settings.py): `backend/api/llm_settings.py`

### Resume intelligence

- [Resume parser](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/resume_parser.py): `backend/services/resume_parser.py`
- [Resume analyzer](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/resume_analyzer.py): `backend/services/resume_analyzer.py`
- [ATS scoring](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/advanced_ats_engine.py): `backend/services/advanced_ats_engine.py`
- [Resume quality](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/resume_quality_engine.py): `backend/services/resume_quality_engine.py`
- [Issue feedback](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/feedback_engine.py): `backend/services/feedback_engine.py`
- [Recommendations](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/recommendation_engine.py): `backend/services/recommendation_engine.py`
- [Job description insights](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/jd_intelligence_engine.py): `backend/services/jd_intelligence_engine.py`
- [Job matching](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/jd_matcher.py): `backend/services/jd_matcher.py`

### Persistence and AI

- [Report generation](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/report_generator.py): `backend/services/report_generator.py`
- [PDF export](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/pdf_export.py): `backend/services/pdf_export.py`
- [Supabase data access](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/database/supabase_db.py): `backend/database/supabase_db.py`
- [LLM gateway](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/llm/gateway.py): `backend/services/llm/gateway.py`
- [Provider factory](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/llm/factory.py): `backend/services/llm/factory.py`
- [LLM providers](https://github.com/kalyansai956/smarthire_ats/blob/main/backend/services/llm/base.py): `backend/services/llm/base.py`

### Other components

- **Job seeker**

## Connections

- Job seeker → Web application: uses
- Web application → Analyze resume: routes to
- Web application → Analysis history: routes to
- Web application → Analysis details: routes to
- Web application → Job workspace: routes to
- Web application → AI settings: routes to
- Analyze resume → API client: submits analysis
- Analysis history → API client: requests history
- Analysis details → API client: requests details
- AI settings → API client: requests settings
- API client → FastAPI application: calls API
- FastAPI application → Analysis and history routes: mounts routes
- FastAPI application → Profile routes: mounts routes
- FastAPI application → Usage routes: mounts routes
- FastAPI application → LLM settings routes: mounts routes
- Analysis and history routes → Resume parser: parses upload
- Analysis and history routes → Supabase data access: reads and writes
- Analysis and history routes → Report generation: requests reports
- Analysis and history routes → PDF export: exports PDF
- LLM settings routes → Supabase data access: manages credentials
- LLM gateway → Provider factory: selects provider
- Provider factory → LLM providers: creates provider
