# viniciusrodriguesai/resume-agent-system architecture

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

- Interactive diagram: https://gitdiagram.com/viniciusrodriguesai/resume-agent-system
- Repository: https://github.com/viniciusrodriguesai/resume-agent-system

## Overview

Resume Match AI is a local resume-to-job comparison application. Users provide resume and job text through Streamlit or the FastAPI endpoint; the application returns requirement-level evidence, a compatibility score, review suggestions, diagnostics, and exportable reports. Its documented stages include privacy, candidate and job parsing, evidence retrieval, scoring, review, recommendations, and reporting. The excerpts show several orchestration and persistence links; unsampled stage wiring is not inferred.

Main entry points: [`resume_ai/application/analyze_resume.py`](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/application/analyze_resume.py) (Analysis service), [`resume_ai/application/pipeline.py`](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/application/pipeline.py) (Stage pipeline), [`resume_ai/agents/evidence_agent.py`](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/evidence_agent.py) (Evidence retrieval), [`app.py`](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/app.py) (Streamlit app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User interfaces"]
  node_streamlit["Streamlit app<br/>[app.py]"]
  node_api["FastAPI<br/>[main.py]"]
end

subgraph group_application["Analysis orchestration"]
  node_service["Analysis service<br/>[analyze_resume.py]"]
  node_pipeline["Stage pipeline<br/>[pipeline.py]"]
  node_models["Analysis models<br/>[models.py]"]
end

subgraph group_stages["Matching stages"]
  node_privacy["Privacy handling<br/>[privacy.py]"]
  node_candidate["Candidate parsing<br/>[candidate_agent.py]"]
  node_job["Job requirements<br/>[job_agent.py]"]
  node_catalog["Skill catalog<br/>[catalog.py]"]
  node_evidence["Evidence retrieval<br/>[evidence_agent.py]"]
  node_scoring["Compatibility scoring<br/>[scoring_agent.py]"]
  node_review["Review suggestions<br/>[review_agent.py]"]
  node_recommendations["Recommendations"]
  node_report["Reports and exports<br/>[report_agent.py]"]
end

subgraph group_runtime["Runtime services"]
  node_embeddings["Embedding engine<br/>[embeddings.py]"]
  node_history[("Analysis history<br/>[history.py]")]
  node_cache[("Result cache<br/>[cache.py]")]
  node_security["Document security<br/>[security.py]"]
end

subgraph group_evaluation["Evaluation"]
  node_evaluation["Evaluation metrics<br/>[classification.py]"]
end

node_user(("Analyst"))

node_user -->|"enters analysis"| node_streamlit
node_user -->|"submits request"| node_api
node_streamlit -->|"invokes analysis"| node_service
node_api -->|"invokes analysis"| node_service
node_service -->|"runs stages"| node_pipeline
node_service -->|"creates engine"| node_embeddings
node_service -->|"checks and stores"| node_cache
node_service -->|"saves result"| node_history
node_pipeline -->|"runs privacy"| node_privacy
node_pipeline -->|"parses candidate"| node_candidate
node_pipeline -->|"retrieves evidence"| node_evidence
node_pipeline -->|"scores matches"| node_scoring
node_pipeline -->|"creates suggestions"| node_recommendations
node_evidence -->|"retrieves candidates"| node_embeddings
node_job -->|"uses skill catalog"| node_catalog
node_evidence -->|"uses skill catalog"| node_catalog
node_service -->|"regenerates cached report"| node_report

click node_streamlit "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/app.py"
click node_api "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/api/main.py"
click node_service "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/application/analyze_resume.py"
click node_pipeline "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/application/pipeline.py"
click node_models "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/domain/models.py"
click node_privacy "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/privacy.py"
click node_candidate "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/candidate_agent.py"
click node_job "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/job_agent.py"
click node_catalog "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/catalog.py"
click node_evidence "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/evidence_agent.py"
click node_embeddings "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/embeddings.py"
click node_scoring "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/scoring_agent.py"
click node_review "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/review_agent.py"
click node_recommendations "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/recommendation_agent.py"
click node_report "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/report_agent.py"
click node_history "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/history.py"
click node_cache "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/cache.py"
click node_security "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/security.py"
click node_evaluation "https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/evaluation/metrics/classification.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_streamlit,node_api toneBlue
class node_service,node_pipeline,node_models toneAmber
class node_privacy,node_candidate,node_job,node_catalog,node_evidence,node_scoring,node_review,node_recommendations,node_report toneMint
class node_embeddings,node_history,node_cache,node_security toneRose
class node_evaluation,node_user toneIndigo
```

## Components

### User interfaces

- [Streamlit app](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/app.py): `app.py`
- [FastAPI](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/api/main.py): `api/main.py`

### Analysis orchestration

- [Analysis service](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/application/analyze_resume.py): `resume_ai/application/analyze_resume.py`
- [Stage pipeline](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/application/pipeline.py): `resume_ai/application/pipeline.py`
- [Analysis models](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/domain/models.py): `resume_ai/domain/models.py`

### Matching stages

- [Privacy handling](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/privacy.py): `resume_ai/infrastructure/privacy.py`
- [Candidate parsing](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/candidate_agent.py): `resume_ai/agents/candidate_agent.py`
- [Job requirements](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/job_agent.py): `resume_ai/agents/job_agent.py`
- [Skill catalog](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/catalog.py): `resume_ai/agents/catalog.py`
- [Evidence retrieval](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/evidence_agent.py): `resume_ai/agents/evidence_agent.py`
- [Compatibility scoring](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/scoring_agent.py): `resume_ai/agents/scoring_agent.py`
- [Review suggestions](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/review_agent.py): `resume_ai/agents/review_agent.py`
- [Recommendations](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/recommendation_agent.py): `resume_ai/agents/recommendation_agent.py`
- [Reports and exports](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/agents/report_agent.py): `resume_ai/agents/report_agent.py`

### Runtime services

- [Embedding engine](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/embeddings.py): `resume_ai/infrastructure/embeddings.py`
- [Analysis history](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/history.py): `resume_ai/infrastructure/history.py`
- [Result cache](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/cache.py): `resume_ai/infrastructure/cache.py`
- [Document security](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/resume_ai/infrastructure/security.py): `resume_ai/infrastructure/security.py`

### Evaluation

- [Evaluation metrics](https://github.com/viniciusrodriguesai/resume-agent-system/blob/main/evaluation/metrics/classification.py): `evaluation/metrics/classification.py`

### Other components

- **Analyst**

## Connections

- Analyst → Streamlit app: enters analysis (evidence: `README.md`)
- Analyst → FastAPI: submits request (evidence: `README.md`)
- Streamlit app → Analysis service: invokes analysis (evidence: `app.py`)
- FastAPI → Analysis service: invokes analysis (evidence: `api/main.py`)
- Analysis service → Stage pipeline: runs stages (evidence: `resume_ai/application/analyze_resume.py`)
- Analysis service → Embedding engine: creates engine (evidence: `resume_ai/application/analyze_resume.py`)
- Analysis service → Result cache: checks and stores (evidence: `resume_ai/application/analyze_resume.py`)
- Analysis service → Analysis history: saves result (evidence: `resume_ai/application/analyze_resume.py`)
- Stage pipeline → Privacy handling: runs privacy (evidence: `resume_ai/application/pipeline.py`)
- Stage pipeline → Candidate parsing: parses candidate (evidence: `resume_ai/application/pipeline.py`)
- Stage pipeline → Evidence retrieval: retrieves evidence (evidence: `resume_ai/application/pipeline.py`)
- Stage pipeline → Compatibility scoring: scores matches (evidence: `resume_ai/application/pipeline.py`)
- Stage pipeline → Recommendations: creates suggestions (evidence: `resume_ai/application/pipeline.py`)
- Evidence retrieval → Embedding engine: retrieves candidates (evidence: `resume_ai/agents/evidence_agent.py`)
- Job requirements → Skill catalog: uses skill catalog (evidence: `resume_ai/agents/job_agent.py`)
- Evidence retrieval → Skill catalog: uses skill catalog (evidence: `resume_ai/agents/evidence_agent.py`)
- Analysis service → Reports and exports: regenerates cached report (evidence: `resume_ai/application/analyze_resume.py`)
