- Python 66.3%
- Jupyter Notebook 33.7%
| prompts | ||
| src | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
Meeting Recorder — Setup Guide
This tool records meetings via OBS, extracts audio, transcribes with Whisper, and summarises with a local LLM running via MLX. The notebook (Sales_meeting_summary.ipynb) is the main entry point and is designed to run inside VS Code.
Requires Apple Silicon (M1 or later). MLX does not run on Intel Macs.
Installation Guide
- Software to install on your laptop
- Project setup in VS Code
- Store your OBS password
- Configuration
- Run the notebook
- Adding a prompt type
1. Software to install on your laptop
OBS Studio
-
Download from https://obsproject.com/download and run the
.dmginstaller. -
Open OBS and complete the auto-configuration wizard.
-
Set up audio sources:
-
Enable the WebSocket server: Tools → WebSocket Server Settings → Enable WebSocket server.
Set a port (default4455) and a password — you will need these later.
ffmpeg
ffmpeg is required by moviepy to process audio.
# Install Homebrew if you don't have it
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install ffmpeg
Visual Studio Code
- Download from https://code.visualstudio.com/download and open the
.dmg. - Drag VS Code to Applications.
- Install the Python extension (search
ms-python.pythonin the Extensions panel). - Install the Jupyter extension (search
ms-toolsai.jupyter).
Python 3.X
brew install python
2. Project setup in VS Code
Clone / open the project
Open VS Code, then File → Open Folder and select this project folder.
Create a virtual environment
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Select the kernel in VS Code
- Open
src/Sales_meeting_summary.ipynb. - Click the kernel picker in the top-right corner of the notebook.
- Choose Python Environments →
.venv(the virtual environment you just created).
3. Store your OBS password
The OBS WebSocket password was set when you enabled the WebSocket server (section 1, step 4).
If you need to change it: Tools → WebSocket Server Settings.
Store the password securely (one-time setup)
Open src/_run_first_token_management.ipynb in VS Code, replace the placeholder, and run the cell:
import keyring
keyring.set_password("sales_summary", "obs", "<YOUR_OBS_PASSWORD>")
The password is stored in your macOS Keychain and never saved to disk.
4. Configuration
Set both variables in cell 2 of Sales_meeting_summary.ipynb before running.
prompt_type
Controls the summarisation style. Each prompt type maps to a YAML file in prompts/.
| Value | File | Output style |
|---|---|---|
"standard" |
prompts/standard.yaml |
Structured notes: Main Topics, Decisions, Action Points, Bottlenecks, Tabled Items |
model
Controls which local LLM is used for summarisation. Both models run entirely on-device via MLX.
| Value | Model | Size | Notes |
|---|---|---|---|
"phi4" |
Phi-4 (3-bit) | ~3 GB | Default, fast |
"gemma" |
Gemma-4-26B (4-bit) | ~14 GB | Higher quality, slower to load |
Models are downloaded automatically from Hugging Face on first use. No internet connection required after download.
5. Run the notebook
Execute the cells in order. The pipeline will:
- Set
prompt_typeandmodelto configure summarisation style and LLM. - Initialise the recorder — the selected model is downloaded and loaded into memory now.
- Start the OBS recording.
- Check recording status.
- Stop recording, extract audio, transcribe with Whisper, and summarise.
- A Markdown file is saved to
OUTPUT/.
6. Adding a prompt type
Prompt types are defined as YAML files in prompts/. Adding a new file makes it available as a prompt_type value — no code changes needed.
File structure
prompts/<prompt_type>.yaml
YAML schema
system: |
You are a ...
human: |
{input}
{input}is the only template variable — it receives the full transcript text.
Steps to add a new prompt type
- Create
prompts/<name>.yamlwithsystemandhumankeys. - Set
prompt_type = "<name>"in cell 2 of the notebook.
