Skip to content

πŸŽ™οΈ Self-hosted AI-powered meeting transcription and task extraction using Whisper & Ollama. 100% local, no cloud dependencies.

License

Notifications You must be signed in to change notification settings

sreenathyadavk/AI-Meeting-Tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ™οΈ AI Meeting Tracker

Self-hosted AI-powered meeting transcription and task extraction

✨ Features

  • 🎯 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

πŸ› οΈ Tech Stack

  • 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

πŸ“‹ System Requirements

  • 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

πŸš€ Quick Start

0. Install FFmpeg (Required)

# Ubuntu/Debian
sudo apt-get install ffmpeg

# macOS
brew install ffmpeg

# Check installation
ffmpeg -version

1. Install Ollama

chmod +x scripts/install_ollama.sh
./scripts/install_ollama.sh

This will:

  • Install Ollama
  • Pull Llama 3.1 8B model (~4.7GB)

2. Setup Backend

chmod +x setup_backend.sh
./setup_backend.sh

3. Setup Frontend

chmod +x setup_frontend.sh
./setup_frontend.sh

4. Run the Application

Terminal 1 - Start Backend:

cd backend
source venv/bin/activate
python main.py

Backend runs on: http://localhost:8000

Terminal 2 - Start Frontend:

cd frontend
npm run dev

Frontend runs on: http://localhost:5173

5. Test It

  1. Open http://localhost:5173 in your browser
  2. Upload a meeting recording
  3. Click "Process Recording"
  4. Wait for transcription + AI extraction (~1-2 minutes)
  5. View extracted tasks with confidence scores!

πŸ“– How It Works

  1. Upload β†’ File saved to backend/uploads/
  2. Transcribe β†’ OpenAI Whisper converts full audio to text (up to 1.5 hours)
  3. Extract β†’ Ollama (Llama 3.1) identifies action items from transcript
  4. Store β†’ Meeting, tasks, and metadata saved to SQLite database
  5. Display β†’ Tasks shown with owner, deadline, and confidence scores
  6. Chat β†’ Ask questions about the meeting using AI

πŸ“ Project Structure

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

πŸ”§ Configuration

Change AI Model

Edit backend/modules/task_extractor.py:

async def extract_tasks(transcript: str, model: str = "mistral:7b"):
    # Change model here

Available models:

  • llama3.1:8b (default, best accuracy)
  • mistral:7b (faster, good accuracy)
  • llama2:7b (lighter)

Pull new models: ollama pull mistral:7b

Change Whisper Model

Edit backend/modules/transcription.py:

_model = WhisperModel("medium", device="cpu", compute_type="int8")

Models: tiny, base, small, medium, large

πŸ› Troubleshooting

Ollama connection error:

# Check if Ollama is running
ollama list

# Start Ollama service
ollama serve

Whisper 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)

🎯 Roadmap

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

πŸ“ License

MIT

Built with:


Made with ❀️ for productivity nerds who hate cloud subscriptions

About

πŸŽ™οΈ Self-hosted AI-powered meeting transcription and task extraction using Whisper & Ollama. 100% local, no cloud dependencies.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published