# bhanuteja072/meetiq architecture

> Architecture diagram of the GitHub repository bhanuteja072/meetiq, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bhanuteja072/meetiq
- Repository: https://github.com/bhanuteja072/meetiq

## Overview

MeetIQ turns uploaded recordings or transcripts into diarized meeting records, structured AI reports, and searchable insights. The main flow runs from the React interface through FastAPI upload, transcription, analysis, persistence, and embedding/search services. The README documents integrations and capabilities not fully visible in the excerpts; those links are cited to the README. Source evidence is incomplete, so uncertain implementation-level connections are omitted.

Main entry points: [`frontend/src/api/client.js`](https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/api/client.js) (API client), [`backend/databases/mongo.py`](https://github.com/bhanuteja072/meetiq/blob/main/backend/databases/mongo.py) (MongoDB), [`frontend/src/App.jsx`](https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/App.jsx) (React application), [`backend/services/rag/embeddings.py`](https://github.com/bhanuteja072/meetiq/blob/main/backend/services/rag/embeddings.py) (Chunking and embeddings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["User interface"]
  node_webapp["React application<br/>[App.jsx]"]
  node_api_client["API client<br/>[client.js]"]
  node_auth_context["Auth context<br/>[AuthContext.jsx]"]
  node_meeting_pages["Meeting pages<br/>[MeetingDetail.jsx]"]
  node_archive_page["Archive page<br/>[Archive.jsx]"]
  node_search_page["Search page<br/>[Search.jsx]"]
end

subgraph group_api["Backend API"]
  node_auth_router["Auth routes<br/>[auth.py]"]
  node_transcription_router["Transcription routes<br/>[transcription.py]"]
  node_meeting_router["Meeting routes<br/>[meetings.py]"]
  node_analysis_router["Analysis routes<br/>[analysis.py]"]
  node_search_router["Search routes<br/>[search.py]"]
end

subgraph group_processing["Meeting processing"]
  node_transcription_service["Transcription and diarization<br/>[speaker_service.py]"]
  node_analysis_pipeline["Analysis pipeline<br/>[pipeline.py]"]
  node_analysis_state["Report state<br/>[state.py]"]
  node_report_agents["Report agents"]
end

subgraph group_identity["Identity and access"]
  node_auth_service["Token and password service<br/>[auth_service.py]"]
  node_auth_dependency["JWT user dependency<br/>[auth.py]"]
end

subgraph group_data["Persistence and retrieval"]
  node_embedding_service["Chunking and embeddings<br/>[embeddings.py]"]
  node_rag_search["RAG search<br/>[search.py]"]
  node_mongo[("MongoDB<br/>[mongo.py]")]
end

node_user(("Meeting user"))
node_assemblyai["AssemblyAI"]
node_jina["Jina embeddings API"]
node_groq["Groq language model"]

node_user -->|"uses"| node_webapp
node_webapp -->|"routes to"| node_meeting_pages
node_webapp -->|"routes to"| node_archive_page
node_webapp -->|"routes to"| node_search_page
node_webapp -->|"provides auth"| node_auth_context
node_meeting_pages -->|"requests data"| node_api_client
node_archive_page -->|"requests meetings"| node_api_client
node_search_page -->|"submits queries"| node_api_client
node_api_client -->|"uploads files"| node_transcription_router
node_api_client -->|"triggers analysis"| node_analysis_router
node_api_client -->|"requests meetings"| node_meeting_router
node_api_client -->|"sends queries"| node_search_router
node_api_client -->|"authenticates"| node_auth_router
node_auth_router -->|"hashes and signs"| node_auth_service
node_auth_router -->|"reads and writes"| node_mongo
node_auth_dependency -->|"decodes token"| node_auth_service
node_auth_dependency -->|"looks up user"| node_mongo
node_transcription_router -->|"processes audio"| node_transcription_service
node_transcription_router -->|"creates meeting"| node_mongo
node_transcription_service -->|"transcribes and diarizes"| node_assemblyai
node_analysis_router -->|"runs analysis"| node_analysis_pipeline
node_analysis_pipeline -->|"uses shared state"| node_analysis_state
node_analysis_pipeline -->|"dispatches agents"| node_report_agents
node_analysis_router -->|"saves report"| node_mongo
node_analysis_router -->|"indexes report"| node_embedding_service
node_embedding_service -->|"stores chunks"| node_mongo
node_embedding_service -->|"requests vectors"| node_jina
node_search_router -->|"runs retrieval"| node_rag_search
node_rag_search -->|"uses embeddings"| node_embedding_service
node_rag_search -->|"retrieves chunks"| node_mongo
node_rag_search -->|"generates answers"| node_groq
node_meeting_router -->|"reads and updates"| node_mongo
node_meeting_router -->|"removes meeting chunks"| node_embedding_service

click node_webapp "https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/App.jsx"
click node_api_client "https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/api/client.js"
click node_auth_context "https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/auth/AuthContext.jsx"
click node_meeting_pages "https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/pages/MeetingDetail.jsx"
click node_archive_page "https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/pages/Archive.jsx"
click node_search_page "https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/pages/Search.jsx"
click node_auth_router "https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/auth.py"
click node_transcription_router "https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/transcription.py"
click node_meeting_router "https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/meetings.py"
click node_analysis_router "https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/analysis.py"
click node_search_router "https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/search.py"
click node_transcription_service "https://github.com/bhanuteja072/meetiq/blob/main/backend/services/speaker_service.py"
click node_analysis_pipeline "https://github.com/bhanuteja072/meetiq/blob/main/backend/services/graph/pipeline.py"
click node_analysis_state "https://github.com/bhanuteja072/meetiq/blob/main/backend/services/graph/state.py"
click node_report_agents "https://github.com/bhanuteja072/meetiq/tree/main/backend/services/agents"
click node_embedding_service "https://github.com/bhanuteja072/meetiq/blob/main/backend/services/rag/embeddings.py"
click node_rag_search "https://github.com/bhanuteja072/meetiq/blob/main/backend/services/rag/search.py"
click node_mongo "https://github.com/bhanuteja072/meetiq/blob/main/backend/databases/mongo.py"
click node_auth_service "https://github.com/bhanuteja072/meetiq/blob/main/backend/services/auth_service.py"
click node_auth_dependency "https://github.com/bhanuteja072/meetiq/blob/main/backend/dependencies/auth.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_webapp,node_api_client,node_auth_context,node_meeting_pages,node_archive_page,node_search_page,node_user toneBlue
class node_auth_router,node_transcription_router,node_meeting_router,node_analysis_router,node_search_router toneAmber
class node_transcription_service,node_analysis_pipeline,node_analysis_state,node_report_agents,node_jina toneMint
class node_auth_service,node_auth_dependency toneRose
class node_embedding_service,node_rag_search,node_mongo,node_assemblyai,node_groq toneIndigo
```

## Components

### User interface

- [React application](https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [API client](https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/api/client.js): `frontend/src/api/client.js`
- [Auth context](https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/auth/AuthContext.jsx): `frontend/src/auth/AuthContext.jsx`
- [Meeting pages](https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/pages/MeetingDetail.jsx): `frontend/src/pages/MeetingDetail.jsx`
- [Archive page](https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/pages/Archive.jsx): `frontend/src/pages/Archive.jsx`
- [Search page](https://github.com/bhanuteja072/meetiq/blob/main/frontend/src/pages/Search.jsx): `frontend/src/pages/Search.jsx`

### Backend API

- [Auth routes](https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/auth.py): `backend/routers/auth.py`
- [Transcription routes](https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/transcription.py): `backend/routers/transcription.py`
- [Meeting routes](https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/meetings.py): `backend/routers/meetings.py`
- [Analysis routes](https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/analysis.py): `backend/routers/analysis.py`
- [Search routes](https://github.com/bhanuteja072/meetiq/blob/main/backend/routers/search.py): `backend/routers/search.py`

### Meeting processing

- [Transcription and diarization](https://github.com/bhanuteja072/meetiq/blob/main/backend/services/speaker_service.py): `backend/services/speaker_service.py`
- [Analysis pipeline](https://github.com/bhanuteja072/meetiq/blob/main/backend/services/graph/pipeline.py): `backend/services/graph/pipeline.py`
- [Report state](https://github.com/bhanuteja072/meetiq/blob/main/backend/services/graph/state.py): `backend/services/graph/state.py`
- [Report agents](https://github.com/bhanuteja072/meetiq/tree/main/backend/services/agents): `backend/services/agents`

### Identity and access

- [Token and password service](https://github.com/bhanuteja072/meetiq/blob/main/backend/services/auth_service.py): `backend/services/auth_service.py`
- [JWT user dependency](https://github.com/bhanuteja072/meetiq/blob/main/backend/dependencies/auth.py): `backend/dependencies/auth.py`

### Persistence and retrieval

- [Chunking and embeddings](https://github.com/bhanuteja072/meetiq/blob/main/backend/services/rag/embeddings.py): `backend/services/rag/embeddings.py`
- [RAG search](https://github.com/bhanuteja072/meetiq/blob/main/backend/services/rag/search.py): `backend/services/rag/search.py`
- [MongoDB](https://github.com/bhanuteja072/meetiq/blob/main/backend/databases/mongo.py): `backend/databases/mongo.py`

### Other components

- **Meeting user**
- **AssemblyAI**
- **Jina embeddings API**
- **Groq language model**

## Connections

- Meeting user → React application: uses (evidence: `README.md`)
- React application → Meeting pages: routes to (evidence: `frontend/src/App.jsx`)
- React application → Archive page: routes to (evidence: `frontend/src/App.jsx`)
- React application → Search page: routes to (evidence: `frontend/src/App.jsx`)
- React application → Auth context: provides auth (evidence: `frontend/src/App.jsx`)
- Meeting pages → API client: requests data (evidence: `frontend/src/pages/MeetingDetail.jsx`)
- Archive page → API client: requests meetings (evidence: `frontend/src/pages/Archive.jsx`)
- Search page → API client: submits queries (evidence: `frontend/src/pages/Search.jsx`)
- API client → Transcription routes: uploads files (evidence: `frontend/src/api/client.js`)
- API client → Analysis routes: triggers analysis (evidence: `frontend/src/api/client.js`)
- API client → Meeting routes: requests meetings (evidence: `frontend/src/api/client.js`)
- API client → Search routes: sends queries (evidence: `frontend/src/api/client.js`)
- API client → Auth routes: authenticates (evidence: `frontend/src/api/client.js`)
- Auth routes → Token and password service: hashes and signs (evidence: `backend/routers/auth.py`)
- Auth routes → MongoDB: reads and writes (evidence: `backend/routers/auth.py`)
- JWT user dependency → Token and password service: decodes token (evidence: `backend/dependencies/auth.py`)
- JWT user dependency → MongoDB: looks up user (evidence: `backend/dependencies/auth.py`)
- Transcription routes → Transcription and diarization: processes audio (evidence: `backend/routers/transcription.py`)
- Transcription routes → MongoDB: creates meeting (evidence: `README.md`)
- Transcription and diarization → AssemblyAI: transcribes and diarizes (evidence: `README.md`)
- Analysis routes → Analysis pipeline: runs analysis (evidence: `backend/routers/analysis.py`)
- Analysis pipeline → Report state: uses shared state (evidence: `backend/services/graph/pipeline.py`)
- Analysis pipeline → Report agents: dispatches agents (evidence: `backend/services/graph/pipeline.py`)
- Analysis routes → MongoDB: saves report (evidence: `README.md`)
- Analysis routes → Chunking and embeddings: indexes report (evidence: `backend/routers/analysis.py`)
- Chunking and embeddings → MongoDB: stores chunks (evidence: `backend/services/rag/embeddings.py`)
- Chunking and embeddings → Jina embeddings API: requests vectors (evidence: `backend/services/rag/embeddings.py`)
- Search routes → RAG search: runs retrieval (evidence: `backend/routers/search.py`)
- RAG search → Chunking and embeddings: uses embeddings (evidence: `backend/services/rag/search.py`)
- RAG search → MongoDB: retrieves chunks (evidence: `backend/services/rag/search.py`)
- RAG search → Groq language model: generates answers (evidence: `README.md`)
- Meeting routes → MongoDB: reads and updates (evidence: `backend/routers/meetings.py`)
- Meeting routes → Chunking and embeddings: removes meeting chunks (evidence: `backend/routers/meetings.py`)
