# abhishek-3191/meeting-assistant architecture

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

- Interactive diagram: https://gitdiagram.com/abhishek-3191/meeting-assistant
- Repository: https://github.com/abhishek-3191/meeting-assistant

## Overview

This is an AI meeting assistant: users provide a recording or YouTube URL, receive a transcript and meeting insights, and can ask questions about the meeting. The CLI pipeline in `main.py` explicitly orchestrates audio processing, transcription, title and summary generation, insight extraction, and RAG setup. `app.py` provides a Streamlit interface with result views, chat, and TXT/PDF export. The README is empty; relationships for the UI’s processing flow and the unsampled RAG and audio-processing internals are therefore not asserted.

Main entry points: [`main.py`](https://github.com/abhishek-3191/meeting-assistant/blob/main/main.py) (CLI workflow), [`core/transcriber.py`](https://github.com/abhishek-3191/meeting-assistant/blob/main/core/transcriber.py) (Transcription), [`app.py`](https://github.com/abhishek-3191/meeting-assistant/blob/main/app.py) (Streamlit app), [`utils/audio_processor.py`](https://github.com/abhishek-3191/meeting-assistant/blob/main/utils/audio_processor.py) (Audio processing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User interfaces"]
  node_cli["CLI workflow<br/>[main.py]"]
  node_web["Streamlit app<br/>[app.py]"]
end

subgraph group_media["Audio and transcription"]
  node_audio["Audio processing<br/>[audio_processor.py]"]
  node_transcribe["Transcription<br/>[transcriber.py]"]
end

subgraph group_analysis["Meeting analysis"]
  node_title["Title generation<br/>[summarizer.py]"]
  node_summary["Meeting summary<br/>[summarizer.py]"]
  node_insights["Insight extraction<br/>[extractor.py]"]
end

subgraph group_knowledge["Meeting Q&amp;A"]
  node_rag["RAG question answering<br/>[rag_engine.py]"]
  node_vectors[("Vector storage<br/>[vector_store.py]")]
end

node_user(("Meeting user"))
node_whisper["Whisper model"]
node_gemini["Gemini API"]

node_user -->|"provides source"| node_cli
node_cli -->|"processes input"| node_audio
node_cli -->|"transcribes chunks"| node_transcribe
node_audio -->|"provides chunks"| node_transcribe
node_transcribe -->|"transcribes audio"| node_whisper
node_transcribe -->|"translates transcript"| node_gemini
node_cli -->|"generates title"| node_title
node_cli -->|"summarizes transcript"| node_summary
node_cli -->|"extracts insights"| node_insights
node_title -->|"generates text"| node_gemini
node_summary -->|"generates text"| node_gemini
node_insights -->|"generates text"| node_gemini
node_cli -->|"builds RAG chain"| node_rag
node_cli -->|"asks questions"| node_rag
node_user -->|"uses interface"| node_web
node_web -->|"shows results and exports"| node_user
node_web -->|"offers meeting chat"| node_user

click node_cli "https://github.com/abhishek-3191/meeting-assistant/blob/main/main.py"
click node_web "https://github.com/abhishek-3191/meeting-assistant/blob/main/app.py"
click node_audio "https://github.com/abhishek-3191/meeting-assistant/blob/main/utils/audio_processor.py"
click node_transcribe "https://github.com/abhishek-3191/meeting-assistant/blob/main/core/transcriber.py"
click node_title "https://github.com/abhishek-3191/meeting-assistant/blob/main/core/summarizer.py"
click node_summary "https://github.com/abhishek-3191/meeting-assistant/blob/main/core/summarizer.py"
click node_insights "https://github.com/abhishek-3191/meeting-assistant/blob/main/core/extractor.py"
click node_rag "https://github.com/abhishek-3191/meeting-assistant/blob/main/core/rag_engine.py"
click node_vectors "https://github.com/abhishek-3191/meeting-assistant/blob/main/core/vector_store.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_cli,node_web,node_user toneBlue
class node_audio,node_transcribe toneAmber
class node_title,node_summary,node_insights,node_gemini toneMint
class node_rag,node_vectors toneRose
class node_whisper toneIndigo
```

## Components

### User interfaces

- [CLI workflow](https://github.com/abhishek-3191/meeting-assistant/blob/main/main.py): `main.py`
- [Streamlit app](https://github.com/abhishek-3191/meeting-assistant/blob/main/app.py): `app.py`

### Audio and transcription

- [Audio processing](https://github.com/abhishek-3191/meeting-assistant/blob/main/utils/audio_processor.py): `utils/audio_processor.py`
- [Transcription](https://github.com/abhishek-3191/meeting-assistant/blob/main/core/transcriber.py): `core/transcriber.py`

### Meeting analysis

- [Title generation](https://github.com/abhishek-3191/meeting-assistant/blob/main/core/summarizer.py): `core/summarizer.py`
- [Meeting summary](https://github.com/abhishek-3191/meeting-assistant/blob/main/core/summarizer.py): `core/summarizer.py`
- [Insight extraction](https://github.com/abhishek-3191/meeting-assistant/blob/main/core/extractor.py): `core/extractor.py`

### Meeting Q&A

- [RAG question answering](https://github.com/abhishek-3191/meeting-assistant/blob/main/core/rag_engine.py): `core/rag_engine.py`
- [Vector storage](https://github.com/abhishek-3191/meeting-assistant/blob/main/core/vector_store.py): `core/vector_store.py`

### Other components

- **Meeting user**
- **Whisper model**
- **Gemini API**

## Connections

- Meeting user → CLI workflow: provides source (evidence: `main.py`)
- CLI workflow → Audio processing: processes input (evidence: `main.py`)
- CLI workflow → Transcription: transcribes chunks (evidence: `main.py`)
- Audio processing → Transcription: provides chunks (evidence: `main.py`)
- Transcription → Whisper model: transcribes audio (evidence: `core/transcriber.py`)
- Transcription → Gemini API: translates transcript (evidence: `core/transcriber.py`)
- CLI workflow → Title generation: generates title (evidence: `main.py`)
- CLI workflow → Meeting summary: summarizes transcript (evidence: `main.py`)
- CLI workflow → Insight extraction: extracts insights (evidence: `main.py`)
- Title generation → Gemini API: generates text (evidence: `core/summarizer.py`)
- Meeting summary → Gemini API: generates text (evidence: `core/summarizer.py`)
- Insight extraction → Gemini API: generates text (evidence: `core/extractor.py`)
- CLI workflow → RAG question answering: builds RAG chain (evidence: `main.py`)
- CLI workflow → RAG question answering: asks questions (evidence: `main.py`)
- Meeting user → Streamlit app: uses interface (evidence: `app.py`)
- Streamlit app → Meeting user: shows results and exports (evidence: `app.py`)
- Streamlit app → Meeting user: offers meeting chat (evidence: `app.py`)
