Nexus AI is a premium meeting intelligence platform that transforms video and audio into structured, actionable knowledge. Drop in a YouTube link or local recording β the system transcribes speech with Groq Whisper, summarizes with Mistral, extracts decisions and action items, and lets you chat with the meeting through a retrieval-augmented pipeline.
Hybrid by design: cloud speech-to-text through Groq keeps transcription fast, while Mistral AI powers summarization, extraction, embeddings, and conversational Q&A.
βββββββββββββββ ββββββββββββββββ βββββββββββββββ ββββββββββββββββ βββββββββββββββ ββββββββββββ
β 1. Audio β β β 2. Groq STT β β β 3. Title β β β 4. Summary β β β 5. Extract β β β 6. RAG β
β Ingestion β β Transcriptionβ β Generation β β (Map-Reduce)β β Insights β β Engine β
βββββββββββββββ ββββββββββββββββ βββββββββββββββ ββββββββββββββββ βββββββββββββββ ββββββββββββ
yt-dlp / pydub Groq Whisper API Mistral LLM Mistral LLM Mistral LLM ChromaDB
FFmpeg chunking cloud transcription 8-word title bullet summary 3 extractors + Mistral
flowchart TB
subgraph Input["π₯ Input Layer"]
YT["YouTube URL"]
LF["Local Video / Audio"]
end
subgraph Audio["ποΈ Audio Processing"]
DL["yt-dlp Download"]
CV["pydub β 16kHz WAV"]
CH["10-min Chunks"]
end
subgraph STT["π Speech-to-Text β Cloud"]
GW["Groq Whisper API"]
end
subgraph LLM["π€ Mistral AI + LangChain LCEL"]
TI["Title Generator"]
SU["Map-Reduce Summarizer"]
EX["Action Items Β· Decisions Β· Questions"]
end
subgraph RAG["π¬ RAG Chat"]
EM["mistral-embed"]
VS["ChromaDB Vector Store"]
QA["Context-Aware Q&A"]
end
subgraph UI["π₯οΈ Streamlit Dashboard"]
ST["Studio"]
IN["Insights"]
CHAT["Ask AI"]
end
YT --> DL
LF --> CV
DL --> CV
CV --> CH
CH --> GW
GW --> TI & SU & EX
GW --> EM
EM --> VS
VS --> QA
TI & SU & EX & QA --> ST & IN & CHAT
| Module | What You Get |
|---|---|
| Smart Transcription | Groq Whisper API β fast cloud-based transcription & translation |
| Executive Summary | Map-reduce summarization across long transcripts |
| Auto Title | Professional meeting title generated from content |
| Action Items | Tasks with owner and deadline when mentioned |
| Key Decisions | Numbered list of decisions made during the meeting |
| Open Questions | Unresolved topics flagged for follow-up |
| RAG Chat | Ask natural-language questions grounded in the transcript |
| Exports | Download transcript, actions, decisions, and questions as .txt |
| Session History | Timeline of analyses within the current browser session |
|
π Home Feature overview & recent activity |
β‘ Studio Source input & pipeline launcher |
π Insights Summary, metrics & extractions |
π¬ Ask AI RAG-powered meeting chat |
|
π History Session timeline (last 20 runs) |
βοΈ Settings Language defaults & session reset |
β Help Quick start & FAQs |
π Live Stepper Real-time pipeline progress |
Full stack breakdown
| Layer | Technology | Role |
|---|---|---|
| UI | Streamlit, custom CSS | Multi-page dashboard with glass-morphism theme |
| Ingestion | yt-dlp, pydub, FFmpeg | YouTube download, format conversion, chunking |
| STT | Groq Whisper API (whisper-large-v3-turbo) |
Cloud transcription & translation |
| LLM | Mistral AI (mistral-small-2506) |
Summaries, titles, extractions, chat |
| Orchestration | LangChain LCEL | Prompt chains, map-reduce, RAG pipeline |
| Embeddings | Mistral Embed | Semantic indexing of transcript chunks |
| Vector DB | ChromaDB | Persistent retrieval store (vector_db/) |
| Config | python-dotenv | API keys and model settings via .env |
Video Agent/
βββ app.py # Streamlit dashboard entry point
βββ main.py # CLI pipeline + interactive chat loop
βββ requirements.txt
βββ .env.example
βββ cookies.txt # Optional β YouTube auth cookies
β
βββ core/
β βββ transcriber.py # Groq Whisper API transcribe & translate
β βββ summarizer.py # Map-reduce summary + title generation
β βββ extractor.py # Action items, decisions, questions
β βββ rag_engine.py # LCEL RAG chain + ask_question()
β βββ vector_store.py # ChromaDB build / load / retriever
β
βββ services/
β βββ pipeline.py # Streamlit pipeline orchestration
β βββ session.py # Session state, pages, history
β
βββ ui/
β βββ navigation.py # Sidebar shell & routing
β βββ components.py # Reusable UI blocks
β βββ styles.py # Global CSS injection
β βββ pages/ # home Β· studio Β· insights Β· chat Β· history Β· settings Β· help
β
βββ utils/
β βββ audio_processor.py # Download, convert, chunk audio
β
βββ downloads/ # YouTube audio cache (runtime)
- Python 3.10+
- FFmpeg installed and available on
PATH - Mistral API key β console.mistral.ai
git clone https://github.com/SalikAhmad702/Video-Agent.git
cd Video-Agent
# Using uv (recommended)
uv venv
uv pip install -r requirements.txt
# Or standard pip
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txtCopy .env.example to .env and set your keys:
MISTRAL_API_KEY=your_mistral_api_key_here
WHISPER_MODEL=base| Variable | Default | Description |
|---|---|---|
MISTRAL_API_KEY |
β | Required for LLM, embeddings, and chat |
WHISPER_MODEL |
base |
Whisper size: tiny, base, small, medium, large-v3 |
YTDLP_COOKIE_FILE |
cookies.txt |
Optional path to YouTube cookies for restricted videos |
Web dashboard (recommended):
streamlit run app.pyCLI mode:
python main.py- Open Studio from the sidebar
- Paste a YouTube URL or absolute local file path (
C:/videos/meeting.mp4) - Select your transcription language
- Click Run Analysis β watch the live pipeline stepper
- Review output in Insights β summary, transcript, extractions, downloads
- Switch to Ask AI β chat with suggested prompts or custom questions
python main.py
# Enter YouTube URL or local file path when prompted
# Chat loop starts automatically after analysis β type 'exit' to quit| Source | Formats | Notes |
|---|---|---|
| YouTube | Any URL | Uses yt-dlp; optional cookies.txt for sign-in videos |
| Local files | MP4, MP3, WAV, etc. | Converted via pydub β 16 kHz mono WAV |
Transcription β Groq Whisper API
Audio is split into 10-minute chunks and sent to the Groq Whisper API (whisper-large-v3-turbo) for fast cloud-based transcription. The translation endpoint is used for non-English audio to produce English output.
Summarization β map-reduce pattern
Long transcripts are split into 3 000-character segments. Each chunk is summarized independently, then a final Mistral pass merges partial summaries into one cohesive bullet-point executive summary.
Extraction β specialized prompts
Three dedicated LangChain chains run against the full transcript:
- Action items β task, owner, deadline
- Key decisions β numbered decision log
- Open questions β unresolved follow-ups
RAG Chat β grounded answers only
The transcript is chunked (500 chars, 50 overlap), embedded with mistral-embed, and stored in ChromaDB. At query time, the top-4 similar chunks are retrieved and passed as context to Mistral β answers stay tied to the meeting content.
# Required
MISTRAL_API_KEY=sk-...
# Optional β Whisper model size (larger = more accurate, slower)
WHISPER_MODEL=small
# Optional β custom cookie file for YouTube
YTDLP_COOKIE_FILE=C:/path/to/cookies.txtWhisper model trade-offs:
| Model | Speed | Accuracy | RAM |
|---|---|---|---|
tiny |
β‘β‘β‘ | β β | ~1 GB |
base |
β‘β‘ | β β β | ~1 GB |
small |
β‘ | β β β β | ~2 GB |
medium |
π’ | β β β β β | ~5 GB |
- YouTube + local file ingestion
- Groq Whisper API transcription & translation
- Map-reduce summarization with Mistral
- Action items, decisions, and questions extraction
- ChromaDB RAG chat with mistral-embed
- Streamlit dashboard with live pipeline stepper
- Transcript & extraction
.txtdownloads - PDF export (reportlab / fpdf2 β deps ready)
- Hindi β English translation layer (deep-translator β dep ready)
- Persistent analysis history across sessions
- Speaker diarization (who said what)
- Docker & Streamlit Cloud deployment guide
Contributions welcome β especially PDF export, speaker diarization, and deployment configs.
git checkout -b feature/your-improvement
git commit -m "feat: describe your change"
git push origin feature/your-improvementOpen a pull request when ready.
Free and open source β use, modify, and distribute freely.
- β Personal, academic, and commercial use
β οΈ Provided as-is without warranty
