Skip to Content

Jitterbit Meeting Notes Agent

Overview

The Jitterbit Meeting Notes Agent (Meeting Notes Agent) is an AI agent available through Jitterbit Marketplace that automates the processing of meeting notes generated by Gemini. The agent polls a dedicated Gmail inbox, retrieves linked Google Docs, and integrates with Salesforce and Slack to keep meeting attendees informed and accountable.

On a daily schedule, the agent retrieves new meeting note emails from Gmail and extracts the Google Doc content linked in each email. The extracted content is analyzed by an LLM, which returns a structured meeting summary, next steps, and per-attendee action items as a JSON response. For each attendee, the agent queries Salesforce to retrieve the contact record, creates a Task and an Event linked to that record, and sends a personalized Slack direct message containing the meeting summary and individual action items. A Jitterbit Cloud Datastore handles OAuth token storage and deduplication to prevent reprocessing. A secondary workflow exposes on-demand task retrieval via an API trigger.

The agent performs the following tasks:

  • Polls a Gmail inbox on a 24-hour schedule for Gemini meeting note emails.
  • Retrieves and extracts text content from linked Google Docs.
  • Deduplicates processed meeting notes using Cloud Datastore to avoid reprocessing.
  • Generates structured meeting summaries, next steps, and per-attendee action items using an LLM.
  • Creates Salesforce Tasks and Events for each meeting attendee.
  • Sends personalized Slack direct messages with meeting summaries and individual action items.
  • Responds to on-demand meeting task queries via an API trigger.

The agent is preconfigured to work with these services. You can adapt it to other systems by modifying the endpoint configurations and workflows.

This document explains how to set up and operate this AI agent. It covers architecture, prerequisites, and steps to install, configure, and operate the AI agent.

AI agent architecture

The Meeting Notes Agent runs as a scheduled, unattended workflow that connects Gmail, Google Docs, an LLM, Salesforce, and Slack through a Studio project. A Cloud Datastore key storage stores Gmail OAuth tokens and tracks which meeting notes have already been processed.

A typical interaction proceeds as follows:

  1. An operation schedule triggers the polling workflow every 24 hours.
  2. The agent queries a Cloud Datastore key storage for the stored Gmail OAuth refresh token and exchanges it for a fresh access token.
  3. The agent searches the Gmail inbox for emails from gemini-notes@google.com within the previous 24-hour window and retrieves the list of matching message IDs.
  4. For each email, the agent fetches the full message content and extracts the embedded Google Doc URL, then parses the document ID from the URL.
  5. The agent queries the Cloud Datastore key storage to check whether the document ID has already been processed. If it has, the document is skipped.
  6. For new documents, the agent writes the document ID as processed to the Cloud Datastore key storage and fetches the plain text content from the Google Docs export API.
  7. The agent sends the document content to an LLM, which returns a structured JSON object containing the meeting summary, next steps, and per-attendee action items.
  8. For each action item owner identified in the LLM response, the agent resolves the attendee's email from the extracted attendees list and queries Salesforce to retrieve the attendee's Contact ID.
  9. The agent creates a Salesforce Task record for each action item and a Salesforce Event record representing the meeting, both linked to the attendee's contact.
  10. The agent sends a personalized Slack direct message to each attendee containing the meeting summary and their individual action items.

Workflow diagram

The following diagram shows the main request-handling workflow for the Meeting Notes Agent.

--- config: flowchart: padding: 20 nodeSpacing: 80 --- flowchart LR classDef default fill:white, stroke:black, stroke-width:3px, rx:15px, ry:15px SCHED@{ shape: delay, label: "Operation schedule
(daily)" } JSP@{ shape: hex, label: "
Meeting Notes
Agent" } CDS@{ shape: hex, label: "fas:fa-database
Cloud Datastore" } GMAIL[fas:fa-envelope
Gmail] GDOCS[Google Docs] LLM[fas:fa-brain
LLM] SF[fab:fa-salesforce
Salesforce] SLK[fab:fa-slack
Slack] SCHED -->|1. Trigger| JSP JSP <-->|2. OAuth tokens| CDS JSP <-->|3. Meeting note emails| GMAIL JSP <-->|4. Document content| GDOCS JSP <-->|5. Meeting summary and action items| LLM JSP <-->|6. Contact lookup, Task and Event creation| SF JSP -->|7. Personalized DMs| SLK

