Skip to content

Whether you're dealing with illness, family emergencies, or conflicting priorities, PROXY-MEET provides reliable meeting coverage so you never have to choose between your responsibilities and your well-being.

License

Notifications You must be signed in to change notification settings

PrasunDutta007/Proxy-Meet

Repository files navigation

πŸ€–πŸ“ PROXY-MEET πŸ“πŸ€–

Windows Only

Feeling under the weather? Called away for an urgent matter? Don't let unexpected circumstances force you to miss important online meetings. PROXY-MEET seamlessly handles your meeting attendance, ensuring you maintain your commitments even when life gets in the way.

Whether you're dealing with illness, family emergencies, or conflicting priorities, PROXY-MEET provides reliable meeting coverage so you never have to choose between your responsibilities and your well-being.

An intelligent meeting automation system that acts as your proxy in online meetings, providing automated attendance, interacts when your name is called, generates structured meeting notes using multiple AI agents and logs it into Notion, and creates professional Minutes of Meeting (MoM) email drafts.

⚠️ Note: This application is currently optimized for Windows OS and may not function properly on macOS or Linux.

Proxy-Meet Demo

Proxy-Meet Demo: Intelligent Meeting Automation

πŸš€ Features

  • Automated Meeting Attendance: Joins scheduled Zoom meetings automatically
  • Intelligent Interaction: AI-powered response via voice and in message window when your name is called
  • Meeting Logging: Automatic audio and transcript logging in archives/
  • Advanced Transcription: Uses Google Gemini 2.5 Pro for accurate transcription with speaker diarization
  • Dual Note-taking Strategy:
    • Predefined structured format
    • AI-recommended format based on meeting type (progress updates, brainstorming, 1-on-1s, interviews, etc.)
  • Automated Email Distribution: Creates MoM email drafts in Gmail
  • Multi-Agent Analysis: Uses CrewAI with specialized agents for comprehensive meeting analysis
  • Professional Output: Generates structured notes in Markdown format
  • Notion Logging: Automatically logs both the meeting-notes in an organized mannner in Notion
  • Streamlit Dashboard: User-friendly web interface

πŸ›οΈ Architecture

Architecture Diagram

Proxy-Meet Architecture

The application uses a multi-agent system powered by CrewAI:

  1. Meeting Analyst - Extracts core content and themes
  2. Action Item Specialist - Identifies actionable tasks
  3. Content Organizer - Structures information hierarchically
  4. Quality Assurance Editor - Ensures accuracy and formatting
  5. Meeting Strategist - Determines optimal documentation framework
  6. Strategic Note Curator - Applies sophisticated note-taking methodologies
  7. Email Assistant - Formats and distributes meeting minutes

πŸ“‹ Prerequisites

Before setting up Proxy-Meet, ensure you have:

  • Python 3.8 or higher
  • OBS Studio
  • ffmpeg
  • VB-CABLE (Virtual Audio Device)
  • Google Cloud Platform Account
  • Google API key (for Gemini AI)
  • Notion API key & Database Id
  • AssemblyAI API key
  • Stable internet connection

πŸ› οΈ Installation & Setup

Step 1: Clone the Repository

git clone https://github.com/YOUR_USERNAME/Proxy-Meet.git
cd Proxy-Meet

Step 2: Create Virtual Environment

# Create virtual environment
python -m venv venv

# Activate virtual environment
venv\Scripts\activate.bat

Step 3: Install Dependencies

pip install -r requirements.txt

Step 4: Environment Configuration

Create a .env file in the project root:

# Notion APIs
NOTION_API_KEY="your_notion_internal_integration_secret_key"
NOTION_DATABASE_ID="your_notion_database_id"

# Zoom Configuration
ZOOM_LINK="your_zoom_meeting_link"
WAIT_INTERVAL="30"
MAX_WAIT_TIME="3600"

# AI Configuration
GOOGLE_API_KEY=your_google_api_key  
AAI_API_KEY=your_assemblyai_api_key
LANGFUSE_PUBLIC_KEY="your_langfuse_publickey"
LANGFUSE_SECRET_KEY="your_langfuse_secretkey"
LANGFUSE_HOST="https://cloud.langfuse.com"  

