The primary goal of the Meeting Summarizer is to automate the process of converting meeting audio files into action-oriented summaries that highlight key decisions and actionable tasks.
This project is designed to ingest meeting audio, process it, and output structured text data.
Input: Meeting audio files. Output: Text transcript, a summary, and extracted action items. Optional Frontend: An optional user interface (frontend) is included to allow users to easily upload audio files and view the generated summary.
The system integrates various technologies to handle transcription and summarization:
ASR API Integration: Utilizes an Automated Speech Recognition (ASR) API (e.g., Google, Azure, OpenAI Whisper) to convert audio input into a text transcript. LLM for Summary Generation: A Large Language Model (LLM) is employed to process the transcript and generate the structured summary. Prompt Guidance: The LLM is guided to summarize the transcript, highlight key decisions, and generate tasks.A prompt example is: "Summarize this meeting transcript into key decisions and action items". Backend: A backend is required to store and process the data.
The project uses a modern web development stack, evident from the included configuration and source files:
| File/Directory | Purpose |
|---|---|
src/ |
Contains the main application source code. |
supabase/ |
Likely configuration/code for a Supabase integration (used for backend/database needs). |
vite.config.ts, index.html |
Files indicating a Vite-based modern frontend setup. |
tailwind.config.js, postcss.config.js |
Configuration for Tailwind CSS and PostCSS (used for styling the optional frontend). |
tsconfig.json files |
Configuration files for TypeScript. |
package.json files |
Defines project dependencies (packages) for Node.js/JavaScript. |
.gitignore, eslint.config.js |
Standard files for code management and linting. |
The successful completion of this project includes:
- This GitHub Repository and comprehensive
README.mdfile. - A Demo Video.
The system will be evaluated based on the following key metrics:
- Transcription Accuracy
- Summary Quality
- LLM Prompt Effectiveness
- Code Structure
To deploy and run the Meeting Summarizer, you need to configure the following environment variables in your Supabase Edge Functions:
OPENAI_API_KEY: Your OpenAI API key for accessing transcription (Whisper) and summarization (GPT-4o-mini) servicesSUPABASE_URL: Your Supabase project URLSUPABASE_SERVICE_ROLE_KEY: Your Supabase service role key with admin privileges
TRANSCRIPTION_MODEL: The OpenAI transcription model to use (default:whisper-1)TRANSCRIPTION_LANGUAGE: The language code for transcription (default:en). See OpenAI's language support for available options.
Use the Supabase CLI to set your environment secrets:
# Install Supabase CLI if you haven't already
npm install -g supabase
# Login to Supabase
supabase login
# Link your project
supabase link --project-ref your-project-ref
# Set required secrets
supabase secrets set OPENAI_API_KEY=your_openai_api_key_here
supabase secrets set SUPABASE_URL=your_supabase_url_here
supabase secrets set SUPABASE_SERVICE_ROLE_KEY=your_service_role_key_here
# Optional: Set custom transcription model (if different from whisper-1)
supabase secrets set TRANSCRIPTION_MODEL=whisper-1
# Optional: Set transcription language (if different from English)
supabase secrets set TRANSCRIPTION_LANGUAGE=enAfter setting the secrets, deploy the process-meeting function:
# Deploy the function
supabase functions deploy process-meeting
# Verify deployment
supabase functions listYou can test the deployed function using curl:
curl -X POST https://your-project-ref.supabase.co/functions/v1/process-meeting \
-H "Authorization: Bearer YOUR_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"meetingId": "test-meeting-id", "audioUrl": "path/to/audio.mp3"}'