Turn every meeting conversation into structured data—automatically! With FastAPI, Whisper, and LangChain, this project helps consultants and teams log meeting summaries, participants, and key insights directly from voice recordings. All saved to Google Sheets and fully automated via n8n workflows.
- ✅ Upload voice notes via API or n8n webhook
- ✅ Transcribe audio to text using Whisper
- ✅ Extract meeting details using LLM-powered insights
- ✅ Save structured data in Google Sheets
- ✅ Send email notifications after each entry
- ✅ Automate workflow seamlessly with n8n
- Voice Upload → Upload
.mp3file via API or n8n webhook - Transcription → Whisper converts audio to text
- Info Extraction → LangChain + Ollama extracts meeting details
- Google Sheets Logging → Meeting data is appended
- Email Notification → Summary is emailed
- n8n Orchestration → End-to-end process automation
📌 Fully automated workflow - Just upload a file & let AI handle the rest!
- FastAPI - Backend API service
- OpenAI Whisper - Audio-to-text engine
- LangChain + Ollama - LLM-driven extraction
- Google Sheets API - Structured database
- n8n - Low-code automation
- Accepts:
.mp3file - Runs the full pipeline:
git clone https://github.com/mohannadhendi/ai-meeting-logger.git
cd ai-meeting-logger
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtuvicorn app:app --reload --host 0.0.0.0 --port 8000Use Postman, cURL, or browser to access:
- http://localhost:8000/docs → interactive Swagger UI
You can trigger the pipeline automatically using n8n.
-
Open n8n and create a new workflow.
-
Send audio file to webhook using API.
-
Pass the data through the following nodes:
- Webhook Node - Accepts voice note from client
- HTTP Request (Transcribe) - Sends audio to
/transcribe/ - HTTP Request (Extract) - Sends transcript to
/extract/ - HTTP Request (Save) & Notify - Parallel saving and emailing
Create a .env file in root directory:
LANGCHAIN_API_KEY=langchain_api_key
LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
SERVICE_ACCOUNT_FILE=path_to_your_service_account.json
SPREADSHEET_ID=your_google_sheet_id
WORKSHEET_NAME=Sheet1
EMAIL_SENDER=example@gmail.com
EMAIL_PASSWORD=your_app_password
EMAIL_RECEIVER=target_email@gmail.com
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587📁 files_project
├── app.py # FastAPI main file
├── requirements.txt
├── .env
├── uploads/ # Uploaded audio temp storage
├── scripts/
│ ├── speech2text.py
│ ├── extract_data.py
│ ├── save_data.py
│ └── send_email.py
- 📌 n8n Documentation
- 📌 LangChain + Ollama Documentation
- 📌 FastAPI Documentation
- 📌 Whisper Speech-to-Text
- 📌 Google Sheets API
- 📌 GPT-4 for Research and Document Organization