Prerequisites

You need the following components to use this AI agent.

Harmony components

You must have a Jitterbit Harmony license with access to the following components:

Supported endpoints

The AI agent connects to the following endpoints. You can accommodate other systems by modifying the project's endpoint configurations and workflows.

Large language model (LLM)

The agent uses OpenAI GPT-4o to analyze meeting note content and produce a structured meeting summary, next steps, and per-attendee action items. You must have an OpenAI account with access to the GPT-4o model and a valid API key.

Gmail

The agent polls a dedicated Gmail inbox for Gemini meeting note emails from gemini-notes@google.com using the Gmail REST API. You must have a Google Cloud project with the Gmail API enabled and OAuth 2.0 credentials (client ID and client secret) configured for the inbox.

Google Docs

The agent retrieves document content from Google Docs using the Google Drive API files.export method. Access uses the same Google OAuth 2.0 credentials configured for Gmail, provided the associated Google account has read access to the meeting note documents.

Salesforce

The agent queries Salesforce contact records and creates Task and Event records. You must have a Salesforce account with a login username, password, and security token.

Slack

The agent sends direct messages to meeting attendees using the Slack Web API. You must have a Slack app with a bot token configured with the following OAuth scopes: users:read, users:read.email, conversations:open, and chat:write.

Cloud Datastore

The agent uses Jitterbit Cloud Datastore to store Gmail OAuth refresh tokens and to track processed meeting document IDs.

Installation, configuration, and operation

Follow these steps to install, configure, and operate this AI agent:

  1. Download and install the project
  2. Prepare Cloud Datastore
  3. Configure project variables
  4. Test connections
  5. Deploy the project
  6. Authorize Gmail access
  7. Review project workflows
  8. Trigger the project workflows

For troubleshooting guidance, see Troubleshooting.

Download and install the project

Follow these steps to install the Studio project for the AI agent:

  1. Log in to the Harmony portal at https://login.jitterbit.com and open Marketplace.
  2. Locate the AI agent named Meeting Notes Agent. To locate the agent, use the search bar or, in the Filters pane under Type, select AI Agent to limit the display to AI agents.
  3. Click the agent's Documentation link to open its documentation in a separate tab. Keep the tab open to refer back to after starting the project.
  4. Click Start Project to open a configuration dialog.

    Note

    If you have not yet purchased the AI agent, Get this agent is displayed instead. Click it to open an informational dialog, then click Submit to have a representative contact you about purchasing the AI agent.

  5. In the Create a New Project dialog, select an environment where the Studio project will be created, then click Create Project.

  6. After the progress dialog indicates the project is created, use the dialog link Go to Studio or open the project directly from the Studio Projects page.

Prepare Cloud Datastore

The agent uses two Cloud Datastore key storages to store Gmail OAuth refresh tokens and to track processed meeting document IDs:

Key storage Purpose
AIA_Authorized_Users Stores the Gmail OAuth refresh token and the associated Gmail address used for authentication in scheduled runs.
AIA_Processed_Meetings Stores processed document IDs and prevents the agent from reprocessing meeting notes it has already handled.

Create each key storage with the following custom fields:

AIA_Authorized_Users

Field Value stored
Key Gmail OAuth refresh token
Value Gmail address associated with the token

AIA_Processed_Meetings

Field Value stored
Key Google Doc ID
Value processed

After creating each key storage, configure the associated Cloud Datastore activities in Studio:

  1. In the Studio project's Components tab under Endpoints, locate each Cloud Datastore activity associated with that storage.
  2. Double-click to open the activity, assign the storage name, and save.

Configure project variables

In the Studio project installed from Marketplace, set values for the following project variables.

To configure project variables, use the project's actions menu and select Project Variables to open the configuration drawer.

Note

Enter masked variables directly into the Mask Value field to prevent values from appearing in operation logs.

Google OAuth

Variable name Description
client_id Google OAuth 2.0 client ID for Gmail and Google Docs API access.
client_secret Google OAuth 2.0 client secret.
refresh_token Gmail OAuth refresh token for the dedicated inbox. Leave blank before the first run. This value is populated automatically after completing the Gmail authorization step.

OpenAI

Variable name Description
open_ai_token OpenAI API key for GPT-4o access.

Salesforce

Variable name Description
Salesforce_user Salesforce login username.
salesforce_password Salesforce login password.
salesforce_token Salesforce security token appended to the password for API authentication.

Slack

Variable name Description
slack_access_token Slack bot token with users:read, users:read.email, conversations:open, and chat:write scopes.
slack_id Slack user ID of the bot or target user. Populated at runtime via the Slack users.lookupByEmail API.

Cloud Datastore

Variable name Description
datastore_token Bearer token for authenticating requests to the AIA_Authorized_Users and AIA_Processed_Meetings Cloud Datastore key storages.

Test connections

Test the endpoint configurations to verify connectivity using the defined project variable values.

To test connections, go to the design component palette's Project endpoints and connectors tab, hover over each endpoint, and click Test.

Deploy the project

Deploy the Studio project.

To deploy the project, use the project's actions menu and select Deploy.

Create the Jitterbit custom API

Create a custom API with the following API services:

After you configure each API service, publish the custom API.

Tip

You can also add a security profile for authentication.

Connect Gmail

Configure this API service with the following parameters:

Setting Value
Service name Connect Gmail
Operation Handle Connect Gmail
Path /connectgmail
Method POST
Response Type System Variable

OAuth Callback

Configure this API service with the following parameters:

Setting Value
Service name OAuth Callback
Operation OAuth Callback
Path /oauth/callback
Method GET
Response Type System Variable

Run Meeting Notes

Configure this API service with the following parameters:

Setting Value
Service name Run Meeting Notes
Operation Copilot trigger
Path /runmeetingnotes
Method POST
Response Type System Variable

Connect Gmail Copilot

Configure this API service with the following parameters:

Setting Value
Service name Connect Gmail Copilot
Operation Handle Connect Gmail
Path /connectgmail
Method GET
Response Type System Variable

Authorize Gmail access

Before the scheduled polling workflow can run, an admin must complete a one-time OAuth 2.0 authorization for the dedicated Gmail inbox. This step stores a refresh token in the AIA_Authorized_Users Cloud Datastore key storage for use in subsequent scheduled runs.

To authorize Gmail access:

  1. After deploying the project, trigger the Handle Connect Gmail operation in the Gmail OAuth Authentication workflow by navigating to the /connect-gmail API endpoint published by Jitterbit API Manager.
  2. Complete the Google consent screen for the dedicated Gmail account. Google redirects back to the Jitterbit API callback endpoint with an authorization code.
  3. The agent exchanges the authorization code for access and refresh tokens, retrieves the associated Gmail address, and stores the refresh token in the AIA_Authorized_Users Cloud Datastore key storage.
  4. Confirm that the refresh_token project variable is populated or that a record appears in the AIA_Authorized_Users collection before the scheduled polling workflow runs for the first time.

Review project workflows

The Studio project contains six workflows that implement the Meeting Notes Agent functionality, organized into two functional groups.

Authentication and polling

Workflow Description
Gmail OAuth Authentication Handles the one-time OAuth 2.0 authorization for the dedicated Gmail inbox and stores the refresh token in Cloud Datastore.
Gmail Polling and Message Retrieval Runs on a 24-hour schedule to authenticate with Gmail and retrieve new meeting note emails.
Gmail OAuth Authentication

