Building a Real-Time Zoom Chat Assistant for Live Q&A and Polls

Hi everyone,

I’m looking to either build or adopt an assistant (possibly with MindStudio) that can support me while I lecture on Zoom or Google Meet. I’d love your input or collaboration if something like this already exists or is feasible to create with MindStudio’s capabilities.

Here’s what I’d like the assistant to do:


:brain: 1. Smart Question Aggregation and Answer Suggestions

While I lecture, the assistant will monitor the meeting chat to:

  • Identify all audience questions
  • Group similar questions by topic
  • Generate answer suggestions

At the end of the session, I’d be able to say something like:
“You’ve asked 37 questions — most of them cluster into four main themes. Here’s a quick summary and my answer to each group.”

This would dramatically improve how I respond to large-group questions without having to scroll back through an overwhelming chat history.


:bar_chart: 2. Real-Time Polling via Chat

When I type <poll start> in the chat, the assistant will:

  • Start collecting all subsequent responses
  • Analyze them in real-time
    Then, when I write <poll end>, it will:
  • Provide me with a summary like:
    “100 participants responded: 60 use ChatGPT (20 also use Claude), 20 use Claude only, 15 don’t use any GPT tools, 35 did not respond.”
  • Automatically generate a slide visualizing the results, ready to share immediately with the group.

I’m curious:

  • Has anyone built anything like this in MindStudio?
  • Is this doable within its current capabilities?
  • Would anyone be interested in collaborating on building it?

Thanks in advance!

1 Like

For #1, please find out how to access Zoom meeting chats in real time on their forum https://devforum.zoom.us/. If you have this data in near-real time, MindStudio can handle aggregation and summary very easily.

For #2, you need to understand the Zoom API and how to start an action / make a call to MindStudio.

2 Likes

Thank you for your comment
As you suggested I went to the zoom devforum and found the following

{
“schema”: {
“type”: “object”,
“required”: [
“event”,
“event_ts”,
“payload”
],
“properties”: {
“event”: {
“type”: “string”,
“description”: “The event’s name.”
},
“event_ts”: {
“type”: “integer”,
“format”: “int64”,
“description”: “A timestamp, in milliseconds since epoch, at which the event occurred.”
},
“payload”: {
“type”: “object”,
“required”: [
“account_id”,
“operator”,
“object”,
“operator_id”
],
“properties”: {
“account_id”: {
“type”: “string”,
“description”: “The account ID of the user who sent the message.”
},
“operator”: {
“type”: “string”,
“description”: “The email address of the user who sent the message.”,
“format”: “email”
},
“object”: {
“type”: “object”,
“description”: “Message object”,
“required”: [
“id”,
“type”,
“session_id”,
“contact_email”,
“contact_id”,
“channel_id”,
“channel_name”,
“message”,
“timestamp”,
“date_time”
],
“properties”: {
“id”: {
“description”: “The message’s unique ID.”,
“type”: “string”
},
“type”: {
“type”: “string”,
“description”: “Whether the message was sent to a chat channel or an individual contact: \n* to_contact — The message was sent to a contact.\n* to_channel — The message was sent to a chat channel.”,
“enum”: [
“to_contact”,
“to_channel”
]
},
“date_time”: {
“type”: “string”,
“description”: “The date and time at which the message was sent, in yyyy-MM-dd’T’HH:mm:ss’Z’ format.”,
“format”: “date-time”
},
“timestamp”: {
“type”: “integer”,
“description”: “The timestamp for when the message was sent.”,
“format”: “int64”
},
“session_id”: {
“type”: “string”,
“description”: “The chat session’s unique ID.”
},
“contact_email”: {
“type”: “string”,
“description”: “The email address of the contact to whom the message was sent.”
},
“contact_id”: {
“type”: “string”,
“description”: “The message contact’s user ID.”
},
“channel_id”: {
“type”: “string”,
“description”: “The chat channel’s ID.”
},
“channel_name”: {
“type”: “string”,
“description”: “The chat channel’s name.”
},
“message”: {
“type”: “string”,
“description”: “The sent message’s content.”
}
},
“additionalProperties”: false
},
“operator_id”: {
“type”: “string”,
“description”: “The user ID of the user who sent the message.”
}
},
“additionalProperties”: false
}
},
“additionalProperties”: false
},
“examples”: {
“json-example”: {
“summary”: “JSON example”,
“value”: “{\n\t"event": "chat_message.sent",\n\t"event_ts": 1626230691572,\n\t"payload": {\n\t\t"account_id": "AAAAAABBBB",\n\t\t"operator": "user@example.com",\n\t\t"operator_id": "z8yCxjabcdEFGHfp8uQ",\n\t\t"object": {\n\t\t\t"id": "6dfgdfgdg444447b0egga",\n\t\t\t"type": "to_channel",\n\t\t\t"date_time": "2020-02-10T21:39:50Z",\n\t\t\t"timestamp": 1581370790388,\n\t\t\t"session_id": "abcdefghijklmnop12345",\n\t\t\t"contact_email": "user2@example.com",\n\t\t\t"channel_id": "qrstuvwxyz67890",\n\t\t\t"channel_name": "Team Chat",\n\t\t\t"message": "Hello world."\n\t\t}\n\t}\n}”
}
},
“example”: “{\n\t"event": "chat_message.sent",\n\t"event_ts": 1626230691572,\n\t"payload": {\n\t\t"account_id": "AAAAAABBBB",\n\t\t"operator": "user@example.com",\n\t\t"operator_id": "z8yCxjabcdEFGHfp8uQ",\n\t\t"object": {\n\t\t\t"id": "6dfgdfgdg444447b0egga",\n\t\t\t"type": "to_channel",\n\t\t\t"date_time": "2020-02-10T21:39:50Z",\n\t\t\t"timestamp": 1581370790388,\n\t\t\t"session_id": "abcdefghijklmnop12345",\n\t\t\t"contact_email": "user2@example.com",\n\t\t\t"channel_id": "qrstuvwxyz67890",\n\t\t\t"channel_name": "Team Chat",\n\t\t\t"message": "Hello world."\n\t\t}\n\t}\n}”

how does this further my quest?