Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Debrief AI — AI Meeting Assistant

Debrief AI is a local-first AI assistant that transforms meeting recordings into structured, actionable intelligence. Provide a YouTube URL or upload an audio file and the system will transcribe, summarize, extract action items and decisions, and make the entire transcript available for conversational Q&A through a Retrieval-Augmented Generation (RAG) pipeline.


Screenshots

Landing Page — Input & Language Selection Landing page showing the Debrief AI hero, YouTube URL input, language selector and Analyze Meeting button

Summary View — AI-generated meeting title and bullet-point summary Summary tab showing an auto-generated meeting title, bullet-point summary, word count stats, and questions raised

Transcript View — Full scrollable transcript with export options Transcript tab showing the full monospace transcript with Download TXT and Full Report TXT buttons

Chat Assistant — RAG-powered Q&A grounded on the transcript Chat tab showing a user question and a structured AI answer pulled from the transcript context

Table of Contents


Features

Audio Ingestion

  • Download and extract audio from any YouTube URL via yt-dlp
  • Upload local audio files directly (MP3, WAV, M4A, MP4, OGG, FLAC, WebM)
  • Automatic conversion to 16kHz mono WAV for model compatibility
  • Chunked processing to handle recordings of any length

Transcription

  • Local transcription using OpenAI Whisper — no data leaves your machine
  • Hindi audio routed to a dedicated fine-tuned model (Oriserve/Whisper-Hindi2Hinglish-Swift) for significantly better accuracy
  • Automatic 30-second sub-chunking for the Hindi model, which enforces a hard input limit
  • Optional translation to English for non-Hindi languages using Whisper's native translation mode

AI Analysis (via Mistral API with LCEL pipelines)

  • Automatic meeting title generation
  • Multi-chunk summarization using a map-reduce strategy: each chunk is summarized independently, then combined into a final professional summary
  • Action item extraction with task description, owner, and deadline
  • Decision extraction
  • Open question extraction

RAG Chat Assistant

  • Full transcript indexed into ChromaDB with all-MiniLM-L6-v2 sentence embeddings (runs locally on CPU)
  • Conversational Q&A grounded strictly on the transcript — the model will not hallucinate information not present in the meeting
  • Chat history maintained within the session

Export

  • Download the raw transcript as a .txt file
  • Download a full structured report (title, summary, action items, decisions, questions, transcript) as a single .txt file

Resilience

  • Automatic retry with exponential backoff on transient Mistral API errors (5xx, 429)
  • All ML models lazily loaded and cached in memory — loaded once per session, not on every request

Architecture

Input (YouTube URL / Audio File)
        │
        ▼
┌─────────────────────┐
│   audio_processor   │  yt-dlp download → FFmpeg convert → pydub chunk
└─────────────────────┘
        │
        ▼
┌─────────────────────┐
│     transcriber     │  Language routing:
│                     │  ├── Hindi → Oriserve fine-tuned HF pipeline (≤30s chunks)
│                     │  └── Other → OpenAI Whisper (local)
└─────────────────────┘
        │
        ├──────────────────────────────────────────────┐
        ▼                                              ▼
┌─────────────────────┐                   ┌───────────────────────┐
│  summarise /        │  Mistral API      │    vector_store       │
│  extractor          │  (LCEL chains)    │  ChromaDB + MiniLM    │
│  - Title            │                   │  embeddings (local)   │
│  - Summary          │                   └───────────────────────┘
│  - Action Items     │                              │
│  - Decisions        │                              ▼
│  - Questions        │                   ┌───────────────────────┐
└─────────────────────┘                   │     rag_engine        │
                                          │  Retriever + Mistral  │
                                          │  RAG chain (LCEL)     │
                                          └───────────────────────┘
        │                                             │
        └──────────────────┬──────────────────────────┘
                           ▼
                  ┌─────────────────┐
                  │   app.py        │
                  │   Streamlit UI  │
                  └─────────────────┘

Tech Stack

Layer Technology
UI Streamlit
Audio download yt-dlp
Audio processing pydub, FFmpeg
Transcription (general) OpenAI Whisper (local)
Transcription (Hindi) Oriserve/Whisper-Hindi2Hinglish-Swift (Hugging Face Transformers)
LLM Mistral AI (mistral-small-latest) via API
LLM orchestration LangChain LCEL (langchain-core, langchain-mistralai)
Vector database ChromaDB
Embeddings all-MiniLM-L6-v2 via sentence-transformers (local, CPU)
Deep learning runtime PyTorch
Environment config python-dotenv

Project Structure

