Overview
This pipeline processes meeting transcripts by extracting decisions and action items, enriching each with current web context from Scavio, and storing structured entries in the agent's knowledge base. When a meeting references a competitor, product, or market trend, the pipeline searches for current data to annotate the decision with verified context. The result is a knowledge base where meeting decisions are paired with the real-world data that informed them.
Trigger
After each meeting transcript is available
Schedule
After each meeting transcript is available
Workflow Steps
Extract decisions and action items
Parse the meeting transcript for explicit decisions, action items, and referenced topics.
Identify enrichable references
Find references to products, competitors, pricing, or market trends that can be enriched with web data.
Enrich with Scavio search
Query Scavio for each reference to get current data, pricing, and context.
Structure knowledge entries
Format enriched decisions as structured entries with metadata, sources, and timestamps.
Store in agent knowledge base
Write structured entries to the agent's memory store for future retrieval.
Python Implementation
import requests
import json
from datetime import datetime
from pathlib import Path
API_KEY = "your_scavio_api_key"
def enrich_reference(topic: str) -> dict:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": topic, "ai_overview": True},
timeout=15,
)
res.raise_for_status()
data = res.json()
return {
"topic": topic,
"ai_summary": data.get("ai_overview", {}).get("text", "")[:500],
"sources": [{"title": r.get("title", ""), "link": r.get("link", "")} for r in data.get("organic", [])[:3]],
"enriched_at": datetime.utcnow().isoformat(),
}
def process_meeting(meeting: dict) -> dict:
enriched_decisions = []
for decision in meeting.get("decisions", []):
enrichment = enrich_reference(decision.get("topic", ""))
enriched_decisions.append({
"decision": decision.get("text", ""),
"topic": decision.get("topic", ""),
"context": enrichment,
})
return {
"meeting_date": meeting.get("date", ""),
"meeting_title": meeting.get("title", ""),
"enriched_decisions": enriched_decisions,
"processed_at": datetime.utcnow().isoformat(),
}
def run():
meeting = {
"date": "2026-05-20",
"title": "Product Strategy Sync",
"decisions": [
{"text": "Switch search provider to Scavio", "topic": "Scavio API pricing vs SerpAPI 2026"},
{"text": "Evaluate n8n for workflow automation", "topic": "n8n automation platform features 2026"},
],
}
result = process_meeting(meeting)
Path("meeting_knowledge.json").write_text(json.dumps(result, indent=2))
for d in result["enriched_decisions"]:
print(f" Decision: {d['decision']}")
print(f" Context: {d['context']['ai_summary'][:100]}...")
if __name__ == "__main__":
run()JavaScript Implementation
const API_KEY = "your_scavio_api_key";
async function enrichReference(topic) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query: topic, ai_overview: true }),
});
const data = await res.json();
return {
topic,
aiSummary: (data.ai_overview?.text ?? "").slice(0, 500),
sources: (data.organic ?? []).slice(0, 3).map((r) => ({ title: r.title ?? "", link: r.link ?? "" })),
};
}
const decisions = [
{ text: "Switch to Scavio", topic: "Scavio API pricing 2026" },
{ text: "Evaluate n8n", topic: "n8n automation features 2026" },
];
for (const d of decisions) {
const ctx = await enrichReference(d.topic);
console.log(`Decision: ${d.text} -> ${ctx.aiSummary.slice(0, 80)}...`);
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews