# kevinjose102/interview-intelligence-agent architecture

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

- Interactive diagram: https://gitdiagram.com/kevinjose102/interview-intelligence-agent
- Repository: https://github.com/kevinjose102/interview-intelligence-agent

## Overview

Interview Intelligence Agent supports live interview capture and analysis, plus resume-based verification and post-interview reporting. The main workflow is Chrome Meet audio → transcription → session transcripts and live dashboard updates → AI follow-ups and assessments; resume upload adds profile extraction, claim consistency checks, and GitHub project verification. The README documents several capabilities whose endpoint internals were not sampled, so those links are shown only where documented; sampled source clarifies the audio and conversation flow.

Main entry points: [`backend/main.py`](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/main.py) (FastAPI backend), [`backend/audio_router.py`](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/audio_router.py) (Audio router), [`backend/resume_intelligence/pipeline.py`](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/pipeline.py) (Resume pipeline), [`frontend/main.js`](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/frontend/main.js) (Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_capture["Capture &amp; Transcription"]
  node_extension["Chrome extension"]
  node_audio["Audio router<br/>[audio_router.py]"]
  node_deepgram(("Deepgram STT"))
  node_transcripts["Transcript handler"]
end

subgraph group_interview["Interview Analysis"]
  node_conversations[("Conversation manager")]
  node_reasoning["LLM reasoning"]
  node_groq(("Groq LLM"))
end

subgraph group_resume["Resume Intelligence"]
  node_resume_upload["Resume pipeline<br/>[pipeline.py]"]
  node_pdf_parser["PDF extraction<br/>[resume_parser.py]"]
  node_profile_parser["Resume profile parser<br/>[llm_parser.py]"]
  node_resume_store[("Resume history")]
  node_github_verify["GitHub verifier<br/>[github_verifier.py]"]
  node_github(("GitHub API"))
  node_resume_rag["Resume retrieval<br/>[resume_rag.py]"]
  node_embedding["Embedding engine"]
end

subgraph group_app["Application Interfaces"]
  node_api["FastAPI backend<br/>[main.py]"]
  node_dashboard["Dashboard<br/>[main.js]"]
  node_api_client["Frontend API client<br/>[api.js]"]
end

node_interviewer(("Interviewer"))
node_candidate(("Candidate"))
node_meet(("Google Meet"))

node_interviewer -->|"starts capture"| node_extension
node_candidate -->|"speaks in"| node_meet
node_meet -->|"provides audio"| node_extension
node_extension -->|"streams audio"| node_audio
node_audio -->|"forwards audio"| node_deepgram
node_deepgram -->|"returns transcripts"| node_audio
node_audio -->|"submits chunks"| node_transcripts
node_transcripts -->|"adds turns"| node_conversations
node_conversations -->|"broadcasts updates"| node_dashboard
node_dashboard -->|"requests actions"| node_api_client
node_api_client -->|"calls endpoints"| node_api
node_api -->|"queries sessions"| node_conversations
node_api -->|"requests analysis"| node_reasoning
node_reasoning -->|"analyzes responses"| node_groq
node_api -->|"processes uploads"| node_resume_upload
node_resume_upload -->|"extracts text"| node_pdf_parser
node_resume_upload -->|"parses text"| node_profile_parser
node_profile_parser -.->|"extracts profile"| node_groq
node_api -->|"reads and writes"| node_resume_store
node_dashboard -->|"requests resume features"| node_api_client
node_api -->|"requests verification"| node_github_verify
node_github_verify -.->|"checks repositories"| node_github
node_api -.->|"uses resume context"| node_resume_rag
node_resume_rag -->|"generates vectors"| node_embedding

click node_extension "https://github.com/kevinjose102/interview-intelligence-agent/tree/main/extension"
click node_audio "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/audio_router.py"
click node_transcripts "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/transcript_handler.py"
click node_conversations "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/conversation_manager.py"
click node_api "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/main.py"
click node_dashboard "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/frontend/main.js"
click node_api_client "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/frontend/api.js"
click node_reasoning "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/llm_reasoning_engine.py"
click node_resume_upload "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/pipeline.py"
click node_pdf_parser "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/resume_parser.py"
click node_profile_parser "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/llm_parser.py"
click node_resume_store "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_history.json"
click node_github_verify "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/github_verifier.py"
click node_resume_rag "https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/resume_rag.py"
click node_embedding "https://github.com/kevinjose102/interview-intelligence-agent/tree/main/backend/resume_intelligence/embeddings"

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_extension,node_audio,node_deepgram,node_transcripts,node_interviewer toneBlue
class node_conversations,node_reasoning,node_groq toneAmber
class node_resume_upload,node_pdf_parser,node_profile_parser,node_resume_store,node_github_verify,node_github,node_resume_rag,node_embedding toneMint
class node_api,node_dashboard,node_api_client toneRose
class node_candidate,node_meet toneIndigo
```

## Components

### Capture & Transcription

- [Chrome extension](https://github.com/kevinjose102/interview-intelligence-agent/tree/main/extension): `extension`
- [Audio router](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/audio_router.py): `backend/audio_router.py`
- **Deepgram STT**
- [Transcript handler](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/transcript_handler.py): `backend/transcript_handler.py`

### Interview Analysis

- [Conversation manager](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/conversation_manager.py): `backend/conversation_manager.py`
- [LLM reasoning](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/llm_reasoning_engine.py): `backend/llm_reasoning_engine.py`
- **Groq LLM**

### Resume Intelligence

- [Resume pipeline](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/pipeline.py): `backend/resume_intelligence/pipeline.py`
- [PDF extraction](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/resume_parser.py): `backend/resume_intelligence/resume_parser.py`
- [Resume profile parser](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/llm_parser.py): `backend/resume_intelligence/llm_parser.py`
- [Resume history](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_history.json): `backend/resume_history.json`
- [GitHub verifier](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/github_verifier.py): `backend/resume_intelligence/github_verifier.py`
- **GitHub API**
- [Resume retrieval](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/resume_intelligence/resume_rag.py): `backend/resume_intelligence/resume_rag.py`
- [Embedding engine](https://github.com/kevinjose102/interview-intelligence-agent/tree/main/backend/resume_intelligence/embeddings): `backend/resume_intelligence/embeddings`

### Application Interfaces

- [FastAPI backend](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/backend/main.py): `backend/main.py`
- [Dashboard](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/frontend/main.js): `frontend/main.js`
- [Frontend API client](https://github.com/kevinjose102/interview-intelligence-agent/blob/main/frontend/api.js): `frontend/api.js`

### Other components

- **Interviewer**
- **Candidate**
- **Google Meet**

## Connections

- Interviewer → Chrome extension: starts capture
- Candidate → Google Meet: speaks in
- Google Meet → Chrome extension: provides audio
- Chrome extension → Audio router: streams audio
- Audio router → Deepgram STT: forwards audio
- Deepgram STT → Audio router: returns transcripts
- Audio router → Transcript handler: submits chunks
- Transcript handler → Conversation manager: adds turns
- Conversation manager → Dashboard: broadcasts updates
- Dashboard → Frontend API client: requests actions
- Frontend API client → FastAPI backend: calls endpoints
- FastAPI backend → Conversation manager: queries sessions
- FastAPI backend → LLM reasoning: requests analysis
- LLM reasoning → Groq LLM: analyzes responses
- FastAPI backend → Resume pipeline: processes uploads
- Resume pipeline → PDF extraction: extracts text
- Resume pipeline → Resume profile parser: parses text
- Resume profile parser → Groq LLM: extracts profile
- FastAPI backend → Resume history: reads and writes
- Dashboard → Frontend API client: requests resume features
- FastAPI backend → GitHub verifier: requests verification
- GitHub verifier → GitHub API: checks repositories
- FastAPI backend → Resume retrieval: uses resume context
- Resume retrieval → Embedding engine: generates vectors