meetmind/
├── app.py                   # Streamlit UI — entry point
├── main.py                  # CLI entry point (alternative to app.py)
├── requirements.txt
├── .env                     # API keys (not committed)
│
├── .streamlit/
│   └── config.toml          # Streamlit theme and server configuration
│
├── core/
│   ├── llm_factory.py       # Shared LLM factory with retry/backoff logic
│   ├── transcriber.py       # Language-aware transcription + Hindi sub-chunker
│   ├── summarise.py         # Map-reduce summarization chain
│   ├── extractor.py         # Action items, decisions, questions extraction
│   ├── vector_store.py      # ChromaDB build / load / retriever
│   └── rag_engine.py        # RAG chain assembly and question answering
│
├── utils/
│   └── audio_processor.py   # Download, convert, chunk, save uploaded files
│
├── downloads/               # Downloaded and converted audio files (auto-created)
└── vector_db/               # ChromaDB persistence directory (auto-created)

Prerequisites

  • Python 3.10 or higher
  • FFmpeg installed and available on your system PATH (required by yt-dlp and pydub for audio conversion)
  • A Mistral AI API key (free tier available)
  • A GPU is optional but will significantly accelerate Whisper transcription and the Hindi fine-tuned model

Installing FFmpeg on Windows

winget install ffmpeg

Alternatively, download the binaries from gyan.dev and extract ffmpeg.exe / ffprobe.exe into a ffmpeg_bin/ folder in the project root — the audio processor will detect them automatically.


Installation

  1. Clone the repository
git clone https://github.com/your-username/meetmind.git
cd meetmind
  1. Create a virtual environment and install dependencies

Using uv (recommended):

uv venv
uv pip install -r requirements.txt

Using standard pip:

python -m venv .venv
.venv\Scripts\activate      # Windows
pip install -r requirements.txt

Note: torch and openai-whisper are large packages. Installation may take several minutes on a slow connection.


Configuration

Create a .env file in the project root:

MISTRAL_API_KEY=your_mistral_api_key_here
WHISPER_MODEL=small

WHISPER_MODEL controls which OpenAI Whisper checkpoint is used for non-Hindi audio. Available options in increasing size and accuracy: tiny, base, small, medium, large. The small model is a reasonable default for most use cases. The model is downloaded automatically on first run.


Running the App

streamlit run app.py

The app will open at http://localhost:8501.

CLI alternative

python main.py

The CLI will prompt for a source URL and language, run the full pipeline, then enter an interactive Q&A loop.


Usage Guide

  1. Provide a source — paste a YouTube URL into the URL tab, or switch to the Upload tab and select an audio file from your machine.

  2. Select language — choose the language spoken in the recording. Select hindi to use the fine-tuned Hindi model.

  3. Translation — optionally enable "Translate to English" to have Whisper produce an English transcript from non-English audio. This option has no effect when Hindi is selected (the Hindi model outputs Hinglish by design).

  4. Analyze — click the "Analyze Meeting" button. A live progress bar shows each pipeline step.

  5. Review results across four tabs:

    • Summary — bullet-point meeting summary and a questions-raised section
    • Transcript — full scrollable transcript with download options
    • Actions & Decisions — extracted action items and key decisions side by side
    • Chat — type questions about the meeting; the RAG assistant answers from the transcript
  6. Export — download the raw transcript or the full structured report as .txt from the Transcript tab.


Language Support

Language Model Used Notes
English OpenAI Whisper Local inference
Hindi Oriserve/Whisper-Hindi2Hinglish-Swift Local inference; outputs Hinglish (Hindi in Latin script)
French, Spanish, German, Portuguese, Japanese, Chinese OpenAI Whisper Local inference; use "Translate to English" for English output

Known Limitations

  • Mistral free tier rate limits — the free API tier has request and token-per-minute limits. Very long transcripts (over ~30 minutes) may hit these limits. The app retries automatically with exponential backoff, but extremely long recordings may still require a paid API tier.

  • Hindi model — 30-second limitOriserve/Whisper-Hindi2Hinglish-Swift cannot process audio segments longer than 30 seconds. The transcriber handles this transparently by splitting chunks further, but this increases processing time proportionally.

  • ChromaDB session scope — the vector store is rebuilt on every new pipeline run and replaces the previous one. Loading a previous session's vector store from disk is supported in rag_engine.py via load_rag_chain() but is not exposed in the current UI.

  • FFmpeg dependency — audio download and conversion from YouTube will not work without FFmpeg installed on the host system.

  • No speaker diarization — the transcript does not identify individual speakers. All speech is treated as a single stream of text.


License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Debrief AI is a local-first AI assistant that transforms meeting recordings into structured, actionable intelligence.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages