A full-stack app that transcribes meeting audio and generates structured summaries, decisions, and action items.
- Audio upload (wav/mp3)
- Full transcript
- Summary, participants, decisions, action items
- Word (DOCX) export
- Action items export as ICS
- MOCK_MODE for local demos without API keys
- Backend: FastAPI, Whisper-compatible transcription API, LLM summarization (Gemini by default)
- Frontend: React (Vite)
The LLM system prompt used for summaries lives at:
backend/app/prompts/meeting_summary_system.txt
cd backend
python -m venv .venv
.venv\\Scripts\\activate
pip install -r requirements.txt
copy .env.example .env
notepad .env
uvicorn app.main:app --reloadcd frontend
npm install
npm run devOpen http://localhost:5173 and set API Base URL to http://localhost:8000.
Create backend/.env based on backend/.env.example.
GEMINI_API_KEY: Gemini API key for summarization.GEMINI_MODEL: Optional, defaults togemini-1.5-flash.WHISPER_API_URL: Whisper-compatible transcription endpoint (multipart file upload).WHISPER_API_KEY: API key for the transcription service.WHISPER_MODEL: Optional, defaults towhisper-1.MOCK_MODE:trueto enable deterministic mock responses for demo.
- If you don’t have API keys, set
MOCK_MODE=trueto demo the full flow locally. WHISPER_API_URLshould accept afileupload and return JSON withtextortranscript.- The Word export is generated server-side in
backend/app/services/export_docx.py. - Process documentation is in
PROCESS.md.
- GitHub repo: https://github.com/Rivka387/meeting-notes-ai
- Live demo (or local demo instructions): https://meeting-notes-ai.onrender.com/