ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Turn Meeting Transcripts into Agent Memory
Tutorial

How to Turn Meeting Transcripts into Agent Memory

Parse meeting transcripts into structured agent memory: decisions, action items, and context. Search-enriched pipeline.

Get Free API KeyAPI Docs

Meeting transcripts sit in folders unused. This pipeline parses transcripts into structured memory: decisions made, action items assigned, topics discussed, and external references mentioned. It then enriches external references via search to give agents full context. Each enrichment lookup costs $0.005.

Prerequisites

  • Python 3.8+
  • requests library
  • A Scavio API key from scavio.dev
  • Meeting transcript text files

Walkthrough

Step 1: Parse transcript into structured sections

Extract decisions, action items, and topics from raw transcript text.

Python
import os, requests, json, re

API_KEY = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}

def parse_transcript(text):
    """Extract structured data from meeting transcript."""
    memory = {'decisions': [], 'action_items': [], 'topics': [], 'references': []}
    lines = text.split('\n')
    for line in lines:
        line_lower = line.lower().strip()
        if any(w in line_lower for w in ['decided', 'agreed', 'approved', 'confirmed']):
            memory['decisions'].append(line.strip())
        if any(w in line_lower for w in ['will do', 'action:', 'todo:', 'assigned to', 'by friday', 'by next']):
            memory['action_items'].append(line.strip())
        urls = re.findall(r'https?://[^\s]+', line)
        memory['references'].extend(urls)
        # Extract mentioned tools/companies
        for word in line.split():
            if word[0:1].isupper() and len(word) > 3 and word.isalpha():
                if word not in ['The', 'This', 'That', 'They', 'What', 'When', 'Where']:
                    memory['topics'].append(word)
    memory['topics'] = list(set(memory['topics']))[:10]
    memory['references'] = list(set(memory['references']))
    return memory

# Test with sample transcript
sample = """John: We decided to switch from Tavily to a cheaper search API.
Sarah: Agreed. I will do the migration by next Friday.
John: Let's use Scavio. See https://scavio.dev for docs.
Sarah: Action: update the n8n workflow to use new API.
John: Confirmed the budget is $50/month for search."""

memory = parse_transcript(sample)
for key, items in memory.items():
    print(f'{key}: {items}')

Step 2: Enrich references with search context

Look up mentioned tools and URLs to add context to the memory.

Python
def enrich_memory(memory):
    """Add search context for mentioned topics and references."""
    enriched = []
    # Enrich topics with current info
    for topic in memory.get('topics', [])[:5]:
        data = requests.post('https://api.scavio.dev/api/v1/search',
            headers=SH, json={'query': f'{topic} latest 2026', 'country_code': 'us', 'num_results': 2}).json()
        results = data.get('organic_results', [])
        if results:
            enriched.append({
                'topic': topic,
                'context': results[0].get('snippet', '')[:150],
                'url': results[0].get('link', '')
            })
    memory['enriched_topics'] = enriched
    print(f'Enriched {len(enriched)} topics')
    for e in enriched:
        print(f'  {e["topic"]}: {e["context"][:60]}...')
    print(f'Enrichment cost: ${len(enriched) * 0.005:.3f}')
    return memory

memory = enrich_memory(memory)
print(f'\nFull memory keys: {list(memory.keys())}')

Step 3: Store as agent-readable memory format

Save the structured memory in a format agents can query later.

Python
def save_memory(memory, meeting_date='2026-05-20', filename='meeting_memory.json'):
    """Save structured meeting memory for agent consumption."""
    record = {
        'date': meeting_date,
        'type': 'meeting_transcript',
        'decisions': memory.get('decisions', []),
        'action_items': memory.get('action_items', []),
        'topics': memory.get('topics', []),
        'enriched_context': memory.get('enriched_topics', []),
        'references': memory.get('references', []),
    }
    with open(filename, 'w') as f:
        json.dump(record, f, indent=2)
    print(f'Meeting memory saved to {filename}')
    print(f'\n=== Memory Summary ===')
    print(f'  Date: {record["date"]}')
    print(f'  Decisions: {len(record["decisions"])}')
    print(f'  Action items: {len(record["action_items"])}')
    print(f'  Topics: {len(record["topics"])}')
    print(f'  Enriched context: {len(record["enriched_context"])}')
    print(f'\n  Decisions:')
    for d in record['decisions']:
        print(f'    - {d[:60]}')
    print(f'  Action items:')
    for a in record['action_items']:
        print(f'    - {a[:60]}')
    return record

save_memory(memory)

Python Example

Python
import os, requests, json
SH = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}

def enrich_topic(topic):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': f'{topic} 2026', 'country_code': 'us', 'num_results': 2}).json()
    r = data.get('organic_results', [{}])[0]
    return f'{r.get("title", "N/A")}: {r.get("snippet", "")[:80]}'

for topic in ['Scavio', 'Tavily', 'n8n']:
    print(f'{topic}: {enrich_topic(topic)}')
print('Cost: $0.015')

JavaScript Example

JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function enrichTopic(topic) {
  const data = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: SH,
    body: JSON.stringify({ query: `${topic} 2026`, country_code: 'us', num_results: 2 })
  }).then(r => r.json());
  const r = (data.organic_results || [])[0] || {};
  console.log(`${topic}: ${r.title || 'N/A'}`);
}
for (const t of ['Scavio', 'Tavily']) await enrichTopic(t);

Expected Output

JSON
decisions: ['John: We decided to switch from Tavily to a cheaper search API.']
action_items: ['Sarah: Agreed. I will do the migration by next Friday.', 'Sarah: Action: update the n8n workflow to use new API.']
topics: ['Scavio', 'Tavily', 'John', 'Sarah']
references: ['https://scavio.dev']

Enriched 4 topics
  Scavio: Scavio is a search API for AI agents offering structured...
  Tavily: Tavily search API acquired by Nebius in 2026...
Enrichment cost: $0.020

=== Memory Summary ===
  Decisions: 1
  Action items: 2
  Topics: 4
  Enriched context: 4

Related Tutorials

  • How to Build an Agent Memory Wiki with Search
  • How to Combine a Memory Server with Search MCP
  • How to Build an Agent Context Bridge for Search Results

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Python 3.8+. requests library. A Scavio API key from scavio.dev. Meeting transcript text files. A Scavio API key gives you 50 free credits on signup.

Yes. The free tier includes 50 credits on signup, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Related Resources

Use Case

Meeting Notes to Agent Memory

Read more
Best Of

Best Meeting-to-Agent-Memory Tools (2026)

Read more
Best Of

Best Meeting Notes MCP Tools in 2026

Read more
Workflow

Meeting Digest to Agent Memory Pipeline

Read more
Glossary

Meeting Transcript Memory

Read more
Solution

Agent Memory with Search Grounding

Read more

Start Building

Parse meeting transcripts into structured agent memory: decisions, action items, and context. Search-enriched pipeline.

Get Free API KeyRead the Docs
ScavioScavio

Real-time search API for AI agents. Search every platform, not just Google.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative

Tools

  • JSON Formatter
  • cURL to Code
  • Token Counter
  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy