Meetings
Record meetings with a notetaker bot, get AI summaries and action items, and brief yourself on what's coming up with Theo Insights.
Join meetings from the dashboard
The Meetings widget on your home dashboard now shows a real Join button for every upcoming calendar event with a meeting URL. The button opens the Zoom / Meet / Teams / Webex / Slack Huddle / GoTo link in a new tab so you can jump in with one click.
If you don't see a Join button, the calendar event doesn't have a meeting URL attached — the card will still link to /meetings for context.
Today, Tomorrow, or pick a day
The widget now defaults to Today and automatically hides events that have already ended. Tap Tomorrow to peek at the next day, or Pick… to open a 14-day mini calendar and jump to any specific date. Your selection persists until you change it.
Each card includes attendee chips (avatars + names) and a “Starts in Nm” countdown for events less than 30 minutes away.
Theo Insights for the day
Click Insights in the widget header (or the Insights pill on the Meetings page) to ask Theo for a per-meeting briefing for the selected day. For each event you get:
- What the meeting is about, in 1–2 sentences.
- Suggested prep bullets (links, decks, questions).
- Related past meetings & notes pulled via the MCIR memory protocol — attendee overlap, title keywords, and prior summaries.
- Attendee list with avatar initials and the organizer flagged.
- The Join button right inside the modal.
Briefings are billed against your AI credit allotment. Each request is cached per (user, day, event-set) for 10 minutes so repeat clicks are essentially free.
Stuck or failed meetings
When a meeting has been processing for more than 5 minutes (or fails outright), a Needs attention banner appears at the top of the Meetings page.
Click Recover all— Theo re-polls the meeting bot for its latest status and re-dispatches the durable processing pipeline for any meeting that's ready. Manual recovery never runs the AI inline anymore (that was the main cause of meetings getting pinned forever); it always hands off to the durable pipeline.
Behind the scenes, a cron sweep also runs every 2 minutes and treats “processing” meetings as stuck after 90 seconds. Long-running recording / bot-joining states still get a 3-minute grace window so we don't hammer the bot provider during real meetings.