Demo: Meeting Attendance
V2 only — invite-only edition. This is part of AI Partner V2 and is not in the open-source V1 you self-host from the Quick Start. V2 is available now, by invite. See V1 vs V2.
What you'll see
You paste a meeting URL into the chat. AI Partner:
- Boots a containerized virtual desktop
- Opens a browser, navigates to the meeting URL, and joins
- Listens to the audio using Whisper speech-to-text
- Generates contextual responses aligned with your goals
- Speaks using your cloned voice (via your configured TTS provider)
- Extracts action items and sends them to you for approval
- Delivers a full transcript and summary when the meeting ends
Prerequisites
Meeting attendance requires the T3 container tier. Make sure Docker is running and the container service has started successfully (docker compose up shows no errors).
Required:
- Docker Desktop running
- A live meeting URL (Google Meet, Microsoft Teams, or Zoom)
- At least one LLM provider configured
Recommended for the full experience:
USER.mdfilled in with your name and role (the agent introduces itself with this)GOALS.mdwith your current goals (drives what the agent says in meetings)- A TTS voice provider configured in
USER.md:Supported: ElevenLabs, MiniMax, OpenAI TTSvoice_profile: elevenlabs:your-voice-id
Optional:
- Telegram configured to receive action item approvals after the meeting
Step-by-step
- 1Start the meeting in your video platform
Start or open the meeting in Google Meet, Teams, or Zoom. Get the join URL — something like:
- Google Meet:
https://meet.google.com/abc-defg-hij - Teams:
https://teams.live.com/meet/9876543210 - Zoom:
https://zoom.us/j/12345678901?pwd=...
- Google Meet:
- 2Send the URL to AI Partner
Paste the meeting URL directly into the AI Partner chat input and press Enter. AI Partner detects that it's a meeting URL and automatically starts the meeting proxy pipeline — no goal mode needed.
You can optionally add context:
https://meet.google.com/abc-defg-hijJoin as "Alex". The goal of this meeting is to get a commitment from the clienton the Q2 project timeline. Focus on unblocking any concerns they have. - 3Watch the status panel
The Meeting Status panel appears on the right side of the screen showing:
⏳ Booting container...⏳ Launching browser...⏳ Navigating to meeting URL...✅ Joined meeting — 3 participants detected🎤 Listening... - 4Watch the live transcript
As participants speak, the transcript streams in real time:
[14:03:22] Sarah (client): "So the main concern we have is the timeline..."[14:03:45] AI Partner (as Alex): "I understand the timeline concern, Sarah.Let me walk you through the milestones we've locked in..."[14:04:10] Mike (client): "That's helpful. What about the integration piece?" - 5Receive the summary
When the meeting ends (or someone clicks Leave meeting in the UI), AI Partner sends:
In chat:
Meeting ended — 38 minutesParticipants: Sarah (client), Mike (client), AI Partner (as Alex)Transcript: workspace/meetings/session_20260513_140300/transcript.mdSummary: workspace/meetings/session_20260513_140300/summary.mdVia Telegram (if configured) — action item approvals:
Meeting Action Items — 2026-05-131. Send revised project timeline by Friday[✅ Approve] [✏️ Edit] [⏭ Skip]2. Schedule integration review call for next week[✅ Approve] [✏️ Edit] [⏭ Skip]
What the agent does in the meeting
The agent's behavior in meetings is driven by three files:
| File | What it controls |
|---|---|
SOUL.md | Communication style — direct vs. diplomatic, formal vs. casual |
USER.md | Your identity, role, company context injected into every response |
GOALS.md | The objective the agent tries to advance in every meeting |
Example: if your GOALS.md says:
### Close Series A
- Success: Term sheet signed by June 30, 2026
- Context: In conversations with 3 VCs
...and the meeting is with a VC, the agent will naturally steer the conversation toward investment terms, address objections, and push for a next step — because it understands what you're trying to achieve.
AI disclosure
On the first response in each meeting, the agent prepends a disclosure preamble:
"Just to be transparent — I'm an AI assistant joining on Alex's behalf. Alex will review this conversation. Please continue as you normally would."
This is gated by AUTHORITY.md. You can opt out for specific counterparty classes:
## Auto
- action: skip_ai_disclosure + counterparty: colleague
Real-time controls
While the meeting is active, the Meeting Status panel has buttons:
| Button | What it does |
|---|---|
| Leave meeting | Gracefully exits the meeting and triggers the post-summary |
| Mute | Stops the agent from speaking (still listens) |
| Force respond | Triggers an immediate response from the agent |
| View transcript | Opens the live transcript in a scrollable panel |
Post-meeting files
After every meeting, two files are saved to workspace/meetings/<sessionId>/:
transcript.md— full verbatim transcript with speaker labels and timestampssummary.md— LLM-generated summary: key decisions, action items, unresolved questions, and goal progress assessment
Both files are also listed in the Files panel for download.
Supported platforms
| Platform | Status | Notes |
|---|---|---|
| Google Meet | ✅ Supported | Standard browser join |
| Microsoft Teams | ✅ Supported | Browser-based Teams (teams.live.com) |
| Zoom | ✅ Supported | Web client (zoom.us/j/) — no app install needed |
| Webex | ⚠️ Experimental | May require manual CAPTCHA on first join |
The agent joins via a headless browser inside a Docker container. It appears in the meeting as a regular browser participant. Platform-specific in-meeting UI differences (roster detection, mute button selectors) are handled by the platform adapter layer.