A real-time, AI-powered interview co-pilot that provides contextual, in-the-moment guidance through an unobtrusive floating overlay.
- Core Capabilities
- System Architecture
- Getting Started
- Audio Configuration
- Data & Model Preparation
- Execution
- Overlay Modes
- Fallback Mechanisms
- Evaluation
- Contributing
- License
Clutch.ai operates through a highly optimized, low-latency online pipeline:
- Audio Capture: Streams audio from a selected input device (microphone or loopback).
- Voice Activity Detection: Detects speech segments using RMS VAD (with an optional GRU VAD model).
- Transcription: Converts speech to text using Faster-Whisper (
base.en, CPU int8). - Intent Classification: Classifies the transcript as
technical_question,personal_behavioral, ornoise. - Context Retrieval: Retrieves relevant supporting context from ChromaDB (with an optional reranker).
- Insight Generation: Generates concise, interview-ready guidance via Groq (default 70B) with local Ollama fallback.
- Live Overlay: Streams the generated output directly to a floating, unobtrusive PyQt5 overlay.
pipeline.pyβ Application entry point and orchestratoraudio/capture.pyβ Audio capture, VAD processing, and transcriptionaudio/devices.pyβ Input device resolution (--list-devicessupport)classifier/predict.pyβ BiLSTM/MLP classifier inference modulerag/retriever.pyβ ChromaDB retrieval engine with optional reranking hooksllm/hint_gen.pyβ Prompt engineering and LLM generation (Groq/Ollama)ui/overlay.pyβ Stealth and demonstration overlay implementations
git clone https://github.com/AhsanRiaz786/clutch-ai.git
cd clutch-ai
pip install -r requirements.txtDuplicate the example environment file:
cp .env.example .envUpdate .env with your specific configuration values:
GROQ_API_KEYβ Required for Groq LLM generationLLM_MODELβ Defaults tollama-3.3-70b-versatileCLUTCH_INPUT_DEVICEβ Optional audio input selector (e.g.,blackhole)OVERLAY_DEMO_MODEβ Toggle overlay visibility0= Stealth Mode (Hidden from screen capture on macOS)1= Demo Mode (Visible in screen capture)
MIN_CLASSIFIER_CONFIDENCEβ Default65
Leave CLUTCH_INPUT_DEVICE unset, or set it to default or mic.
List available audio devices:
python audio/capture.py --list-devicesThen, set CLUTCH_INPUT_DEVICE to the matching name fragment or index.
- Install BlackHole 2ch.
- Open Audio MIDI Setup and create a Multi-Output Device comprising:
- BlackHole 2ch
- Your primary speakers/headphones
- In System Settings β Sound β Output, select the newly created Multi-Output device.
- Update your
.envfile:CLUTCH_INPUT_DEVICE=blackhole
Utilize Stereo Mix (or equivalent loopback input), and configure CLUTCH_INPUT_DEVICE accordingly.
Incorporate your personal context documents into the vector database:
data/notes/β General notes and documentationdata/code/β Code snippets and filesdata/resume/β Resume and experiential context
Construct the vector database and (optionally) retrain the classification models:
python ingest/ingest.py
python classifier/train.py
python classifier/lstm_classifier.py
python classifier/finetune_embeddings.pyLaunch the Clutch.ai pipeline:
python pipeline.pyExpected startup sequence logs:
[UI] Overlay mode: DEMO (capture-visible)orSTEALTH (capture-hidden)[PIPELINE] Prerequisites OK[AUDIO] VAD capture ready β listening for speech ...
- Demonstration Mode: Set
OVERLAY_DEMO_MODE=1. Ideal for showcases. Share your entire screen if the meeting application excludes floating overlays during window-only sharing. - Privacy / Stealth Mode: Set
OVERLAY_DEMO_MODE=0. Designed for live scenarios (macOS natively appliesNSWindowSharingNoneto hide the overlay).
- If the Groq API key is missing or invalid, the application automatically falls back to a local Ollama instance.
- If Ollama is not running, the system will return a safe, generic fallback response to ensure uninterrupted operation.
To initialize the local Ollama fallback:
ollama pull llama3.2:3b
ollama serveOptional scripts are provided to evaluate the retrieval and latency performance:
python eval/eval_retrieval.py
python eval/eval_latency.pyContributions, issues, and feature requests are welcome! Feel free to check out the issues page.
Please read our Contributing Guidelines and Code of Conduct before submitting a Pull Request.
This project is MIT licensed.