13 KiB
Testing ThirdEye with Actual Google Meet & Telegram
This guide walks you through testing the full Meet + Telegram integration end-to-end.
Prerequisites
- Chrome browser with Developer mode enabled
- Google account for Google Meet
- Telegram account and bot token (already configured)
- ThirdEye backend + bot both running
Step 1: Start Your Services
Open two terminals and run both services:
Terminal 1: FastAPI Backend
cd c:\Projects\binary_hack
python run_api.py
You should see:
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000
Terminal 2: Telegram Bot
cd c:\Projects\binary_hack
python -m backend.bot.bot
You should see:
INFO:thirdeye.bot:ThirdEye bot starting...
Keep both running throughout the test.
Step 2: Verify Services Are Running
Check API Health
curl http://localhost:8000/health
Expected response:
{"status":"ok","service":"thirdeye"}
Check Telegram Bot
Send /start to your bot in Telegram. You should see the welcome message with all available commands including:
/meetsum [id]— Summarize a meeting/meetask [id] [q]— Ask about a meeting/meetmatch [id]— Match meeting to team chats
Step 3: Load the Chrome Extension
- Open Chrome and navigate to
chrome://extensions/ - Enable Developer mode (toggle in top-right corner)
- Click Load unpacked
- Navigate to
c:\Projects\binary_hack\meet_extension\ - Click Select Folder
You should see "ThirdEye Meet Recorder" in your extensions list.
Step 4: Configure the Extension
- Click the ThirdEye extension icon in Chrome toolbar
- In the popup, scroll to the bottom section
- Enter these settings:
- Backend URL:
http://localhost:8000 - Group ID:
meet_sessions - Ingest Secret:
thirdeye_meet_secret_change_me
- Backend URL:
- Click Save Settings
You should see "✓ Saved" confirmation.
Step 5: Start a Test Google Meet
5.1 Create or Join a Meeting
Go to https://meet.google.com and either:
- Create a new meeting (click "New meeting" → "Start an instant meeting")
- Join an existing meeting using a code
5.2 Start Recording
- Once in the meeting, click the ThirdEye extension icon
- You should see the popup UI with "▶ Start Recording" button
- Click Start Recording
- Chrome will prompt for microphone access - click Allow
5.3 Verify Recording Started
The extension popup should show:
- A pulsing red dot next to "Recording..."
- The Meeting ID (e.g.,
abc-defg-hij) - "0 chunks sent" (this will increment)
5.4 Speak Some Test Content
Say things like:
- "We decided to use PostgreSQL for the database"
- "Alex will complete the migration by Friday"
- "The API timeout is blocking us from deploying"
- "Should we move the deadline? I'm not sure."
The extension will capture this and transcribe it using Chrome's Web Speech API.
Step 6: Check Backend is Receiving Data
6.1 Watch FastAPI Logs
In Terminal 1 (where run_api.py is running), you should see:
INFO: 127.0.0.1:xxxxx - "POST /api/meet/start HTTP/1.1" 200 OK
INFO: 127.0.0.1:xxxxx - "POST /api/meet/ingest HTTP/1.1" 200 OK
INFO:thirdeye.agents.meet_ingestor:Processing meet chunk 0 for meeting abc-defg-hij (245 chars)
INFO:thirdeye.agents.meet_ingestor:Stored 5 signals for meeting abc-defg-hij chunk 0
6.2 Check API Endpoint
While recording or after:
curl http://localhost:8000/api/meet/meetings
Expected response:
{
"meetings": [
{
"meeting_id": "abc-defg-hij",
"signal_count": 8,
"types": {
"meet_chunk_raw": 2,
"meet_decision": 2,
"meet_action_item": 2,
"meet_blocker": 1,
"meet_started": 1
}
}
]
}
6.3 Run Diagnostic Script
python scripts/debug_meet.py
This shows all meet signals in ChromaDB and which meetings have been recorded.
Step 7: Stop Recording & Generate Summary
- Click the extension icon
- Click ■ Stop Recording
- This sends the final chunk with
is_final=True, which triggers full meeting summary generation
Watch the backend logs - you should see:
INFO:thirdeye.agents.meet_ingestor:Processing meet chunk N for meeting abc-defg-hij (final)
Step 8: Query the Meeting in Telegram
Now go to your Telegram bot chat:
8.1 Get Meeting Summary
/meetsum
or with specific meeting ID:
/meetsum abc-defg-hij
Expected response:
📋 Meeting Summary
ID: abc-defg-hij
Overview: Sprint planning meeting to finalize database choice and assign action items.
Key Decisions:
• PostgreSQL selected for primary database
• ...
Action Items:
• Alex: Complete migration by Friday
• ...
Blockers:
• API timeout blocking deployment
• ...
8.2 Ask Questions About the Meeting
/meetask abc-defg-hij What did we decide about the database?
Expected response:
🎙️ Meet Q&A — abc-defg-hij
Q: What did we decide about the database?
A: The team decided to use PostgreSQL for the primary database...
8.3 Cross-Reference with Chat History
First, make sure you have some Telegram chat messages in a monitored group. Then:
/meetmatch abc-defg-hij
Expected response:
🔗 Meet ↔ Chat Cross-Reference
Meeting: abc-defg-hij
⚡ Contradictions (1) — ACTION NEEDED
🔴 Meeting decided: We will use PostgreSQL for the database
BUT [your_dev_group] says: We should use MySQL, it's simpler
Impact: Database choice inconsistency may cause confusion
✅ Confirmations (1)
🟡 Meeting: API timeout blocking deployment
Matches [your_dev_group]: API timeout still happening
🔦 Blind Spots (1) — Teams may not know
🟠 OAuth refactor marked as high risk in meeting discussion
→ Consider notifying product team about deployment risks
Step 9: Debugging Common Issues
Issue 1: Extension Shows "Not on Google Meet"
Cause: You're not on a meet.google.com URL
Fix: Navigate to https://meet.google.com and join/start a meeting
Issue 2: Extension Recording But No Chunks Sent
Symptoms:
- Popup shows "Recording..." with red dot
- But "chunks sent" stays at 0
Debugging:
- Open Chrome DevTools (F12) on the Meet page
- Go to Console tab
- Look for
[ThirdEye]messages - You should see:
[ThirdEye] Content script loadedand[ThirdEye] Speech recognition started
Common causes:
- Microphone permission denied - check Chrome settings
- Backend URL incorrect in extension settings - verify it's
http://localhost:8000 - Backend not running - check Terminal 1
Issue 3: Backend Returning 403 Forbidden
Cause: Secret mismatch
Fix:
- Check your
.envfile:MEET_INGEST_SECRET=thirdeye_meet_secret_change_me - Check extension settings (click icon → scroll down) - secret must match exactly
- Save settings and try recording again
Issue 4: Telegram Commands Say "No meetings found"
Debugging steps:
- Run the diagnostic script:
python scripts/debug_meet.py
- Check if signals exist but in wrong group:
from backend.db.chroma import get_group_ids, get_all_signals
for group in get_group_ids():
signals = get_all_signals(group)
meet_sigs = [s for s in signals if s.get("metadata", {}).get("lens") == "meet"]
if meet_sigs:
print(f"{group}: {len(meet_sigs)} meet signals")
- Check if meeting_id is stored in metadata:
from backend.db.chroma import get_all_signals
signals = get_all_signals("meet_sessions")
for s in signals[:5]:
meta = s.get("metadata", {})
print(f"Type: {meta.get('type')}, MeetingID: {meta.get('meeting_id')}")
Issue 5: /meetmatch Returns No Connections
Cause: No cross-reference groups configured or no signals in those groups
Fix:
- Check
.env:MEET_CROSS_REF_GROUPS=your_telegram_group_id - Make sure you have actual Telegram chat signals in those groups
- Send some test messages in your Telegram group and wait 30s for processing
- Verify with
/digestin Telegram that signals exist
Step 10: Full Integration Test Scenario
Here's a complete test scenario to verify everything works:
Day 1: Seed Telegram Chat History
In your Telegram group, send these messages:
Alex: I think we should use MySQL for the new database
Sam: The checkout endpoint is timing out again
Priya: Let's just push OAuth changes directly to main
Wait 60 seconds for the bot to process these into signals.
Day 2: Record a Google Meet
- Start recording with extension
- During meeting, say (or have participants say):
- "We've decided - PostgreSQL is the database we're using"
- "The checkout timeout is blocking the entire deploy"
- "OAuth refactor is risky, we need a feature branch first"
- Stop recording after 2-3 minutes
Day 3: Query and Cross-Reference
In Telegram:
/meetsum
Should show summary with decisions, actions, blockers.
/meetask abc-defg-hij What database did we choose?
Should answer: PostgreSQL
/meetmatch
Should show:
- Contradiction: PostgreSQL (meet) vs MySQL (chat)
- Confirmation: Checkout timeout mentioned in both
- Contradiction: Feature branch (meet) vs direct push (chat)
API Endpoints Reference
For debugging, you can also hit the API directly:
List All Meetings
curl http://localhost:8000/api/meet/meetings
Get Signals for Specific Meeting
curl http://localhost:8000/api/meet/meetings/abc-defg-hij/signals
Manual Ingest Test (without extension)
curl -X POST http://localhost:8000/api/meet/ingest \
-H "Content-Type: application/json" \
-H "X-ThirdEye-Secret: thirdeye_meet_secret_change_me" \
-d '{
"meeting_id": "manual-test",
"group_id": "meet_sessions",
"chunk_index": 0,
"text": "We decided to use PostgreSQL. Alex will set up the schema by Friday.",
"speaker": "Test User",
"timestamp": "2026-03-21T10:00:00Z",
"is_final": false
}'
Then check:
curl http://localhost:8000/api/meet/meetings
You should see manual-test in the list.
Troubleshooting Checklist
Before asking for help, verify:
- Both services running (API on :8000, bot polling Telegram)
- Extension loaded in Chrome (check
chrome://extensions/) - Extension settings saved with correct backend URL and secret
- You're on
meet.google.com(not hangouts) - Microphone permission granted in Chrome
- Extension popup shows "Recording..." with red pulsing dot
- Backend logs show "Processing meet chunk..." messages
http://localhost:8000/api/meet/meetingsreturns your meeting- Telegram bot responds to
/startcommand .envhasMEET_INGEST_SECRETthat matches extension
Quick Smoke Test (No Meeting Required)
To test the backend without recording a real meeting:
# Terminal 1
python run_api.py
# Terminal 2 (new window)
python scripts/test_m14.py
This simulates the extension and verifies:
- API endpoints work
- Secret validation works
- Signals are stored correctly
- Meetings are queryable
If this passes, your backend is working. If Chrome extension still doesn't work, the issue is in the browser/extension setup.
Expected Timeline
- Chunk sent every: 30 seconds while recording
- Signal extraction: 2-5 seconds after chunk received
- Meeting summary: Generated when you stop recording (takes 5-10 seconds)
- Telegram query: Instant (ChromaDB is fast)
- Cross-reference: 5-15 seconds (LLM analysis)
Success Indicators
You'll know it's working when:
- ✅ Extension popup shows incrementing "chunks sent" counter
- ✅ Backend logs show "Stored N signals for meeting..."
- ✅
/api/meet/meetingsreturns your meeting ID - ✅
/meetsumin Telegram shows your meeting summary - ✅
/meetmatchfinds connections to your chat history
Document Upload Best Practices
When uploading documents to Telegram:
- The bot will respond immediately with "📄 Processing..."
- Processing happens in the background (won't block other commands)
- You'll get a follow-up message when processing completes
- Large files (PDFs, DOCX) may take 30-60 seconds
- Maximum file size: 10 MB
If document processing fails, check:
- File format is supported (.pdf, .docx, .txt, .md, .csv, .json, .log)
- File is under 10 MB
- Backend API keys are configured (GROQ, CEREBRAS, etc.)
Contact & Support
If you're stuck:
- Run
python scripts/debug_meet.pyand share output - Check backend logs (Terminal 1) for errors
- Check browser console (F12 on Meet page) for
[ThirdEye]errors - Share the output of
curl http://localhost:8000/api/meet/meetings