← Back to brief

reference meeting loop

memory · reference_meeting_loop.md

What it does

Before every meeting you walk into, the morning brief tells you: who you're meeting, what's unresolved, what to push, what to avoid, how much commission is at stake.

After every meeting you finish, Otter (or Spinach, Gemini, etc.) publishes a transcript. Within 4 hours, the system has:

No more forgetting follow-ups. No more showing up cold.

Pre-meeting brief — nightly-consolidation Section K

Runs during nightly-consolidation (11pm). For every calendar event in the next 24h with ≥1 external attendee:

1. Pull event via Fantastical MCP (fallback: Google Calendar MCP)
2. Resolve attendees against knowledge graph + HubSpot
3. Build context from: graph relationships, active deals, memory files, Gmail last-exchange, HS lead_source_notes
4. Synthesize brief — context / unresolved / push / avoid / commission at stake
5. Insert into morning brief before "Today's 3 priorities" section

Per-meeting brief format

markdown

4:00 PM MDT — Andy Hadank (Snowblaze B-32 walkthrough) [3 attendees]

  • Context: Owner of Snowblaze B-32, verbally committed 35% with you 2026-04-21. Rachel attending as ops lead.
  • Unresolved: Andy asked about hot tub maintenance coverage 4/22 — Rachel hasn't replied yet.
  • Push: Close the agreement at 35% today. Hand off to Mandy for onboarding.
  • Avoid: Don't mention Vermont. Don't revisit commission %.
  • Commission at stake: $1,000 (Bowens Sourced) — stage=contract_pending, ~85% probability. EV: $850.

Internal-only meetings

Shorter brief — last-1:1 highlights + open items, no "commission at stake" line.

DNC safety

Every attendee checked via dnc_check.py. Active homeowners on the calendar are expected (operational meetings), but the flag catches scheduling mistakes before you walk in.

Post-meeting capture — transcript-scan Phase 4

Runs during transcript-scan (8am/12pm/4pm — 3x daily). For every NEW transcript where char_count > 1000:

What gets extracted

1. Participants → matched to graph; unknowns queued for review 2. Action itemspwa/data/meeting_action_items.jsonl with deadline + confidence 3. Decisions / deal movementpwa/data/pending_hs_updates.jsonl (YELLOW, approval required) 4. New contacts mentioned → knowledge_graph _pending_entities[] (not promoted until seen twice) 5. Graph relationshipsmet_with edges between all participant pairs + last_seen_at bump

What does NOT happen automatically

Approval queue channels introduced

ChannelFilePurpose
hs_updatepending_hs_updates.jsonlProposed HS deal-stage or property-note updates
action_itemmeeting_action_items.jsonlTracked commitments with deadlines
memory_updatepending_memory_updates.jsonlProposed memory file edits
Morning brief surfaces overdue action items. Live-ea surfaces urgent ones as push notifications.

Where the data flows


Otter/Spinach transcript → transcript-scan Phase 1/2 → saved to Call Transcripts/
                                   ↓
                           transcript-scan Phase 4 → meeting_action_items.jsonl
                                                   → pending_hs_updates.jsonl
                                                   → knowledge_graph.json
                                                   → ntfy push
                                   ↓
Calendar event tomorrow → nightly-consolidation Section K → per-meeting brief
                                                          → morning_brief.md
                                                          → PWA pane of glass
                                                          → your breakfast

Related files