# achyutha2546/ats-scanner architecture

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

- Interactive diagram: https://gitdiagram.com/achyutha2546/ats-scanner
- Repository: https://github.com/achyutha2546/ats-scanner

## Overview

ResumeAI lets users register, build and save a professional profile, then optimize it through resume parsing, ATS scoring, skill-gap guidance and AI rewriting. The main evidenced flow runs from the resume builder through the API to backend services and, for scoring, the Python engine; saved profile data is stored in MongoDB. Other documented capabilities—templates, portfolio and career insights—are represented as product branches. Route registration, the builder excerpt and README support this map; unsampled page and route implementations limit detail on their internal wiring.

Main entry points: [`ats_engine/scoring.py`](https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/scoring.py) (Scoring orchestration), [`backend/index.js`](https://github.com/achyutha2546/ats-scanner/blob/main/backend/index.js) (Express server), [`frontend/src/App.jsx`](https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/App.jsx) (App routing), [`frontend/src/pages/ResumeBuilder.jsx`](https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/pages/ResumeBuilder.jsx) (Resume builder)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_app["App routing<br/>[App.jsx]"]
  node_authui["Auth state<br/>[AuthContext.jsx]"]
  node_builder["Resume builder<br/>[ResumeBuilder.jsx]"]
  node_otherpages["Product pages"]
  node_api["API client<br/>[api.js]"]
end

subgraph group_service["Backend services"]
  node_server["Express server<br/>[index.js]"]
  node_authroutes["Authentication<br/>[auth.js]"]
  node_resumeroutes["Resume service<br/>[resume.js]"]
  node_airoutes["AI services<br/>[ai.js]"]
end

subgraph group_ats["ATS analysis"]
  node_atsutil["ATS integration<br/>[atsScoring.js]"]
  node_parser["Resume parsing<br/>[atsScoring.js]"]
  node_pyengine["Scoring orchestration<br/>[scoring.py]"]
  node_keywords["Keyword matching<br/>[keyword_matcher.py]"]
  node_rolematch["Role matching<br/>[role_match.py]"]
  node_semantic["Semantic analysis<br/>[semantic.py]"]
  node_skills["Skill matching<br/>[skill.py]"]
  node_evidence["Evidence scoring<br/>[evidence.py]"]
  node_suggestions["Resume suggestions<br/>[suggestions.py]"]
end

subgraph group_storage["Persistent data"]
  node_mongodb[("MongoDB")]
  node_models["Resume and user models"]
end

node_user(("Resume user"))
node_openai["OpenAI"]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_builder
node_app -->|"routes to"| node_otherpages
node_app -->|"provides auth"| node_authui
node_builder -->|"requests resume data"| node_api
node_builder -->|"sends resume"| node_api
node_builder -->|"requests enhancement"| node_api
node_api -->|"sends requests"| node_server
node_server -->|"dispatches auth"| node_authroutes
node_server -->|"dispatches resume"| node_resumeroutes
node_server -->|"dispatches AI"| node_airoutes
node_authroutes -->|"reads and writes"| node_models
node_resumeroutes -->|"reads and writes"| node_models
node_airoutes -->|"invokes scoring"| node_atsutil
node_atsutil -->|"parses uploads"| node_parser
node_atsutil -->|"spawns scoring"| node_pyengine
node_pyengine -->|"uses"| node_keywords
node_pyengine -->|"uses"| node_rolematch
node_pyengine -->|"uses"| node_semantic
node_pyengine -->|"uses"| node_skills
node_pyengine -->|"uses"| node_evidence
node_pyengine -->|"uses"| node_suggestions
node_atsutil -.->|"requests embeddings"| node_openai
node_server -->|"connects"| node_mongodb
node_models -->|"persists data"| node_mongodb

click node_app "https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/App.jsx"
click node_authui "https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/context/AuthContext.jsx"
click node_builder "https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/pages/ResumeBuilder.jsx"
click node_otherpages "https://github.com/achyutha2546/ats-scanner/tree/main/frontend/src/pages"
click node_api "https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/api.js"
click node_server "https://github.com/achyutha2546/ats-scanner/blob/main/backend/index.js"
click node_authroutes "https://github.com/achyutha2546/ats-scanner/blob/main/backend/routes/auth.js"
click node_resumeroutes "https://github.com/achyutha2546/ats-scanner/blob/main/backend/routes/resume.js"
click node_airoutes "https://github.com/achyutha2546/ats-scanner/blob/main/backend/routes/ai.js"
click node_atsutil "https://github.com/achyutha2546/ats-scanner/blob/main/backend/utils/atsScoring.js"
click node_parser "https://github.com/achyutha2546/ats-scanner/blob/main/backend/utils/atsScoring.js"
click node_pyengine "https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/scoring.py"
click node_keywords "https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/keyword_matcher.py"
click node_rolematch "https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/role_match.py"
click node_semantic "https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/semantic.py"
click node_skills "https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/skill.py"
click node_evidence "https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/evidence.py"
click node_suggestions "https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/suggestions.py"
click node_models "https://github.com/achyutha2546/ats-scanner/tree/main/backend/models"

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_authui,node_builder,node_otherpages,node_api,node_user toneBlue
class node_server,node_authroutes,node_resumeroutes,node_airoutes toneAmber
class node_atsutil,node_parser,node_pyengine,node_keywords,node_rolematch,node_semantic,node_skills,node_evidence,node_suggestions toneMint
class node_mongodb,node_models toneRose
class node_openai toneIndigo
```

## Components

### Web application

- [App routing](https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth state](https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Resume builder](https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/pages/ResumeBuilder.jsx): `frontend/src/pages/ResumeBuilder.jsx`
- [Product pages](https://github.com/achyutha2546/ats-scanner/tree/main/frontend/src/pages): `frontend/src/pages`
- [API client](https://github.com/achyutha2546/ats-scanner/blob/main/frontend/src/api.js): `frontend/src/api.js`

### Backend services

- [Express server](https://github.com/achyutha2546/ats-scanner/blob/main/backend/index.js): `backend/index.js`
- [Authentication](https://github.com/achyutha2546/ats-scanner/blob/main/backend/routes/auth.js): `backend/routes/auth.js`
- [Resume service](https://github.com/achyutha2546/ats-scanner/blob/main/backend/routes/resume.js): `backend/routes/resume.js`
- [AI services](https://github.com/achyutha2546/ats-scanner/blob/main/backend/routes/ai.js): `backend/routes/ai.js`

### ATS analysis

- [ATS integration](https://github.com/achyutha2546/ats-scanner/blob/main/backend/utils/atsScoring.js): `backend/utils/atsScoring.js`
- [Resume parsing](https://github.com/achyutha2546/ats-scanner/blob/main/backend/utils/atsScoring.js): `backend/utils/atsScoring.js`
- [Scoring orchestration](https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/scoring.py): `ats_engine/scoring.py`
- [Keyword matching](https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/keyword_matcher.py): `ats_engine/keyword_matcher.py`
- [Role matching](https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/role_match.py): `ats_engine/role_match.py`
- [Semantic analysis](https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/semantic.py): `ats_engine/semantic.py`
- [Skill matching](https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/skill.py): `ats_engine/skill.py`
- [Evidence scoring](https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/evidence.py): `ats_engine/evidence.py`
- [Resume suggestions](https://github.com/achyutha2546/ats-scanner/blob/main/ats_engine/suggestions.py): `ats_engine/suggestions.py`

### Persistent data

- **MongoDB**
- [Resume and user models](https://github.com/achyutha2546/ats-scanner/tree/main/backend/models): `backend/models`

### Other components

- **Resume user**
- **OpenAI**

## Connections

- Resume user → App routing: uses
- App routing → Resume builder: routes to
- App routing → Product pages: routes to
- App routing → Auth state: provides auth
- Resume builder → API client: requests resume data
- Resume builder → API client: sends resume
- Resume builder → API client: requests enhancement
- API client → Express server: sends requests
- Express server → Authentication: dispatches auth
- Express server → Resume service: dispatches resume
- Express server → AI services: dispatches AI
- Authentication → Resume and user models: reads and writes
- Resume service → Resume and user models: reads and writes
- AI services → ATS integration: invokes scoring
- ATS integration → Resume parsing: parses uploads
- ATS integration → Scoring orchestration: spawns scoring
- Scoring orchestration → Keyword matching: uses
- Scoring orchestration → Role matching: uses
- Scoring orchestration → Semantic analysis: uses
- Scoring orchestration → Skill matching: uses
- Scoring orchestration → Evidence scoring: uses
- Scoring orchestration → Resume suggestions: uses
- ATS integration → OpenAI: requests embeddings
- Express server → MongoDB: connects
- Resume and user models → MongoDB: persists data
