Skip to content

mandilkhadka/Meeting-Assistant

Repository files navigation

🗒️ Meeting Minutes Generator

This app transforms meeting audio into summaries, key decisions, and actionable tasks — saving time and improving team productivity.


🚀 Purpose

Meetings often end without clear notes or follow-ups. This app automates the process by converting meeting audio files into structured summaries and action items, ready to share or export.


✨ Core Features

  • 🎧 Upload Meeting Audio (MP3 / MP4)
  • 🗣️ Whisper API → Transcription
  • 🧠 AI Summary Generation — captures key points and decisions
  • Assign Action Items — automatically or manually
  • 📤 Export — to Notion, Slack, Markdown, or JSON
  • 🔍 Search & Filter — find meetings quickly
  • 🏷️ Tags & Categories — organize meetings
  • 👥 Participants Tracking — track who attended
  • 🌐 Browser Extension — quick capture from anywhere
  • 📱 Modern UI/UX — clean, responsive design

🧰 Tech Stack

  • Backend: Ruby on Rails 7.1
  • Frontend: React 18 with JSX
  • AI & Speech: OpenAI Whisper API + GPT-4
  • Background Jobs: Solid Queue
  • File Handling: Cloudinary (optional) / Active Storage
  • Styling: Bootstrap 5 + Custom SCSS
  • Database: PostgreSQL

📸 Screenshot

Home Screen The main dashboard showing the Meeting Assistant interface with upload form, search functionality, and meeting list. Clean, modern design with status badges and quick access to meeting details.


🚀 Quick Start

Prerequisites

  • Ruby 3.3.5
  • PostgreSQL
  • Node.js (for React)
  • OpenAI API key

Installation

  1. Clone and install dependencies:
bundle install
  1. Set up environment variables:
cp .env.example .env
# Edit .env and add your OPENAI_API_KEY
  1. Set up database:
bin/rails db:create
bin/rails db:migrate
  1. Start the server:
bin/rails server
  1. In another terminal, start background jobs:
bin/rails solid_queue:start
  1. Visit: http://localhost:3000

Browser Extension Setup

  1. Open Chrome/Edge and go to chrome://extensions/
  2. Enable "Developer mode"
  3. Click "Load unpacked"
  4. Select the browser-extension folder
  5. Click the extension icon to capture meetings quickly!

📁 Project Structure

├── app/
│   ├── controllers/api/     # API endpoints
│   ├── jobs/                 # Background jobs (transcription, summarization)
│   ├── models/               # ActiveRecord models
│   ├── javascript/components/ # React components
│   └── views/                # ERB templates
├── browser-extension/        # Chrome extension for quick capture
├── config/                   # Rails configuration
└── db/migrate/              # Database migrations

🔧 Configuration

Required Environment Variables

  • OPENAI_API_KEY - Your OpenAI API key for Whisper and GPT-4

Optional

  • CLOUDINARY_URL - For cloud file storage (otherwise uses Active Storage)

🎯 Usage

Step-by-Step Guide

1. Upload a Meeting

  • Click "Upload Meeting" card on the left side
  • Enter meeting title (required) and optional description
  • Choose meeting date/time
  • Option A: Drag & drop audio file or click to browse
  • Option B: Use browser extension to record directly
  • Click "Upload & Process" button
  • Watch the status change from "pending" → "processing" → "transcribed" → "summarized"

2. View Processing Status

  • Meetings appear in the dashboard immediately
  • Status badges show current processing stage:
    • 🔵 Pending - Waiting to start
    • 🔵 Processing - Transcription in progress
    • 🔵 Transcribed - Audio converted to text
    • 🟢 Summarized - AI analysis complete
    • 🟢 Completed - Ready to use

3. Explore Meeting Details

  • Click any meeting card to view full details
  • See complete transcription with timestamps
  • Review AI-generated summary
  • Check key points and decisions
  • View automatically extracted action items

4. Manage Action Items

  • Action items are automatically extracted with:
    • Description
    • Assignee (if mentioned)
    • Due date (if mentioned)
    • Priority level (high/medium/low)
  • Filter by status: pending, in progress, completed
  • Export action items separately if needed

5. Export Your Meeting

  • Navigate to meeting detail page
  • Scroll to "Export" section
  • Choose your format:
    • JSON - For developers/APIs
    • Markdown - For documentation
    • Notion - Ready for Notion import
    • Slack - Formatted for Slack messages
  • Click "Export" to download

6. Search & Filter

  • Use search bar to find meetings by title or description
  • Filter by status using dropdown
  • View meetings sorted by most recent first
  • Tags help organize related meetings

7. Browser Extension Quick Capture

  • Click extension icon in browser toolbar
  • Fill in meeting details
  • Record: Click microphone button to record directly
  • Upload: Or select an audio file
  • Click "Upload & Process"
  • Automatically redirected to app dashboard

🎬 How It Works

Workflow Diagram

┌─────────────────┐
│  Upload Audio   │
│   (MP3/MP4)     │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Store File      │
│  (Cloudinary/    │
│   ActiveStorage) │
└────────┬────────┘
         │
         ▼
┌─────────────────┐      ┌──────────────────┐
│ Background Job   │─────▶│ Whisper API       │
│ TranscribeAudio  │      │ (Transcription)   │
└────────┬────────┘      └──────────────────┘
         │
         ▼
┌─────────────────┐      ┌──────────────────┐
│  Transcription   │─────▶│ GPT-4 Analysis   │
│     Complete     │      │ (Summary & Items)  │
└────────┬────────┘      └──────────────────┘
         │
         ▼
┌─────────────────┐
│  Summary &       │
│  Action Items     │
│     Ready         │
└─────────────────┘

Key Features Explained

🤖 AI-Powered Transcription

  • Uses OpenAI's Whisper API for accurate speech-to-text
  • Supports multiple languages
  • Handles various audio qualities and formats
  • Processes in background for non-blocking experience

🧠 Intelligent Summarization

  • GPT-4 analyzes transcription content
  • Extracts key discussion points
  • Identifies decisions made
  • Creates structured summaries

✅ Automatic Action Item Extraction

  • AI identifies tasks mentioned in meeting
  • Extracts assignees from conversation
  • Infers due dates when mentioned
  • Assigns priority levels automatically

📤 Multi-Format Export

  • JSON: Structured data for APIs and integrations
  • Markdown: Documentation-ready format
  • Notion: Direct import format
  • Slack: Formatted for team communication

🛠️ Development

Running Tests

bin/rails test

Background Jobs

bin/rails solid_queue:start

React Components

Components are in app/javascript/components/ and use JSX syntax.


📝 License

MIT


About

(In progress)This app transforms meeting audio into summaries, key decisions, and actionable tasks — saving time and improving team productivity.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors