# codewithshek/ai-powered-resume-screening-and-ranking-system architecture

> Architecture diagram of the GitHub repository codewithshek/ai-powered-resume-screening-and-ranking-system, 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/codewithshek/ai-powered-resume-screening-and-ranking-system
- Repository: https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system

## Overview

This Streamlit application accepts a job description and multiple PDF resumes, extracts resume text, scores each resume against the job description, and displays candidates in descending score order. Its main stages are input, PDF extraction, similarity-based ranking, and result presentation. The README also documents PDF support and candidate ranking; the sampled Main.py implements these capabilities directly. All application components below share that source file; dependency edges reflect calls visible there.

Main entry points: [`Main.py`](https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py) (Screening workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Hiring interface"]
  node_interface["Streamlit interface<br/>[Main.py]"]
  node_workflow["Screening workflow<br/>[Main.py]"]
end

subgraph group_processing["Resume processing"]
  node_pdf_extract["PDF text extraction<br/>[Main.py]"]
  node_pdf_reader["PyPDF2 reader"]
  node_resume_rank["Resume ranking<br/>[Main.py]"]
  node_tfidf["TF-IDF vectors"]
  node_similarity["Cosine similarity"]
end

subgraph group_results["Ranked results"]
  node_result_table["Sorted score table<br/>[Main.py]"]
  node_pandas["Pandas DataFrame"]
end

node_recruiter(("Recruiter"))

node_recruiter -->|"enters inputs"| node_interface
node_interface -->|"passes inputs"| node_workflow
node_workflow -->|"extracts resumes"| node_pdf_extract
node_pdf_extract -->|"reads PDFs"| node_pdf_reader
node_workflow -->|"ranks resumes"| node_resume_rank
node_resume_rank -->|"builds vectors"| node_tfidf
node_resume_rank -->|"calculates scores"| node_similarity
node_workflow -->|"builds sorted results"| node_result_table
node_result_table -->|"creates DataFrame"| node_pandas
node_workflow -->|"displays rankings"| node_interface
node_interface -->|"shows results"| node_recruiter

click node_interface "https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py"
click node_workflow "https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py"
click node_pdf_extract "https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py"
click node_resume_rank "https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py"
click node_result_table "https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.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_interface,node_workflow toneBlue
class node_pdf_extract,node_pdf_reader,node_resume_rank,node_tfidf,node_similarity toneAmber
class node_result_table,node_pandas toneMint
class node_recruiter toneIndigo
```

## Components

### Hiring interface

- [Streamlit interface](https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py): `Main.py`
- [Screening workflow](https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py): `Main.py`

### Resume processing

- [PDF text extraction](https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py): `Main.py`
- **PyPDF2 reader**
- [Resume ranking](https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py): `Main.py`
- **TF-IDF vectors**
- **Cosine similarity**

### Ranked results

- [Sorted score table](https://github.com/codewithshek/ai-powered-resume-screening-and-ranking-system/blob/master/Main.py): `Main.py`
- **Pandas DataFrame**

### Other components

- **Recruiter**

## Connections

- Recruiter → Streamlit interface: enters inputs
- Streamlit interface → Screening workflow: passes inputs
- Screening workflow → PDF text extraction: extracts resumes
- PDF text extraction → PyPDF2 reader: reads PDFs
- Screening workflow → Resume ranking: ranks resumes
- Resume ranking → TF-IDF vectors: builds vectors
- Resume ranking → Cosine similarity: calculates scores
- Screening workflow → Sorted score table: builds sorted results
- Sorted score table → Pandas DataFrame: creates DataFrame
- Screening workflow → Streamlit interface: displays rankings
- Streamlit interface → Recruiter: shows results
