Self-hosted AI-powered meeting transcription and task extraction
- π― Upload recordings (MP3, MP4, WAV, M4A) - up to 1.5 hours
- ποΈ Transcribe with Whisper (local, no API costs)
- π€ Extract tasks with Ollama (Llama 3.1 or Mistral)
- π¬ Chat about meetings - ask questions about transcript
- π Meeting history - last 10 meetings in sidebar
- πΎ Database persistence - SQLite storage for all meetings
- β Structured tasks with owner, deadline, confidence scores
- π 100% self-hosted - no cloud dependencies, privacy-first
- Backend: Python 3.11+ with FastAPI
- Database: SQLite with SQLAlchemy ORM
- Transcription: OpenAI Whisper (100% local, no API)
- AI Extraction: Ollama (Llama 3.1 8B)
- Frontend: Vue 3 + Vite + Vue Router
- Styling: Custom CSS with glassmorphism design
- Python: 3.11 or higher
- Node.js: 18+
- RAM: 10GB+ (for Whisper + Ollama)
- Disk: ~5GB for AI models
- GPU: Optional (CPU works fine, just slower)
- OS: Linux, macOS, Windows (WSL)
- FFmpeg: Required for audio processing
# Ubuntu/Debian
sudo apt-get install ffmpeg
# macOS
brew install ffmpeg
# Check installation
ffmpeg -versionchmod +x scripts/install_ollama.sh
./scripts/install_ollama.shThis will:
- Install Ollama
- Pull Llama 3.1 8B model (~4.7GB)
chmod +x setup_backend.sh
./setup_backend.shchmod +x setup_frontend.sh
./setup_frontend.shTerminal 1 - Start Backend:
cd backend
source venv/bin/activate
python main.pyBackend runs on: http://localhost:8000
Terminal 2 - Start Frontend:
cd frontend
npm run devFrontend runs on: http://localhost:5173
- Open
http://localhost:5173in your browser - Upload a meeting recording
- Click "Process Recording"
- Wait for transcription + AI extraction (~1-2 minutes)
- View extracted tasks with confidence scores!
- Upload β File saved to
backend/uploads/ - Transcribe β OpenAI Whisper converts full audio to text (up to 1.5 hours)
- Extract β Ollama (Llama 3.1) identifies action items from transcript
- Store β Meeting, tasks, and metadata saved to SQLite database
- Display β Tasks shown with owner, deadline, and confidence scores
- Chat β Ask questions about the meeting using AI
ProjectX/
βββ backend/
β βββ main.py # FastAPI application
β βββ database.py # SQLAlchemy models
β βββ config.py # Environment configuration
β βββ requirements.txt # Python dependencies
β βββ modules/
β β βββ transcription.py # Whisper integration
β β βββ task_extractor.py # Ollama task extraction
β βββ uploads/ # Temporary file storage
β βββ meetings.db # SQLite database
βββ frontend/
β βββ src/
β β βββ App.vue # Main layout with history sidebar
β β βββ pages/
β β β βββ UploadPage.vue # File upload interface
β β β βββ ResultsPage.vue # Results with chat
β β βββ composables/
β β β βββ useHistory.js # LocalStorage history
β β β βββ useSession.js # Session management
β β βββ router/
β β β βββ index.js # Vue Router config
β β βββ style.css # Modern dark theme
β β βββ main.js # Vue entry point
β βββ package.json
βββ scripts/
β βββ install_ollama.sh # Ollama installation
βββ .env.example # Environment config template
βββ .gitignore
βββ LICENSE # MIT License
βββ README.md
Edit backend/modules/task_extractor.py:
async def extract_tasks(transcript: str, model: str = "mistral:7b"):
# Change model hereAvailable models:
llama3.1:8b(default, best accuracy)mistral:7b(faster, good accuracy)llama2:7b(lighter)
Pull new models: ollama pull mistral:7b
Edit backend/modules/transcription.py:
_model = WhisperModel("medium", device="cpu", compute_type="int8")Models: tiny, base, small, medium, large
Ollama connection error:
# Check if Ollama is running
ollama list
# Start Ollama service
ollama serveWhisper model download:
- First run will download Whisper model (~150MB for base)
- This only happens once
Port already in use:
# Change port in backend/main.py
uvicorn.run(app, host="0.0.0.0", port=8001)Current Status: Working Prototype with Database β
Completed:
- β SQLite database persistence
- β Meeting history and retrieval
- β Chat feature for Q&A about meetings
- β Full audio transcription (up to 1.5 hours)
- β Vue Router with separate pages
- β Modern UI with glassmorphism
- β Health check API endpoint
Coming Soon (Production Ready):
- π§ Docker containerization
- π§ Production frontend build
- π§ Security hardening (rate limiting, file validation)
- π§ Deployment documentation
Future MVP Features:
- π Task editing (CRUD operations)
- π₯ Speaker diarization (identify who said what)
- π Kanban board integration
- π¨ Enhanced UI animations
- π§ͺ Automated tests
MIT
Built with:
- faster-whisper - Optimized Whisper
- Ollama - Local LLM runtime
- FastAPI - Modern Python API
- Vue 3 - Progressive framework
Made with β€οΈ for productivity nerds who hate cloud subscriptions