# divyatripathi1406/ai_engineering architecture

> Architecture diagram of the GitHub repository divyatripathi1406/ai_engineering, 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/divyatripathi1406/ai_engineering
- Repository: https://github.com/divyatripathi1406/ai_engineering

## Overview

This repository is a set of small Python learning exercises, with sampled examples for resume screening and two retrieval-augmented question-answering approaches. The resume workflow reads PDF/DOCX files, extracts structured candidate data, scores candidates against a job description, and ranks results. The RAG examples retrieve context differently before asking Groq to answer. Other tree entries have no documented product behavior in the supplied excerpts, so they are not expanded here; some resume-parser internals are omitted, so only supported workflow links are shown.

Main entry points: [`week1/day5/resume_parser.py`](https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py) (Resume processing), [`week3/day13/com_Rag.py`](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py) (Vector RAG), [`week3/day11_rag/rag_intro.py`](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day11_rag/rag_intro.py) (Keyword RAG)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_resume["Resume Screening"]
  node_resume_flow["Resume processing<br/>[resume_parser.py]"]
  node_resume_reader["PDF/DOCX reader<br/>[resume_parser.py]"]
  node_resume_parser["Resume parser<br/>[resume_parser.py]"]
  node_resume_matcher["Candidate scorer<br/>[resume_parser.py]"]
  node_ranked["Ranked candidates<br/>[resume_parser.py]"]
end

subgraph group_rag_keyword["Keyword RAG"]
  node_keyword_flow["Keyword RAG<br/>[rag_intro.py]"]
  node_keyword_retrieval["Keyword retrieval<br/>[rag_intro.py]"]
  node_keyword_kb[("Knowledge base<br/>[rag_intro.py]")]
  node_keyword_answer["Answer generation<br/>[rag_intro.py]"]
end

subgraph group_rag_vector["Vector RAG"]
  node_vector_flow["Vector RAG<br/>[com_Rag.py]"]
  node_embedding_model["Embedding model<br/>[com_Rag.py]"]
  node_vector_retrieval["Similarity retrieval<br/>[com_Rag.py]"]
  node_vector_docs["Policy documents<br/>[com_Rag.py]"]
  node_vector_answer["Answer generation<br/>[com_Rag.py]"]
end

node_candidate["Candidate resumes"]
node_groq_resume{{"Groq API"}}
node_question_keyword(("Question"))
node_groq_keyword{{"Groq API"}}
node_question_vector(("Question"))
node_groq_vector{{"Groq API"}}

node_candidate -->|"processes files"| node_resume_flow
node_resume_flow -->|"reads files"| node_resume_reader
node_resume_flow -->|"parses text"| node_resume_parser
node_resume_flow -->|"scores candidates"| node_resume_matcher
node_resume_parser -->|"requests extraction"| node_groq_resume
node_resume_matcher -->|"requests scoring"| node_groq_resume
node_resume_flow -->|"ranks results"| node_ranked
node_question_keyword -->|"asks"| node_keyword_flow
node_keyword_flow -->|"retrieves context"| node_keyword_retrieval
node_keyword_retrieval -->|"looks up facts"| node_keyword_kb
node_keyword_flow -->|"generates answer"| node_keyword_answer
node_keyword_answer -->|"requests completion"| node_groq_keyword
node_question_vector -->|"asks"| node_vector_flow
node_vector_flow -->|"encodes query"| node_embedding_model
node_vector_flow -->|"retrieves context"| node_vector_retrieval
node_vector_retrieval -->|"compares embeddings"| node_vector_docs
node_vector_flow -->|"generates answer"| node_vector_answer
node_vector_answer -->|"requests completion"| node_groq_vector

click node_resume_flow "https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py"
click node_resume_reader "https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py"
click node_resume_parser "https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py"
click node_resume_matcher "https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py"
click node_ranked "https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py"
click node_keyword_flow "https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day11_rag/rag_intro.py"
click node_keyword_retrieval "https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day11_rag/rag_intro.py"
click node_keyword_kb "https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day11_rag/rag_intro.py"
click node_keyword_answer "https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day11_rag/rag_intro.py"
click node_vector_flow "https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py"
click node_embedding_model "https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py"
click node_vector_retrieval "https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py"
click node_vector_docs "https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py"
click node_vector_answer "https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.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_resume_flow,node_resume_reader,node_resume_parser,node_resume_matcher,node_ranked toneBlue
class node_keyword_flow,node_keyword_retrieval,node_keyword_kb,node_keyword_answer toneAmber
class node_vector_flow,node_embedding_model,node_vector_retrieval,node_vector_docs,node_vector_answer,node_groq_resume,node_groq_keyword,node_groq_vector toneMint
class node_candidate,node_question_keyword,node_question_vector toneIndigo
```

## Components

### Resume Screening

- [Resume processing](https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py): `week1/day5/resume_parser.py`
- [PDF/DOCX reader](https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py): `week1/day5/resume_parser.py`
- [Resume parser](https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py): `week1/day5/resume_parser.py`
- [Candidate scorer](https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py): `week1/day5/resume_parser.py`
- [Ranked candidates](https://github.com/divyatripathi1406/ai_engineering/blob/master/week1/day5/resume_parser.py): `week1/day5/resume_parser.py`

### Keyword RAG

- [Keyword RAG](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day11_rag/rag_intro.py): `week3/day11_rag/rag_intro.py`
- [Keyword retrieval](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day11_rag/rag_intro.py): `week3/day11_rag/rag_intro.py`
- [Knowledge base](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day11_rag/rag_intro.py): `week3/day11_rag/rag_intro.py`
- [Answer generation](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day11_rag/rag_intro.py): `week3/day11_rag/rag_intro.py`

### Vector RAG

- [Vector RAG](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py): `week3/day13/com_Rag.py`
- [Embedding model](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py): `week3/day13/com_Rag.py`
- [Similarity retrieval](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py): `week3/day13/com_Rag.py`
- [Policy documents](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py): `week3/day13/com_Rag.py`
- [Answer generation](https://github.com/divyatripathi1406/ai_engineering/blob/master/week3/day13/com_Rag.py): `week3/day13/com_Rag.py`

### Other components

- **Candidate resumes**
- **Groq API**
- **Question**
- **Groq API**
- **Question**
- **Groq API**

## Connections

- Candidate resumes → Resume processing: processes files
- Resume processing → PDF/DOCX reader: reads files
- Resume processing → Resume parser: parses text
- Resume processing → Candidate scorer: scores candidates
- Resume parser → Groq API: requests extraction
- Candidate scorer → Groq API: requests scoring
- Resume processing → Ranked candidates: ranks results
- Question → Keyword RAG: asks
- Keyword RAG → Keyword retrieval: retrieves context
- Keyword retrieval → Knowledge base: looks up facts
- Keyword RAG → Answer generation: generates answer
- Answer generation → Groq API: requests completion
- Question → Vector RAG: asks
- Vector RAG → Embedding model: encodes query
- Vector RAG → Similarity retrieval: retrieves context
- Similarity retrieval → Policy documents: compares embeddings
- Vector RAG → Answer generation: generates answer
- Answer generation → Groq API: requests completion
