# basavajayakrishna/ai-resume-analyzer architecture

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

- Interactive diagram: https://gitdiagram.com/basavajayakrishna/ai-resume-analyzer
- Repository: https://github.com/basavajayakrishna/ai-resume-analyzer

## Overview

AI Resume Analyzer is a Streamlit app that takes a PDF or DOCX resume and an optional target-job description, then presents extracted candidate details, skill matches, ATS scoring, and AI feedback or rewritten resume text. The sampled app shows the main orchestration and calls; some argument details are omitted from the excerpts, so the graph avoids claiming more specific data wiring than those excerpts support.

Main entry points: [`app.py`](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/app.py) (Streamlit App), [`utils/ai_analyzer.py`](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/ai_analyzer.py) (AI Resume Analyzer), [`utils/resume_parser.py`](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/resume_parser.py) (Resume Parser), [`utils/job_matcher.py`](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/job_matcher.py) (Job Matcher)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Application"]
  node_app["Streamlit App<br/>[app.py]"]
end

subgraph group_resume["Resume Processing"]
  node_parser["Resume Parser<br/>[resume_parser.py]"]
  node_analyzer["Resume Analyzer<br/>[resume_analyzer.py]"]
end

subgraph group_evaluation["Job Evaluation"]
  node_matcher["Job Matcher<br/>[job_matcher.py]"]
  node_scorer["ATS Scorer<br/>[ats_scorer.py]"]
end

subgraph group_ai["AI Assistance"]
  node_ai_analyzer["AI Resume Analyzer<br/>[ai_analyzer.py]"]
end

node_candidate(("Resume User"))
node_openai{{"OpenAI API"}}

node_candidate -->|"uploads and enters job"| node_app
node_app -->|"extracts resume text"| node_parser
node_parser -->|"returns text"| node_app
node_app -->|"analyzes resume text"| node_analyzer
node_app -->|"extracts job skills"| node_matcher
node_app -->|"calculates match"| node_matcher
node_app -->|"calculates ATS score"| node_scorer
node_app -->|"requests AI analysis"| node_ai_analyzer
node_app -->|"requests rewrite"| node_ai_analyzer
node_ai_analyzer -->|"sends prompts"| node_openai
node_openai -->|"returns generated text"| node_ai_analyzer

click node_app "https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/app.py"
click node_parser "https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/resume_parser.py"
click node_analyzer "https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/resume_analyzer.py"
click node_matcher "https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/job_matcher.py"
click node_scorer "https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/ats_scorer.py"
click node_ai_analyzer "https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/ai_analyzer.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_candidate toneBlue
class node_parser,node_analyzer toneAmber
class node_matcher,node_scorer,node_openai toneMint
class node_ai_analyzer toneRose
```

## Components

### Application

- [Streamlit App](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/app.py): `app.py`

### Resume Processing

- [Resume Parser](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/resume_parser.py): `utils/resume_parser.py`
- [Resume Analyzer](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/resume_analyzer.py): `utils/resume_analyzer.py`

### Job Evaluation

- [Job Matcher](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/job_matcher.py): `utils/job_matcher.py`
- [ATS Scorer](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/ats_scorer.py): `utils/ats_scorer.py`

### AI Assistance

- [AI Resume Analyzer](https://github.com/basavajayakrishna/ai-resume-analyzer/blob/main/utils/ai_analyzer.py): `utils/ai_analyzer.py`

### Other components

- **Resume User**
- **OpenAI API**

## Connections

- Resume User → Streamlit App: uploads and enters job
- Streamlit App → Resume Parser: extracts resume text
- Resume Parser → Streamlit App: returns text
- Streamlit App → Resume Analyzer: analyzes resume text
- Streamlit App → Job Matcher: extracts job skills
- Streamlit App → Job Matcher: calculates match
- Streamlit App → ATS Scorer: calculates ATS score
- Streamlit App → AI Resume Analyzer: requests AI analysis
- Streamlit App → AI Resume Analyzer: requests rewrite
- AI Resume Analyzer → OpenAI API: sends prompts
- OpenAI API → AI Resume Analyzer: returns generated text