Step 5: Personal Avatar Setup

  1. Record a short video of yourself (me.mp4) for avatar purposes
  2. Place it in the project root
  3. Ensure good lighting

Step 6: OBS Studio Setup

6.1 Installation:

  1. Download OBS Studio:
    • Go to OBS Studio
    • Download the installer for Windows
    • Run the installer and complete the installation (make sure the installation location is in C:\Program Files\)

6.2 Configuration:

  1. Scene Setup:

    • Launch OBS Studio
    • Under Scenes panel (bottom left), create one profile:
      • Right-click in Scenes area β†’ Add β†’ Enter scene name β†’ OK
  2. Source Configuration:

    • Under Sources panel (bottom center), add media source:
      • Click the + button β†’ Select Media Source β†’ Create New β†’ OK
    • Configure Media Source:
      • Browse and select your pre-recorded video file
      • Check the following options:
        • βœ… Loop
        • βœ… Restart playback when source becomes active
      • Click OK to save settings
  3. Verify Setup:

    # Your video should now be playing in the preview window
    # The video will loop continuously and restart when switching scenes

Note: This OBS configuration will allow your Proxy-Meet application to use the pre-recorded video as a virtual camera source during meetings.

Step 7: FFmpeg & VB-Cable Setup

FFmpeg is required for audio processing in Proxy-Meet. Follow these steps to install it on Windows:

7.1 Download FFmpeg

  1. Go to FFmpeg
  2. Under "Windows EXE Files", select "Built by BtBN"
  3. Look for the Assets section and download: ffmpeg-master-latest-win64-gpl.zip
  • Note: If the Assets section is not visible, click to expand it
  1. Extract the downloaded ZIP file to a temporary location

7.2 Install FFmpeg

  1. Create a new directory named ffmpeg directly under your C drive: C:\ffmpeg\
  2. Copy all contents from the extracted ffmpeg-master-latest-win64-gpl folder directly into C:\ffmpeg\

The final structure should look like:

C:\ffmpeg
β”œβ”€β”€ bin
β”‚   β”œβ”€β”€ ffmpeg.exe
β”‚   β”œβ”€β”€ ffplay.exe
β”‚   └── ffprobe.exe
β”œβ”€β”€ doc\
└── LICENSE

7.3 Add FFmpeg to System PATH

  1. Right-click "This PC" β†’ Properties β†’ Advanced system settings
  2. Click "Environment Variables"
  3. Under "System Variables", find and select "Path", then click "Edit"
  4. Click "New" and add: C:\ffmpeg\bin
  5. Click "OK" to close all dialogs
  6. Restart your command prompt/terminal

7.4 Verify Installation

Open a new command prompt and test:

ffmpeg -version

You should see FFmpeg version information if installed correctly.

7.5 Download & Install VB-CABLE

  1. Go to VB-CABLE
  2. Download the latest VB-CABLE Driver and follow the on-page installation instruction to Install

Step 8: Notion Integration Setup

8.1 Account and Integration Setup:

  1. Create Notion Account:

    • Go to Notion
    • Sign up for a new account or log in to existing account
  2. Create Integration and Get API:

    • Go to Notion Integration
    • Click + New integration
    • Give your integration a name (e.g., "Proxy-Meet Integration")
    • Select your workspace
    • Click Submit
    • Copy the Internal Integration Token

8.2 Database Setup:

  1. Create Meeting Notes Page:

    • In your Notion workspace, create a new page
    • Add heading: Meeting-Notes
  2. Create Database:

    • Under the Meeting-Notes page, create a new inline database called "Notes"
    • Add the following columns with their respective types:
    Column Name Type
    Title Title
    Date Date
    Type Select
    Summary Text
    Action Items Text
    Detailed Notes Text
    Status Select (add option New)
    Key Decisions Text
  3. Get Database ID:

    • Click the six dots besides "Notes" heading of your database and click Open as page
    • Click the three dots (top right corner) and Copy the URL from your browser
    • The database ID is the 32-character string in the URL
    • Format: https://notion.so/your-workspace/DATABASE_ID?v=...
  4. Configure Environment Variables:

    • Open your .env file in the Proxy-Meet project
    • Add the following variables:
    # Notion Integration
    NOTION_API_KEY=your_internal_integration_token_here
    NOTION_DATABASE_ID=your_database_id_here

