Skip to main content

CLI and library for extracting structured meeting summaries from transcripts.

Project description

meeting-lens

PyPI Python Tests

meeting-lens is a Python CLI and library that turns raw meeting transcripts into structured summaries: decisions, action items, open questions, and sentiment.

Why this exists

Meeting notes are painful for engineering managers and team leads: long transcripts are hard to skim, key decisions get buried, and follow-ups are easy to miss. meeting-lens converts transcript exports from common tools into concise, structured outputs that are easy to share or automate.

Quick start

1) Install

pip install "meeting-lens[openai]"

Or install all backends:

pip install "meeting-lens[all]"

2) Set an API key

export OPENAI_API_KEY="your-key"
# or
export ANTHROPIC_API_KEY="your-key"

3) Run your first summary

meeting-lens transcript.vtt

CLI usage

# Basic usage
meeting-lens transcript.vtt

# Specify backend and output format
meeting-lens transcript.txt --backend anthropic --format markdown

# Write to file
meeting-lens transcript.srt --backend openai --format json --out summary.json

# Override model
meeting-lens transcript.vtt --model gpt-4o-mini

# Pipe support
cat transcript.txt | meeting-lens - --backend anthropic

Options:

  • --backend: openai | anthropic (default: openai)
  • --format: markdown | json (default: markdown)
  • --out: output file path (default: stdout)
  • --model: override backend default model
  • --no-color: disable ANSI color in markdown output

Supported input formats

Format Extension Notes
Plain text .txt Supports lines like Speaker: message
WebVTT .vtt Works with Zoom/Teams-style VTT exports
SubRip .srt Parses subtitle blocks and speaker prefixes

Backend comparison

Backend Package extra API key env var Default model
OpenAI meeting-lens[openai] OPENAI_API_KEY gpt-4o
Anthropic meeting-lens[anthropic] ANTHROPIC_API_KEY claude-sonnet-4-20250514

Markdown output example

# Meeting Summary

**Date:** 2024-03-15  
**Participants:** Alice, Bob, Carol  
**Sentiment:** 🟡 Mixed — _Some tension around timeline but positive on outcome._

## TL;DR
Two-sentence summary of the meeting.

## ✅ Decisions
- **Alice:** We will migrate to the new auth system by Q2.
- **Team:** Daily standups move to 09:30.

## 📋 Action Items
| Owner | Task | Due |
|-------|------|-----|
| Bob | Write migration runbook | Friday |
| Carol | Schedule design review | — |

## ❓ Open Questions
- What is the rollback plan if migration fails? _(raised by Bob)_
- Who owns the staging environment credentials?

## 📊 Sentiment
**Mixed** — Brief explanation of sentiment rating.

Library usage

import asyncio
from meeting_lens.backends.openai_backend import OpenAIBackend
from meeting_lens.formatters.markdown import MarkdownFormatter
from meeting_lens.lens import MeetingLens

async def run() -> None:
    transcript = "Alice: We should ship Friday.\nBob: I will own rollout docs."
    lens = MeetingLens(backend=OpenAIBackend())
    summary = await lens.run(transcript, source_name="sync.txt")
    print(MarkdownFormatter().format(summary))

asyncio.run(run())

Contributing

  1. Fork and clone the repo.
  2. Create a virtual environment and install dev dependencies.
  3. Run tests with pytest.
  4. Open a PR with clear commit messages and test notes.

Publishing (maintainers)

meeting-lens is published to PyPI using standard Python packaging flow:

python -m pip install --upgrade build twine
python -m build
twine check dist/*
twine upload dist/*

Notes:

  • Set TWINE_USERNAME=__token__
  • Set TWINE_PASSWORD to your PyPI API token
  • Always bump version in pyproject.toml before upload

Related

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meeting_lens-0.1.0.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meeting_lens-0.1.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file meeting_lens-0.1.0.tar.gz.

File metadata

  • Download URL: meeting_lens-0.1.0.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for meeting_lens-0.1.0.tar.gz
Algorithm Hash digest
SHA256 be1c21229b6ab443a104add07c2abe64e809ec5eeb3e4dc6ea72a83f9b4d8fdb
MD5 73542ceb556db3b6fd8b662c14ef7bb4
BLAKE2b-256 7fcd84e671cb5d9f8777868607950afd267736387d7ea3361616ff57837bdeb8

See more details on using hashes here.

File details

Details for the file meeting_lens-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: meeting_lens-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for meeting_lens-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5505a9b0cec3c5861b0709c3da19303fca02390e8a5ab64e674dbbb73e7735fe
MD5 3fda92a3d5ae08f03354691951b66b6f
BLAKE2b-256 6b35d6a001901449114a647f78e42d1d3b6d66c84731474a7a3d1262eab4203b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page