# Memory Bubbles Ingest

> Ingest Bubbles AI meeting summaries from Gmail into the memory knowledge base

- Skill: `lotfb86/memory-bubbles-ingest` (Agent Skill)
- Install (CLI): `npx skillmds@latest add lotfb86/memory-bubbles-ingest`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lotfb86/memory-bubbles-ingest/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: lotfb86 (https://skillmd.com/u/lotfb86)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lotfb86/memory-bubbles-ingest

---


# Bubbles AI Meeting Notes Ingest for Memory Knowledge Base

Pull Bubbles AI meeting summaries from Gmail. These contain structured meeting notes, transcripts, and action items for every meeting Jesse attends.

## How Bubbles Works

Bubbles AI (usebubbles.com) joins Jesse's Google Meet/Zoom calls and sends email summaries to jesse@rapidinnovation.io from `no-reply@usebubbles.com`. Each email contains:
- Meeting summary (numbered topic sections)
- Action items (with assignees)
- Link to recording
- Meeting title and participants

## Process

### 1. Load State

Read state from `/Users/jesseanglen/Documents/RandomStuff/memory-kb/state/bubbles-state.json`.
If it doesn't exist, this is the first run — set `last_checked` to 7 days ago.

### 2. Search Gmail for Bubbles Summaries

Use `gmail_search_messages`:
```
q: "from:usebubbles.com subject:summary after:YYYY/MM/DD"
maxResults: 30
```

Where the date comes from `last_checked` in state.

### 3. Read Each Summary Email

For each Bubbles email, use `gmail_read_message` with the `messageId`.

Extract from the body:
- **Meeting title** (from subject line — format: "Full summary & N action items [for Person] — [Meeting Title]")
- **Meeting summary** (the numbered sections under "📝 Meeting Summary:")
- **Action items** (the items under action items section)
- **Participants** (inferred from subject and body mentions)
- **Date/time** (from email Date header)

### 4. Cross-Reference with Calendar

Match the meeting title against calendar events in the same daily log file.
If a matching calendar entry exists, add a reference linking the Bubbles notes to that event.

Also check `/Users/jesseanglen/Documents/RandomStuff/memory-kb/state/calendar-contacts.json` for participant emails.

### 5. Append to Daily Log

For each Bubbles summary, append to `/Users/jesseanglen/Documents/RandomStuff/memory-kb/daily/YYYY-MM-DD.md`:

```markdown
## Meeting Notes (Bubbles): [Meeting Title] @ HH:MM PT
**source:** bubbles
**participants:** [Names mentioned in the summary]
**related_calendar_event:** [matching calendar entry if found]

### Meeting Summary
- [Topic 1 summary from Bubbles]
- [Topic 2 summary from Bubbles]
- [etc.]

### Action Items
- [ ] [Action item 1 — assignee]
- [ ] [Action item 2 — assignee]
```

Create daily log with header if it doesn't exist.

### 6. Deduplication

Track processed Bubbles email message IDs in state. Check daily log for existing Bubbles entries with same meeting title before appending.

### 7. Update State

Write to `/Users/jesseanglen/Documents/RandomStuff/memory-kb/state/bubbles-state.json`:

```json
{
  "last_checked": "YYYY/MM/DD",
  "total_runs": N,
  "last_run": {
    "timestamp": "ISO",
    "summaries_found": N,
    "summaries_ingested": N,
    "action_items_captured": N,
    "status": "success"
  },
  "processed_message_ids": ["id1", "id2"]
}
```

### 8. Report

"Bubbles ingest complete. Found X meeting summaries, ingested Y, captured Z action items."

## MCP Tools Reference

- `gmail_search_messages` — search for Bubbles emails
- `gmail_read_message` — read full meeting summary

## Why This Is Valuable

Bubbles summaries are the **richest meeting data source** — they contain actual discussion content, decisions, and action items that calendar events don't have. Combined with calendar attendees and email follow-ups, this creates a complete picture of every meeting:
- Calendar = who was there and when
- Bubbles = what was discussed and decided
- Emails = what happened after

## Notes

- Bubbles emails come from `no-reply@usebubbles.com`
- Subject format: "Full summary & N action items [for Person] — [Meeting Title]"
- No Bubbles API/MCP exists — Gmail is the access path
- Bubbles sometimes creates duplicate "(Notes)" calendar events — ignore those, focus on the email summaries
- Strip the Bubbles boilerplate/marketing from the email body, keep only the meeting content