8.3 Grant Database Access:

  • On the Integration page, click Access
  • Grant it Full access permissions to your Meeting-Notes page

Step 9: Google Gmail API Setup

9.1 Create a Google Cloud Project

  1. Go to the Google Cloud Console
  2. Create a new project or select an existing one
  3. Enable the Gmail API:
    • Navigate to APIs & Services > Library
    • Search for "Gmail API"
    • Click on it and press "Enable"

9.2 Create OAuth 2.0 Credentials

  1. Go to APIs & Services > Credentials
  2. Click Create Credentials > OAuth client ID
  3. Choose Desktop application as the application type
  4. Give it a name (e.g., "Proxy-Meet")
  5. Download the credentials JSON file
  6. Rename it to credentials.json and place it in your project root directory

9.3 Configure OAuth Consent Screen

  1. Go to APIs & Services > OAuth consent screen
  2. Choose External user type (unless you're using Google Workspace)
  3. Fill in the required information:
    • App name: "Meeting Analyzer AI"
    • User support email: Your email
    • Developer contact information: Your email
  4. Add scopes:
    • Click Add or Remove Scopes
    • Add https://mail.google.com/ (full Gmail access)
  5. Add test users (your email address) in the Test users section
  6. Save and continue

Step 10: API Keys Required

  1. Google API Key:

  2. AssemblyAI API Key:

  3. Langfuse Keys:

    • Sign up at Langfuse
    • For tracking and monitoring AI interactions

Step 11: First Time Authentication

  1. Run the application for the first time:
python zoom_bot.py
  1. When you first use a Gmail feature, you'll be redirected to Google's OAuth consent screen
  2. Sign in with your Google account
  3. Grant the necessary permissions
  4. A token.json file will be created automatically in your project directory
  5. As soon as the token.json file is created, interrupt the run with Ctrl+C

Step 12: Changing Bot Configuration

Configure the bot settings to personalize your meeting assistant by going to zoom_bot.py:

  1. Set Bot Name: Change the bot name to your preferred name

    BOT_NAME = "prasun"  # Replace "prasun" with your name
  2. Customize Response Message: Update the automated response text

    RESPONSE_TEXT = "Hi, this is Prasun's assistant. Prasun is ill today, his bot is attending the meet !!"
    # Change to your preferred response message
  3. Set Meeting Display Name:

    • Use Ctrl+F to search for the line containing name_input.send
    • Find this line:
      name_input.send_keys("Prasun-Bot")
    • Change "Prasun-Bot" to the name you want to appear in the meeting

Example Configuration:

BOT_NAME = "john"
RESPONSE_TEXT = "Hello! This is John's AI assistant. John is temporarily unavailable !!"
name_input.send_keys("John-Assistant")

πŸ—οΈ Project Structure

Proxy-Meet/
β”œβ”€β”€ venv/                                    # Virtual environment (excluded from git)
β”œβ”€β”€ archives/                                # Meetings (excluded from git)
β”‚   └── meeting_*/                           # Individual meetings 
β”‚      β”œβ”€β”€ Meeting_Notes.md                  # Structured Notes using predefined format 
β”‚      β”œβ”€β”€ Meeting_Notes2.md                 # AI-recommended format based on meeting type 
β”‚      β”œβ”€β”€ recording.mp3                     # Meeting Recording 
β”‚      β”œβ”€β”€ recording_transcript_*.json       # Full Transcript with speaker identification in json format 
β”‚      └── recording_transcript_*.txt        # Full Transcript with speaker identification in human readable format 
β”œβ”€β”€ credentials.json                         # Google API credentials (excluded from git)
β”œβ”€β”€ .env                                     # Environment variables (excluded from git)
β”œβ”€β”€ me.mp4                                   # Personal video/avatar (excluded from git)
β”œβ”€β”€ token.json                               # OAuth tokens (excluded from git)
β”œβ”€β”€ requirements.txt                         # Python dependencies
β”œβ”€β”€ meeting_pipeline.py                      # Core meeting processing pipeline
β”œβ”€β”€ tools.py                                 # Utility functions and tools
β”œβ”€β”€ utils.py                                 # Helper utilities
β”œβ”€β”€ zoom_bot.py                              # Zoom meeting automation bot
β”œβ”€β”€ agents.py                                # AI agents for meeting interactions
β”œβ”€β”€ notion_logger.py                         # Logging Notes into Notion
β”œβ”€β”€ streamlit_app.py                         # Web interface using Streamlit
β”œβ”€β”€ scheduler_runner.py                      # Automated scheduler execution
└── meeting_scheduler.py                     # Meeting scheduling and management

πŸ€– Getting Started with Proxy-Meet

Choose your preferred method below to get started.

🌐 Method 1: Streamlit Web Interface

Steps:

  1. Launch the Application

    streamlit run meeting_scheduler.py
  2. Configure Your Meeting

    • Enter your desired meeting date
    • Set the meeting time
    • Add your Zoom meeting link
  3. Relax and Let Proxy-Meet Handle the Rest 😌

interface

Meeting Scheduler Interface

πŸ’» Method 2: Command Line Interface

Steps:

  1. Environment Setup

    • Navigate to your project folder
    • Update the .env file with your Zoom meeting link in the ZOOM_LINK variable
  2. Execute the Bot

    python zoom_bot.py
  3. You're All Set! 😊

❓ What Happens After Meet ❓

Once your meeting concludes, Proxy-Meet automatically springs into action:

βœ… Gmail Integration - Creates a comprehensive Minutes of Meeting (MoM) draft in your Gmail

gmail

Demo: Automated Gmail MoM Draft

βœ… Notion Logging - Saves detailed meeting notes to your Notion workspace

notion

Demo: Automated Notion Notes

βœ… Interactive Dashboard - Opens a beautiful Streamlit interface featuring:

  • 🎡 Complete meeting audio recording
  • πŸ“ Full meeting transcript
  • πŸ“‹ Organized meeting notes and insights
interface

Demo: Meeting Analyzer Interface

πŸ› Troubleshooting

Common Issues

  1. "File not found" errors: Ensure all required files are in the project root
  2. Authentication errors: Check that credentials.json is properly configured
  3. API quota exceeded: Monitor your Google API usage in the Cloud Console
  4. Transcription failures: If nothing was spoken during meet, audio too low or extremely poor audio quality

Gmail Authentication Issues

  • Refresh token expired: Delete token.json and re-authenticate
  • Scope errors: Ensure the Gmail API is enabled in your Google Cloud project
  • Permission denied: Check that your app is not in testing mode restrictions

Meet Join and End Issues

πŸšͺ Zoom Meeting Join Failures

  • Issue: The bot may occasionally fail to join Zoom meetings due to browser popup sequence variations.
  • Root Cause: Chrome's popup order can vary between sessions, affecting the automated joining process.
  • Workaround: If you encounter joining issues, modify the popup handling logic in the join_zoom_and_record() function in zoom_bot.py to match your browser's current popup sequence.

πŸ”š Meeting End Detection Failures

  • Issue: The bot fails to properly detect meeting termination when the host leaves instead of ending the session.
  • Root Cause: The application is designed to detect "meeting ended" signals, but when hosts simply leave the meeting (rather than formally ending it), this trigger is not activated.
  • Workaround: Ensure meeting hosts use the "End Meeting" option rather than just leaving the session for proper bot functionality.

πŸ”’ Security & Privacy

  • Credentials: Never commit credentials.json, token.json, or .env files
  • Video Data: Personal video (me.mp4) stays local and is not uploaded
  • Meeting Data: All meeting logs are stored locally by default
  • API Keys: Store securely in environment variables
  • Network: Use HTTPS for all external API calls

πŸ™ Acknowledgments

  • Built with CrewAI for multi-agent orchestration
  • Uses Google Gemini for advanced AI capabilities
  • Powered by Streamlit for the web interface
  • Integrates with Gmail API for email automation

This project is licensed under the GNU GPLv3 - see the LICENSE file for details. Made with ❀️ by Prasun

About

Whether you're dealing with illness, family emergencies, or conflicting priorities, PROXY-MEET provides reliable meeting coverage so you never have to choose between your responsibilities and your well-being.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages