Welcome to MinutesAI! This guide will help new contributors get up and running quickly with local development, testing, and usage.
- Prerequisites
- Local Installation
- Testing
- Usage
- Development Workflow
- Sample Configuration
- System Flow Diagram
- Next Steps
- Python 3.8 or higher
- Git
- pip or conda
- Virtual environment tool (recommended)
git clone https://github.com/dhanvina/mom.git
cd mom# Using venv
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Or using conda
conda create -n minutesai python=3.8
conda activate minutesai# Install main dependencies
pip install -r requirements.txt
# Install development dependencies
pip install -r requirements-dev.txt
# Install pre-commit hooks
pre-commit install# Copy example config
cp config/config.example.yaml config/config.yaml
# Edit configuration as needed
vim config/config.yaml # or your preferred editor# Run all tests
pytest
# Run with coverage
pytest --cov=minutesai --cov-report=html
# Run specific test file
pytest tests/test_extractor.py
# Run tests with verbose output
pytest -v# Run integration tests
pytest tests/integration/
# Run end-to-end tests
pytest tests/e2e/# Run linters
flake8 app/
# Check type hints
mypy app/
# Format code
black app/ tests/
# Run all pre-commit checks
pre-commit run --all-filesThe MinutesAI CLI provides a command-line interface for processing meeting transcripts.
# Process a single transcript
python -m app.cli --transcript examples/sample_transcript.txt --output output.txt
# Specify output format
python -m app.cli --transcript examples/sample_transcript.txt --output output.json --format json
# Use custom config
python -m app.cli --transcript examples/sample_transcript.txt --config config/custom.yamlpython -m app.cli --help
Options:
--transcript PATH Input transcript file (required)
--output PATH Output file path (default: stdout)
--format TEXT Output format: text, json, html, pdf (default: text)
--config PATH Configuration file path
--verbose Enable verbose logging
--version Show version and exit
--help Show this message and exit# Process audio file
python -m app.cli --transcript meeting.mp3 --output meeting_minutes.txt
# Generate PDF output
python -m app.cli --transcript transcript.txt --output minutes.pdf --format pdf
# Process with verbose logging
python -m app.cli --transcript transcript.txt --output minutes.txt --verboseThe Streamlit UI provides an interactive web interface for MinutesAI.
streamlit run app/streamlit_app.pyThe app will open in your default browser at http://localhost:8501.
- File Upload: Drag-and-drop or browse for transcript files
- Real-time Processing: Watch progress as MinutesAI extracts information
- Interactive Results: View and edit extracted meeting minutes
- Multiple Formats: Export results in various formats
- Configuration: Adjust settings without editing config files
- Upload your transcript file (supported: .txt, .doc, .docx, .mp3, .wav)
- Configure extraction settings (optional)
- Click "Process" to generate meeting minutes
- Review and edit the extracted information
- Export results in your preferred format
The project uses pre-commit hooks to ensure code quality before commits.
black: Code formattingflake8: Lintingmypy: Type checkingisort: Import sortingtrailing-whitespace: Remove trailing whitespaceend-of-file-fixer: Ensure files end with newline
# Run on staged files (automatic on commit)
pre-commit run
# Run on all files
pre-commit run --all-files
# Update hooks
pre-commit autoupdateAll pull requests must pass CI checks before merging:
- Tests: All unit and integration tests must pass
- Coverage: Minimum 80% code coverage required
- Linting: No flake8 violations
- Type Checking: No mypy errors
- Security: Bandit security scan
- Dependencies: Safety check for vulnerable packages
# Run the same checks as CI
./scripts/ci_checks.sh
# Or manually:
pytest --cov=minutesai --cov-report=term-missing
flake8 app/
mypy app/
bandit -r app/
safety checkHere's a sample configuration file (config/config.yaml):
# MinutesAI Configuration
# Application settings
app:
name: MinutesAI
version: "1.0.0"
debug: false
# LLM settings
llm:
provider: ollama
model: llama2
temperature: 0.7
max_tokens: 2000
# Extraction settings
extraction:
sections:
- meeting_title
- date_time
- attendees
- agenda
- discussion_points
- action_items
- decisions
- next_steps
# Output settings
output:
default_format: text
include_timestamp: true
include_metadata: true
# Logging settings
logging:
level: INFO
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
handlers:
console:
enabled: true
file:
enabled: true
path: logs/minutesai.log
max_bytes: 10485760 # 10MB
backup_count: 5
# Module-specific logging levels
loggers:
minutesai.core: INFO
minutesai.extractor: DEBUG
minutesai.formatter: INFO
minutesai.analyzer: INFO┌─────────────────┐
│ Input Sources │
│ (.txt, .doc, │
│ .mp3, .wav) │
└────────┬────────┘
│
v
┌─────────────────┐
│ TranscriptLoader│
│ - Load files │
│ - Preprocess │
│ - Normalize │
└────────┬────────┘
│
v
┌─────────────────┐
│MinutesAI │
│ Extractor │
│ - LangChain │
│ - Ollama LLM │
│ - Extract info │
└────────┬────────┘
│
v
┌─────────────────┐
│ Analyzers │
│ - Efficiency │
│ - Sentiment │
│ - Action Items │
└────────┬────────┘
│
v
┌─────────────────┐
│MinutesAI │
│ Formatter │
│ - Text/JSON │
│ - HTML/PDF │
│ - Templates │
└────────┬────────┘
│
v
┌─────────────────┐
│ Output Files │
│ (various │
│ formats) │
└─────────────────┘
After completing this quickstart guide:
-
Read the Documentation
-
Explore Examples
- Check the
examples/directory for sample transcripts - Try processing different input formats
- Experiment with different output formats
- Check the
-
Contribute
- Read CONTRIBUTING.md
- Check open issues
- Submit your first pull request
-
Join the Community
- Star the repository
- Join discussions
- Share your feedback
# Solution: Ensure you're in the project root and venv is activated
cd /path/to/mom
source venv/bin/activate
pip install -r requirements.txt# Solution: Make sure Ollama is running
# Start Ollama service
ollama serve
# In another terminal, pull the model
ollama pull llama2# Solution: Install dev dependencies and check test database
pip install -r requirements-dev.txt
pytest -v # Run with verbose output to see specific failures# Solution: Run the hooks manually to see errors
pre-commit run --all-files
# Fix issues and try again
black app/ tests/
flake8 app/- Documentation: Check the
docs/directory - Issues: Report bugs
- Discussions: Ask questions
- Email: Contact maintainers
Happy coding with MinutesAI! 🚀