This workflow handles the one-time OAuth 2.0 authorization flow for the dedicated Gmail inbox. An admin navigates to the /connect-gmail API endpoint, which builds the Google authorization URL and redirects to the Google consent screen. After consent, Google returns an authorization code to the Jitterbit API callback endpoint. The workflow exchanges the code for access and refresh tokens, retrieves the Gmail address associated with the token, and stores the refresh token in the AIA_Authorized_Users Cloud Datastore key storage for reuse in all subsequent scheduled runs.

Gmail Polling and Message Retrieval

This workflow runs on a 24-hour operation schedule. It queries the AIA_Authorized_Users Cloud Datastore key storage for the stored refresh token, exchanges it for a fresh Gmail access token, and searches the Gmail inbox for emails from gemini-notes@google.com within the previous 24-hour window. For each message found, the workflow retrieves the full message payload, Base64-decodes the body, extracts the embedded Google Doc URL, and parses the document ID from the URL. Each document ID is then routed to the content extraction and deduplication workflow.

Meeting note processing

Workflow Description
Google Docs Content Extraction and Deduplication Checks whether a meeting note has already been processed and fetches document content if new.
OpenAI GPT-4o Processing Sends meeting note content to the LLM and parses the structured summary and action item response.
Salesforce Task and Event Creation Creates Salesforce Task and Event records for each meeting attendee and triggers Slack notifications.
Copilot On-Demand Query Exposes on-demand meeting task retrieval via a Jitterbit API Manager API trigger.
Google Docs Content Extraction and Deduplication

This workflow queries the AIA_Processed_Meetings Cloud Datastore key storage to determine whether the current document ID has already been handled. If a matching record exists, the workflow skips the document. For new documents, the workflow writes the document ID to AIA_Processed_Meetings with the value processed, then calls the Google Docs export API to retrieve the document content as plain text. The extracted text is parsed to identify the attendees list and to isolate the content between the Summary and Suggested next steps headings for downstream LLM processing.

OpenAI GPT-4o Processing

This workflow constructs a prompt from the extracted meeting note content and sends it to the OpenAI API. The prompt instructs the LLM to return a JSON object with the following keys: summary, next_steps, and action_items (each with description, owner, due_date, and priority fields). The workflow parses the chat completion response, removes any Markdown code fences from the content block, and iterates over the action items to prepare per-attendee payloads for the Salesforce and Slack workflows.

Salesforce Task and Event Creation

This workflow processes each action item owner identified in the LLM response. For each owner, the workflow resolves the attendee's email from the extracted attendees list, then executes a SOQL query to retrieve the Salesforce Contact record by email address. If the query returns exactly one matching contact, the workflow creates a Task record with the action item description, a priority mapped from the LLM response (High, Medium, or Low), a due date sourced from the LLM response (defaulting to seven days from the current date if none is provided), and a status of Not Started. It also creates an Event record representing the meeting, with a duration of 30 minutes and an activity date and time set to when the operation runs, linked to the same contact. If the query returns zero or more than one matching contact, the action item is skipped. After the Salesforce records are created, the workflow triggers a personalized Slack direct message to the attendee containing the meeting summary and their individual action items.

Copilot On-Demand Query

This workflow exposes a Jitterbit API Manager custom API endpoint that accepts a user_email parameter in the request body and re-triggers the main meeting note processing pipeline for the specified user.

Trigger the project workflows

After deploying the project, the primary meeting note processing workflow runs automatically on a 24-hour operation schedule.

Note

The operation schedule is not included in the project export and must be configured manually in Studio after deployment.

The Gmail OAuth Authentication workflow must be triggered manually one time by an admin navigating to the /connect-gmail custom API endpoint before the scheduled polling workflow can run successfully.

The Copilot On-Demand Query workflow is triggered by API calls to the /runmeetingnotes custom API endpoint.

Troubleshooting

If you encounter issues, review the following logs for detailed troubleshooting information:

For additional assistance, contact Jitterbit support.