# ramkishan576/ai-driven-job-matching-assistant architecture

> Architecture diagram of the GitHub repository ramkishan576/ai-driven-job-matching-assistant, 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/ramkishan576/ai-driven-job-matching-assistant
- Repository: https://github.com/ramkishan576/ai-driven-job-matching-assistant

## Overview

ResMatchAI is a Streamlit resume-to-job matching application. A user uploads a PDF and either pastes a job description or supplies keywords to generate one. The app extracts resume text, then invokes two independent matchers: Gemini returns a score, skill insights, and an explanation; BERT computes a semantic similarity score. The app displays both results. The source confirms these calls and the Gemini integrations; model internals and deployment details are not shown.

Main entry points: [`main.py`](https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/main.py) (Streamlit App), [`jd_generator.py`](https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/jd_generator.py) (JD Generator), [`langchain_gemini.py`](https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/langchain_gemini.py) (Gemini Matcher), [`matcher_bert.py`](https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/matcher_bert.py) (BERT Matcher)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User Interface"]
  node_app["Streamlit App<br/>[main.py]"]
end

subgraph group_preparation["Input Preparation"]
  node_extractor["PDF Extractor<br/>[extractor.py]"]
  node_jd_generator["JD Generator<br/>[jd_generator.py]"]
end

subgraph group_matching["Matching Engines"]
  node_gemini_matcher["Gemini Matcher"]
  node_bert_matcher["BERT Matcher<br/>[matcher_bert.py]"]
end

subgraph group_integrations["AI Integrations"]
  node_gemini_api{{"Gemini API"}}
  node_sentence_transformers["SentenceTransformer"]
end

node_user(("User"))

node_user -->|"uploads and enters"| node_app
node_app -->|"displays results"| node_user
node_app -->|"extracts PDF text"| node_extractor
node_app -->|"generates JD"| node_jd_generator
node_app -->|"requests analysis"| node_gemini_matcher
node_app -->|"requests score"| node_bert_matcher
node_jd_generator -->|"generates JD"| node_gemini_api
node_gemini_matcher -->|"analyzes match"| node_gemini_api
node_bert_matcher -->|"encodes text"| node_sentence_transformers

click node_app "https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/main.py"
click node_extractor "https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/extractor.py"
click node_jd_generator "https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/jd_generator.py"
click node_gemini_matcher "https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/langchain_gemini.py"
click node_bert_matcher "https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/matcher_bert.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_user toneBlue
class node_extractor,node_jd_generator toneAmber
class node_gemini_matcher,node_bert_matcher toneMint
class node_gemini_api,node_sentence_transformers toneRose
```

## Components

### User Interface

- [Streamlit App](https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/main.py): `main.py`

### Input Preparation

- [PDF Extractor](https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/extractor.py): `extractor.py`
- [JD Generator](https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/jd_generator.py): `jd_generator.py`

### Matching Engines

- [Gemini Matcher](https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/langchain_gemini.py): `langchain_gemini.py`
- [BERT Matcher](https://github.com/ramkishan576/ai-driven-job-matching-assistant/blob/main/matcher_bert.py): `matcher_bert.py`

### AI Integrations

- **Gemini API**
- **SentenceTransformer**

### Other components

- **User**

## Connections

- User → Streamlit App: uploads and enters
- Streamlit App → User: displays results
- Streamlit App → PDF Extractor: extracts PDF text
- Streamlit App → JD Generator: generates JD
- Streamlit App → Gemini Matcher: requests analysis
- Streamlit App → BERT Matcher: requests score
- JD Generator → Gemini API: generates JD
- Gemini Matcher → Gemini API: analyzes match
- BERT Matcher → SentenceTransformer: encodes text
