Meeting transcripts
Automatically ingest meeting transcripts from Fireflies, Otter, Grain, Fathom, or any webhook-capable transcription service.
How it works
Most transcription services support post-meeting webhooks. You configure a URL, they POST the transcript after each meeting. Point it at your endpoint and forward to Anansi.
shell
POST https://anansimemory.com/v1/ingest
Authorization: Bearer ans_your_key
Content-Type: application/json
json
{
"userId": "user_abc",
"content": "Alice: Let's talk about Q3...\nBob: I think we should...",
"sourceType": "meeting",
"metadata": {
"title": "Q3 Planning — June 8",
"participants": "Alice, Bob, Carol",
"timestamp": "2026-06-08T14: 00: 00Z"
}
}
Middleware example
typescripttranscript-webhook.ts
app.post("/transcript-webhook", "kw">async (req, res) => {
"kw">const { title, transcript, organizer_email } = req.body;
"kw">await fetch("https:">class="cm">//anansimemory.com/v1/ingest", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ANANSI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
userId: organizer_email,
content: transcript,
sourceType: "meeting",
metadata: { title, timestamp: "kw">new Date().toISOString() },
}),
});
res.json({ ok: true });
});
How Anansi chunks meeting content
Meeting transcripts are chunked at speaker turns (e.g. Alice:, Bob:) so each speaker's contribution stays semantically together — making vector search significantly more accurate.
What appears in synthesized memory
- static — recurring topics, team decisions, ownership ("Carol owns Q3 roadmap")
- dynamic — current action items, open questions from recent meetings
- relevant — specific meeting content matching your query, with
metadata.title
Tip
Tip: Include metadata.title and metadata.participants — they surface in relevant[].metadata, letting you show "From: Q3 Planning — June 8" in your UI.