Learn 🧠 All Concepts (20) 🤖 What is an LLM? 📚 RAG Explained ⚡ AI Agents 💻 Run AI Locally 🇮🇳 AI in India 📖 Learn Tracks 🔧 DevOps Track ⚙️ AI Ops Track 🗺️ AI Engineer Roadmap
Tools 🔧 AI Tools Directory 🔓 Open Source AI ⭐ Top GitHub Repos ✦ Claude Skill Repos 🚀 Ready-to-Deploy Projects
Build 🏗️ Build Hub 🎯 Master Prompts 🧩 RAG Agents 🚀 App Megaprompts
Workflows ⚡ All Workflows (22) 🎥 Text to Video 🎞️ Image to Video 🔊 Text to Speech ♻️ Automation
Resources 🧪 Colab Notebooks ⚙️ n8n Workflows 📈 Algo Trading 💰 Passive Income
🗂️ Browse All Topics About AItheGuru
← RAG agents
🎙️ RAG Agent · Productivity

Meeting Intelligence and Action Item Agent

Transcribes and indexes all meetings. Ask what was decided on any topic across your entire meeting history.

Productivity Intermediate Local machineGoogle Colab

Quick info

CategoryProductivity
DifficultyIntermediate
Deploy onLocal machine

Get the code

Includes install commands in comments

What it does

Whisper transcription
SQLite FTS5 full-text search
Action item extraction
Decision archaeology
Works with Meet, Zoom, Teams recordings

Stack

PythonWhisperOpenAISQLite FTS5

Deploy on

✓ Local machine✓ Google Colab

Full source code

Install commands are in the top comments. Copy and run.

import whisper, sqlite3, json from openai import OpenAI from datetime import datetime client = OpenAI() model = whisper.load_model('small') def init_db(): conn = sqlite3.connect('meetings.db') conn.execute('CREATE VIRTUAL TABLE IF NOT EXISTS meetings USING fts5(mid,date,transcript,summary,actions)') conn.commit(); return conn def process_meeting(audio_path, meta): transcript = model.transcribe(audio_path, fp16=False)['text'] raw = client.chat.completions.create(model='gpt-4o-mini',messages=[ {'role':'user','content':f'Return JSON: summary, decisions(list), action_items(list of task+owner+deadline). Meeting:\n{transcript[:8000]}'} ]).choices[0].message.content insights = json.loads(raw) mid = f"mtg_{datetime.now().strftime('%Y%m%d_%H%M%S')}" conn = init_db() conn.execute('INSERT INTO meetings VALUES (?,?,?,?,?)',[mid,meta.get('date',''),transcript,insights['summary'],json.dumps(insights.get('action_items',[]))]) conn.commit() return {**insights,'id':mid} def query_meetings(question): rows = init_db().execute('SELECT date,summary FROM meetings WHERE meetings MATCH ? LIMIT 5',(question.replace('?',''),)).fetchall() if not rows: return {'answer':'No relevant meetings found'} ctx = '\n\n'.join(f'[{r[0]}] {r[1]}' for r in rows) ans = client.chat.completions.create(model='gpt-4o-mini',messages=[ {'role':'system','content':'Answer from meeting records. Be specific about dates.'}, {'role':'user','content':f'Records:\n{ctx}\n\nQ: {question}'}]) return {'answer':ans.choices[0].message.content}