An automated meeting analysis tool that transcribes audio, identifies speakers, extracts action items, and generates detailed reports with personalized email distribution.
- ๐๏ธ Audio transcription using Whisper
- ๐ฅ Speaker identification and verification
- โ Action item and task extraction
- ๐ Markdown + PDF meeting report generation
- ๐ง Email distribution of personalized summaries
- ๐ค Speaker profile management (with email memory)
- ๐
.envsupport for secure API key + credentials - ๐ Ready for n8n automation via webhooks (coming soon)
- Python 3.10.9 or later
- FFmpeg installed and available in PATH
- wkhtmltopdf for PDF generation
- OpenAI API key
- Gmail account with App Password for email sending
git clone https://github.com/your-username/meeting-analyzer.git
cd meeting-analyzerpython -m venv whisper-env
.\whisper-env\Scripts\activate # Windows
source whisper-env/bin/activate # Linux/Macpip install -r requirements.txt- Download and install: wkhtmltopdf
- Add the install folder (e.g.,
C:\Program Files\wkhtmltopdf\bin) to your system PATH
- Copy and rename
.env.example:
cp .env.example .env- Open
.envand fill in:
OPENAI_API_KEY=your-openai-key
EMAIL_USERNAME=your.email@gmail.com
EMAIL_PASSWORD=your-app-password
FROM_EMAIL=your.email@gmail.com
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587โ
.envis ignored by Git and keeps your keys safe.
Runs the full analysis pipeline with default audio file (Senior Project Demo.mp3)
.\run_meeting.batActivate your environment:
.\whisper-env\Scripts\activateThen run:
python meeting_analyzer.py "your_audio.mp3"Optionally add:
--email-config email_config.jsonWill use
.envvalues unless overridden with--email-config
meeting_report.mdโ Markdown summarymeeting_report.pdfโ Printable versionfull_transcript.txtโ Raw transcriptsegments.jsonโ Timestamped segmentsmeeting_analysis.logโ Execution logsindividual_summaries/โ Per-speaker task summaries
| File | Purpose |
|---|---|
.env |
Main API + email config (recommended) |
.env.example |
Template for .env setup |
email_config.json |
Optional legacy email config |
attendees_db.json |
Stores speaker names + emails |
requirements.txt |
Python dependencies |
- โ
.envis excluded from Git - โ Never commit your credentials
- ๐ Use Gmail App Passwords (not your main password)
- ๐ You can remove
email_config.jsonif.envis used
- ๐ n8n integration via webhooks + JSON payloads
- ๐ง AI task suggestion templates
- ๐ Audio highlight replays
- ๐งโ๐ผ Dashboard summaries per participant
- ๐ Google Calendar or Notion integration
| Issue | Fix |
|---|---|
| โ PDF not generated | Ensure wkhtmltopdf is installed + in PATH |
| โ Emails not sending | Check app password + Gmail 2FA enabled |
| โ Transcription error | Check ffmpeg is installed + audio format |
| โ Batch file fails | Use full path, run as admin if needed |
Pull Requests are welcome!
Want to add integrations or custom formats? Fork and build on top!
MIT or your license here
Brendan Bryan & Brian Ford
You have two ways to configure email settings:
- Using Environment Variables (Default):
python meeting_analyzer.py "Senior Project Demo.mp3"This will use the email credentials from your .env file:
EMAIL_USERNAME: Your Gmail addressEMAIL_PASSWORD: Your Gmail app password
- Using JSON Configuration File:
python meeting_analyzer.py "Senior Project Demo.mp3" --email-config email_config.jsonThis will use settings from email_config.json:
{
"smtp_server": "smtp.gmail.com",
"smtp_port": 587,
"sender_email": "your.email@gmail.com",
"sender_password": "your-app-password"
}Key Differences:
- Environment variables are more secure (not stored in files)
- JSON config is more portable and can be version controlled (without credentials)
- Using
--email-configwill try JSON first, then fall back to environment variables if needed - The batch file
run_meeting.batuses the JSON config approach
- Using the batch file (recommended):
.\run_meeting.bat- Manual execution with environment variables:
python meeting_analyzer.py "Senior Project Demo.mp3"- Manual execution with JSON config:
python meeting_analyzer.py "Senior Project Demo.mp3" --email-config email_config.json- Automatic speech-to-text transcription using Whisper
- Speaker identification and verification
- Action item extraction
- Task assignment tracking
- Automated email summaries to participants
- PDF and Markdown report generation
meeting_report.md: Detailed meeting summary in Markdown formatmeeting_report.pdf: PDF version of the meeting summaryfull_transcript.txt: Complete meeting transcriptsegments.json: Detailed segment-by-segment analysis
-
Email Configuration:
- If using environment variables, check your
.envfile - If using JSON config, verify
email_config.jsonexists and is properly formatted - Make sure you're using an App Password for Gmail
- If using environment variables, check your
-
Common Issues:
- "EmailConfig not defined": Make sure you're using the latest version of the code
- Email authentication errors: Check your credentials and App Password
- PDF generation fails: Install wkhtmltopdf if not already installed
Feel free to submit issues and enhancement requests!