Project Info
This project did not submit a demo video on Devpost.
For decades, we've seen how meetings are a cornerstone of nearly every industry. Coordination among colleagues is how efforts scale from a single CEO to tens of thousands of employees. Yet despite their importance, most meetings remain passive experiences: time-consuming, stressful, and frequently redundant. Critical ideas get buried across sprawling agendas, context from past discussions is forgotten, and participants struggle to stay aligned as conversations diverge and change context. We saw an opportunity to change that. We wanted to build meeting software that goes beyond simply connecting people. Something that actively understands the flow of conversation, recalls what matters from previous sessions, and helps every voice contribute meaningfully, whether it's a small study group, a company-wide webinar, or a fast-paced team standup. Zoom has become a critical component of our modern internet and business infrastructure, and having a native solution that addresses these problems will have a great impact on society. Our solution is a Zoom-integrated meeting copilot that transforms live conversations into actionable intelligence. It captures and transcribes meetings in real time, summarizes topics as they emerge, and lets participants query anything that's been said, all from within the Zoom interface. Beyond the current meeting, it connects to the collective knowledge of your organization: when a new topic surfaces, it consults AI agents representing team members outside the room and surfaces only the most surprising or actionable perspectives. The result is a meeting experience where context is never lost, insights arrive in real time, and every discussion is informed by the full breadth of your organization's thinking. Constant iteration! Our tech stack combines real-time streaming, semantic search, and AI inference. Zoom App SDK + Immersive View: The app runs natively inside the Zoom client as a sidebar and immersive overlay. Hosted and served from Render. Zoom App SDK + Immersive View: The app runs natively inside the Zoom client as a sidebar and immersive overlay. Hosted and served from Render. Zoom RTMS SDK: Live meeting audio is transcribed in real time and sent via Zoom's WebSocket API, producing a continuous stream of speaker-attributed transcript segments. Zoom RTMS SDK: Live meeting audio is transcribed in real time and sent via Zoom's WebSocket API, producing a continuous stream of speaker-attributed transcript segments. Elasticsearch (on Render): Powers transcript storage, indexing, and retrieval using Jina AI embeddings for semantic vector search. The Kibana API is used for agent interactions and Elastic Workflows for agentic pipelines. Elasticsearch (on Render): Powers transcript storage, indexing, and retrieval using Jina AI embeddings for semantic vector search. The Kibana API is used for agent interactions and Elastic Workflows for agentic pipelines. AI Inference (Claude): Claude handles real-time summarization, topic detection, and natural language querying via Elasticsearch's OpenInference API. AI Inference (Claude): Claude handles real-time summarization, topic detection, and natural language querying via Elasticsearch's OpenInference API. Render: Manages all backend services, AI inference, and storage infrastructure orchestration, and serves rendered interfaces to the Zoom client. It is the operational backbone of our system. Render: Manages all backend services, AI inference, and storage infrastructure orchestration, and serves rendered interfaces to the Zoom client. It is the operational backbone of our system. Learning how to develop for new platforms (to us) like Zoom Apps, RTMS, and ElasticSearch. Learning how to develop for new platforms (to us) like Zoom Apps, RTMS, and ElasticSearch. Acquiring the right permissions necessary for development. Acquiring the right permissions necessary for development. Connecting our front-end components (Zoom App) with the back end (RTMS, Elastic Search, Render). Connecting our front-end components (Zoom App) with the back end (RTMS, Elastic Search, Render). Making sure the goals we wanted to achieve could not already be easily done by existing commercial tools. We looked at tools like Zoom's own meeting AI summarizer, Otter AI, and Granola AI. A key differentiating factor we wanted to bring was our ability to use Zoom's real-time media streams to bring participants separated contexts and summarizations to users. Making sure the goals we wanted to achieve could not already be easily done by existing commercial tools. We looked at tools like Zoom's own meeting AI summarizer, Otter AI, and Granola AI. A key differentiating factor we wanted to bring was our ability to use Zoom's real-time media streams to bring participants separated contexts and summarizations to users. Building out high-volume data pipelines via free subscriptions etc. (not without its challenges!) Building out high-volume data pipelines via free subscriptions etc. (not without its challenges!) Developing a low-latency Realtime Media Stream (RTMS) to inference pipeline. Extremely quick in providing topic summaries to meeting attendees. Developing a low-latency Realtime Media Stream (RTMS) to inference pipeline. Extremely quick in providing topic summaries to meeting attendees. Interactive immersive view and integration with the native client. Interactive immersive view and integration with the native client. Render is the host system for our entire application. Render is the host system for our entire application. Open-source implementation. Open-source implementation. How to build engaging applications for Zoom. How to build engaging applications for Zoom. Manage and feed data to power LLM agents, and how to use them to enable novel workflows. Manage and feed data to power LLM agents, and how to use them to enable novel workflows. Working together under pressure to deliver features that both we and Zoom were excited about. Working together under pressure to deliver features that both we and Zoom were excited about. We would love to have our technology stack shipped in Zoom's experience. We believe real-time in-meeting context summarization and agentic knowledge retrieval are key innovations in the space of online meeting infrastructure and should be widely adopted. We would love to have our technology stack shipped in Zoom's experience. We believe real-time in-meeting context summarization and agentic knowledge retrieval are key innovations in the space of online meeting infrastructure and should be widely adopted. Releasing a guide on best practices for Zoom's developer tools, especially Realtime Media Streams. Releasing a guide on best practices for Zoom's developer tools, especially Realtime Media Streams. Building agent information siloes (for organizations where agents might be limited in what they can share, depending on who asks). Building agent information siloes (for organizations where agents might be limited in what they can share, depending on who asks).
Zoom Apps JavaScript Sample
This Zoom App Sample uses Node.js + Express to build a simple Hello World Zoom App.
Prerequisites
- Node JS
- Ngrok
- Zoom Account
- Zoom App Credentials (Instructions below)
- Client ID
- Client Secret
- Redirect URI
Getting started
Open your terminal:
# Clone down this repository
git clone git@github.com:zoom/zoomapps-sample-js.git
# navigate into the cloned project directory
cd zoomapps-sample-js
# run NPM to install the app dependencies
npm install
# initialize your ngrok session
ngrok http 3000
Create your Zoom App
In your web browser, navigate to Zoom Developer Portal and register/log into your developer account.
Click the "Build App" button at the top and choose to "Zoom Apps" application.
- Name your app
- Choose whether to list your app on the marketplace or not
- Click "Create"
For more information, you can follow this guide check out this video series on how to create and configure these sample Zoom Apps.
Config: App Credentials
In your terminal where you launched ngrok, find the Forwarding value and copy/paste that into the "Home URL" and "
Redirect URL for OAuth" fields.
Home URL: https://xxxxx.ngrok.io
Redirect URL for OAuth: https://xxxxx.ngrok.io/auth
NOTE: ngrok URLs under ngrok's Free plan are ephemeral, meaning they will only live for up to a couple hours at most, and will change every time you reinitialize the application. This will require you to update these fields every time you restart your ngrok service.
OAuth allow list
https://example.ngrok.io
Domain allow list
appssdk.zoom.usngrok.io
Config: Information
The following information is required to activate your application:
- Basic Information
- App name
- Short description
- Long description (entering a short message here is fine for now)
- Developer Contact Information
- Name
- Email address
NOTE: if you intend to publish your application on the Zoom Apps Marketplace, more information will be required in this section before submitting.
Config: App Features
Under the Zoom App SDK section, click the + Add APIs button and enable the following options from their respective
sections:
APIs
- shareApp
Scopes
Ensure that the following scope is selected on the Scopes tab:
zoomapp:inmeeting
Config .env
When building for Development, open the .env file in your text editor and enter the following information from the App Credentials section you just
configured:
# Client ID for your Zoom App
ZM_CLIENT_ID=[app_client_id]
# Client Secret for your Zoom app
ZM_CLIENT_SECRET=[app_client_secret]
# Redirect URI set for your app in the Zoom Marketplace
ZM_REDIRECT_URL=https://[xxxx-xx-xx-xxx-x].ngrok.io/auth
Zoom for Government
If you are a Zoom for Government (ZfG) customer you can use the ZM_HOST variable to change
the base URL used for Zoom. This will allow you to adjust to the different Marketplace and API Base URLs used by ZfG
customers.
Marketplace URL: marketplace.zoomgov.com
API Base URL: api.zoomgov.com
Start the App
Development
Run the dev npm script to start in development mode using a Docker container.
npm run dev
The dev script will:
- Watch JS files and built to the dist/ folder
- Watch Server files and build to the dist/ folder
- Start the application
Production
When running your application in production no logs are sent to the console by default and the server is not restarted on file changes.
We use the NODE_ENV environment variable here to tell the application to start in prodcution mode.
# Mac/Linux
NODE_ENV=production npm start
# Windows
set NODE_ENV=production && npm start
Usage
To install the Zoom App, Navigate to the Home URL that you set in your browser and click the link to install.
After you authorize the app, Zoom will automatically open the app within the client.
Keeping secrets secret
This application makes use of your Zoom App Client ID and Client Secret as well as a custom secret for signing session cookies. During development, the application will read from the .env file. ;
In order to align with security best practices, this application does not read from the .env file in production mode.
This means you'll want to set environment variables on the hosting platform that you' re using instead of within the .env file. This might include using a secret manager or a CI/CD pipeline.
:warning: Never commit your .env file to version control: The file likely contains Zoom App Credentials and Session Secrets
Code Style
This project uses prettier and eslint to enforce style and protect against coding errors along with a pre-commit git hook(s) via husky to ensure files pass checks prior to commit.
Testing
At this time there are no e2e or unit tests.
Need help?
If you're looking for help, try Developer Support or our Developer Forum. Priority support is also available with Premier Developer Support plans.
Documentation
Make sure to review our documentation as a reference when building your Zoom Apps.
Analysis
View
Metric
- 34
- 19
- 18
- 2
- 1
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- ExpressIn code
- JavaScriptIn code
- TypeScriptIn code
- PythonClaimed
4 of 5 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeConfig · Commits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
1.1 MB
Source files
53
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Ishan-Sinha123/treehacks_26
74 files · 1.4 MB · @ 52e793c
Structure
API & routing
49 files · 66%Request entry points: routes, handlers and controllers.
Application logic
3 files · 4%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- CSS61%
- JavaScript21%
- YAML16%
- TypeScript1%
- Markdown1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 36- @babel/cli
- @babel/core
- @babel/plugin-transform-runtime
- @babel/preset-env
- @elastic/elasticsearch
- @rollup/plugin-babel
- @rollup/plugin-commonjs
- @rollup/plugin-node-resolve
- @rollup/plugin-url
- @zoom/appssdk
- axios
- compression
- cookie-parser
- cookie-session
- core-js
- debug
- express
- express-validator
- +18 more
server/rtmsManager/package.json
npm · 2- node-fetch
- ws
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.