Jitterbit QBR Deck Agent
Overview
Jitterbit provides the QBR Deck Agent to customers through Jitterbit Marketplace. This agent automates the creation of quarterly business review (QBR) presentation decks in Google Slides by gathering customer data from Salesforce, NetSuite, and product usage APIs, and processing that data with AI to produce structured summaries and insights. This agent uses the Retrieval-Augmented Generation (RAG) technique, which combines LLM reasoning with access to external tools and data sources.
The agent receives requests through Slack slash commands, queries Salesforce for account details, contacts, and support cases, retrieves project data from NetSuite, and pulls product usage metrics from regional APIs. An LLM processes the combined data and generates narrative summaries and insights. The agent then duplicates a Google Slides template in Google Drive, populates the slides with the generated content, and sends the completed deck link (or an error notification) back to the user in Slack.
The agent performs the following tasks:
- Receives QBR generation requests from users via Slack slash commands.
- Queries Salesforce for account information, region details, contacts, and support cases.
- Retrieves project data from NetSuite.
- Pulls product usage metrics from regional product usage APIs.
- Normalizes all gathered data into a canonical format for processing.
- Sends the combined data to an LLM to generate summaries and insights.
- Duplicates a QBR slide template in Google Drive for the target customer.
- Populates the slides with AI-generated content.
- Sends the completed deck link or an error notification back to the user in Slack.
This document explains how to set up and operate this AI agent. It covers architecture, prerequisites, guidance on prompting the agent, and steps to install, configure, and operate the AI agent.
AI agent architecture
This AI agent generates QBR decks by orchestrating data retrieval across Salesforce, NetSuite, and product usage APIs, then using an LLM to synthesize the data into a populated Google Slides presentation. A typical interaction follows these steps:
- A user sends a
/completeqbrslash command to the Slack bot, specifying a customer name or Salesforce account ID. - Slack calls the Jitterbit API endpoint, triggering the main request handler.
- The agent queries Salesforce for account information, region details, contacts, and support cases.
- The agent retrieves project data from NetSuite.
- The agent retrieves product usage metrics from the appropriate regional product usage API.
- The agent normalizes all gathered data into a canonical format.
- The agent sends the normalized data to the LLM, which generates summaries and insights for each slide section.
- The agent duplicates the Google Slides QBR template in Google Drive and populates each slide with the generated content.
- The agent sends the completed deck link to the user in Slack. If an error occurs (for example, the customer is not found or multiple matches are returned), the agent sends an error notification instead.
Workflow diagram
The following diagram shows the main request-handling workflow for the Jitterbit QBR Deck Agent.
Jitterbit
QBR Deck Agent" } SLK[fab:fa-slack
Slack] SF[fab:fa-salesforce
Salesforce] NS[NetSuite] PU[Product Usage API] LLM[fas:fa-brain
LLM] GD[fab:fa-google
Google Drive] GS[fab:fa-google
Google Slides] SLK -->|1. Slash command| JSP JSP <-->|2. Account data| SF JSP <-->|3. Project data| NS JSP <-->|4. Usage metrics| PU JSP <-->|5. Generate insights| LLM JSP <-->|6. Duplicate template| GD JSP <-->|7. Populate slides| GS JSP -->|8. Results notification| 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:
- Jitterbit Studio
- Jitterbit API Manager
- QBR Deck Agent purchased as a license add-on.
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 AI agent uses Azure OpenAI as the LLM provider. To use Azure OpenAI, you must have a Microsoft Azure subscription with permissions to create an Azure OpenAI resource with a deployed model.
Salesforce
The agent queries Salesforce for account data, region details, contacts, and support cases. You must have a Salesforce account with API access and credentials with permissions to read account, contact, and case records.
NetSuite
The agent queries NetSuite using SOAP-based integration to retrieve project data. You must have a NetSuite account with token-based authentication credentials that have permissions to read project records.
Product usage APIs
The agent retrieves product usage metrics from regional API endpoints covering North America (NOAM), Europe/Middle East/Africa (EMEA), and Asia-Pacific (APAC). You must have valid API keys for the applicable regions.
Slack
The agent uses Slack as the conversational interface and notification channel. You must have a Slack workspace where you can install a custom app and the ability to create and configure an app manifest.
Google Cloud
The agent uses the Google Drive API and Google Slides API to duplicate a template and populate the generated presentation. You must have a Google Cloud project with both APIs enabled and a service account with Editor access to the Shared Drive that contains the QBR template and output folders.
Agent prompts
The QBR Deck Agent receives all requests as slash commands sent to the Slack bot. This section describes the supported commands and provides example inputs.
Prompt guidelines
Follow these guidelines when sending commands to the agent:
- Specify a customer using the
customer=parameter followed by the customer's name or Salesforce account ID. - If the name matches more than one Salesforce account, the agent returns an error. Use the Salesforce account ID to target a specific record.
- Use
/completeqbrto generate a full QBR presentation deck. - Use
/singleslideqbrto generate a single slide. Use thecustomer=andslide=parameters to specify the customer and which slide to generate.
Example prompts
The following examples show the commands the agent supports. Replace <customer name> with the customer's name or Salesforce account ID.
Complete QBR deck
Send the following command to generate a full QBR presentation deck for a customer.
Prompts
/completeqbr customer=<customer name>/completeqbr customer=<Salesforce account ID>
Single slide QBR
Send the following command to generate a single slide for a customer. The slide= parameter accepts the following values: title_1, Summary_1, Usage_1, Cases_1, Entitlements_1, Projects_1, or team_1.
Prompts
/singleslideqbr customer=<customer name> slide=Summary_1/singleslideqbr customer=<customer name> slide=Usage_1/singleslideqbr customer=<Salesforce account ID> slide=Cases_1
Installation, configuration, and operation
Follow these steps to install, configure, and operate this AI agent:
- Download and install the project
- Set up Azure OpenAI
- Set up Google Cloud
- Prepare Google Drive
- Configure project variables
- Test connections
- Deploy the project
- Create a custom API
- Create and configure the Slack app
- Review project workflows
- 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:
-
Log in to the Harmony portal at https://login.jitterbit.com and open Marketplace.
-
Locate the AI agent named QBR Deck 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.
-
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.
-
Click Start Project to open a two-step configuration dialog.
Note
If you have not yet purchased the AI agent, Get 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.
Tip
The configuration dialog includes a warning not to import the template before applying endpoint customizations. That warning does not apply to this AI agent and can be ignored. Follow the recommended order of steps in this documentation instead.
-
In configuration step 1, Download Customizations, download the provided ZIP file containing the Google Drive folder structure and QBR slide template.
-
Click Next.
-
In configuration step 2, Create a New Project, select an environment where the Studio project will be created, then click Create Project.
-
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.
Set up Azure OpenAI
Create an Azure OpenAI resource and deploy a model to use as the LLM for the agent:
- Sign in to the Azure portal and create an Azure OpenAI resource in your subscription.
- In Azure AI Foundry, create a deployment and note the deployment name and model ID.
- Copy the API key and endpoint URL from the Keys and Endpoint section of the resource.
- Store the key, endpoint, and deployment details in the corresponding project variables listed under Azure OpenAI.
Set up Google Cloud
Create a Google Cloud service account to allow the agent to access Google Drive and Google Slides:
- Go to console.cloud.google.com, select or create a project, and enable the Google Drive API and Google Slides API under APIs & Services > Library.
- Go to IAM & Admin > Service Accounts and create a new service account.
- On the Keys tab, click Add Key > Create new key, select JSON, and download the generated key file.
- From the downloaded JSON file, extract the
client_email,private_key, andproject_idvalues and store them in the corresponding project variables listed under Google Cloud. - Set the
Google_OAuth_Scopesvariable tohttps://www.googleapis.com/auth/drive.
Prepare Google Drive
Upload the QBR template to a Shared Drive and grant the service account access:
- In Google Drive, ensure the destination is a Shared Drive (not a personal My Drive folder).
- Grant the service account (the value of
Google_Client_Email) Editor access to the Shared Drive. - Upload the ZIP file downloaded in Download and install the project to the Shared Drive and extract its contents. Verify that two folders are created: New Documents and QBR Template.
- Open the QBR Template folder, locate the Google Slides template file, and copy the template file ID from the URL (the long string between
/d/and/edit). - Open the New Documents folder and copy the folder ID from the URL (the string after
/folders/). - Store both IDs in the project variables
Google_Drive_Template_File_IdandGoogle_Drive_Destination_Folder.
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.
Salesforce
| Variable name | Description |
|---|---|
SF_User_Name |
Username for Salesforce authentication. |
SF_Password |
Password for the Salesforce user. |
SF_Security_Token |
Security token appended to the password for API authentication. |
SF_Login_URL |
Authentication URL (for example, https://login.salesforce.com or your sandbox URL). |
NetSuite
| Variable name | Description |
|---|---|
NetSuite_Account |
NetSuite account identifier. |
NetSuite_WSDL |
NetSuite SOAP WSDL endpoint URL. |
NetSuite_Consumer_Key |
Consumer key for OAuth authentication. |
NetSuite_Consumer_Secret |
Consumer secret for OAuth authentication. |
NetSuite_Token_Key |
Token identifier for token-based authentication. |
NetSuite_Token_Secret |
Token secret for token-based authentication. |
Google Cloud
| Variable name | Description |
|---|---|
Google_Project_ID |
Google Cloud project identifier. |
Google_Client_Email |
Service account email address for authentication. |
Google_Private_Key |
Private key from the service account JSON key file. |
Google_OAuth_Scopes |
OAuth scopes for API access (for example, https://www.googleapis.com/auth/drive). |
Google_Drive_Template_File_Id |
File ID of the QBR slide template in Google Drive. |
Google_Drive_Destination_Folder |
Folder ID of the output destination folder in Google Drive. |
Product usage APIs
| Variable name | Description |
|---|---|
Product_Usage_API_URL |
Base endpoint URL for the product usage service. |
NOAM_Product_Usage_APIKey |
API key for North America product usage data. |
EMEA_Product_Usage_APIKey |
API key for Europe, Middle East, and Africa product usage data. |
APAC_Product_Usage_APIKey |
API key for Asia-Pacific product usage data. |
Azure OpenAI
| Variable name | Description |
|---|---|
azure_openai_api_key |
API key for the Azure OpenAI service. |
azure_openai_base_url |
Base endpoint URL for Azure OpenAI. |
Azure_OpenAI_Deployment_Name |
Deployment name of the model instance (for example, gpt-4o). |
azure_deployment_id |
Specific model deployment identifier. |
azure_openai_temperature |
Controls response randomness. Set to 0 for deterministic output. |
azure_openai_top_p |
Controls nucleus sampling probability. |
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 a custom API
Create a custom API in Jitterbit API Manager to expose the agent entry point:
- In API Manager, create a new custom API with a
POSTmethod at the/newqbrpath. - Set the operation trigger to the
API Request Handleroperation in the 1.0 Main Entry – Slack API Request Handler workflow. - Publish the API and copy the generated endpoint URL.
- Use this URL for both the
{{Jitterbit API for complete QBR Report}}and{{Jitterbit API for Partial QBR Report}}placeholders when configuring the Slack app manifest. Only one API is required; both slash commands use the same endpoint.
Create and configure the Slack app
Create a Slack app and configure it to call the Jitterbit API endpoint:
- Go to api.slack.com/apps and select or create your Slack app.
- Navigate to App Manifest in the left-hand menu and click Edit Manifest.
- Paste the manifest JSON provided with the project into the editor.
- Replace both the
{{Jitterbit API for complete QBR Report}}and{{Jitterbit API for Partial QBR Report}}placeholders with the same Jitterbit API endpoint URL created in Create a custom API. Both slash commands use the same endpoint; the agent routes them internally based on the command name. - Click Save Changes to apply the configuration.
- Install or reinstall the app to your workspace if prompted.
Review project workflows
The Studio project contains nine workflows that implement the QBR Deck Agent functionality, organized into two functional groups.
Main entry and AI logic
| Workflow | Description |
|---|---|
| 1.0 Main Entry – Slack API Request Handler | Receives incoming Slack requests and orchestrates the full QBR generation workflow. |
| 8.0 Main – AI Agent Tools Logic | Sends data to the LLM and processes the generated summaries and insights. |
1.0 Main Entry – Slack API Request Handler
This workflow serves as the central controller for the agent. It receives incoming Slack slash command requests via the Jitterbit API endpoint, validates the input, and routes requests to the appropriate data-gathering workflows. After data collection, it coordinates post-response operations and orchestrates the AI processing and slide generation steps.
8.0 Main – AI Agent Tools Logic
This workflow executes the core AI processing logic. It constructs the request payload from the normalized data, sends it to the LLM, and processes the returned summaries and insights. The generated content is then passed to the Google Slides workflows for insertion into the presentation.
Utility and tool workflows
| Workflow | Description |
|---|---|
| 2.0 Utility – Duplicate Google Slides Template | Creates a new slide deck by duplicating the QBR template in Google Drive. |
| 3.0 Utility – Google Slides | Populates slide content with AI-generated summaries and insights. |
| 4.0 Tool – Canonical Input Handler | Normalizes incoming request data into a standard format for downstream processing. |
| 5.0 Utility – Salesforce | Queries Salesforce for account data, contacts, and support cases. |
| 6.0 Utility – NetSuite | Retrieves project data from NetSuite. |
| 7.0 Utility – AskJBSales | Retrieves product usage metrics from regional product usage APIs. |
| 9.0 Utility – Slack | Sends formatted results and notifications back to users in Slack. |
2.0 Utility – Duplicate Google Slides Template
This workflow handles template management. It authenticates with Google Cloud using an OAuth token, retrieves the configured QBR template file from Google Drive, creates a copy of the template, assigns it a new file ID, and moves it to the configured destination folder.
3.0 Utility – Google Slides
This workflow manages slide content updates. It modifies slide titles, body content, and summaries, retrieves presentation metadata, handles placeholder mapping, and performs final updates to ensure all slides reflect the AI-generated insights.
4.0 Tool – Canonical Input Handler
This workflow standardizes incoming request data. It loads and normalizes data from multiple sources into a unified canonical format, ensuring consistency before the data is passed to the AI processing workflow.
5.0 Utility – Salesforce
This workflow integrates Salesforce data into the workflow. It queries accounts by name or Salesforce account ID, retrieves region details, and fetches related contacts and support cases to provide CRM context for the QBR.
6.0 Utility – NetSuite
This workflow retrieves project-related data from NetSuite. It searches for and returns project records to enrich the QBR with operational or financial context.
7.0 Utility – AskJBSales
This workflow handles product usage analytics. It retrieves product usage data from the configured regional API endpoints, builds structured usage datasets, and combines multiple API responses into the data used by the AI processing workflow.
9.0 Utility – Slack
This workflow handles outbound Slack communication. It sends formatted messages to Slack, delivering the completed deck link, status updates, or error notifications to the user who triggered the request.
Trigger the project workflows
The QBR Deck Agent is triggered by Slack slash commands sent to the configured Slack app. When a user sends a /completeqbr or /singleslideqbr command, Slack calls the Jitterbit API endpoint, which triggers the API Request Handler operation in the 1.0 Main Entry – Slack API Request Handler workflow.
Before the agent can receive commands, the Slack app must be installed to your workspace and the API endpoint URLs must be configured in the app manifest. See Create and configure the Slack app and Create a custom API.
Troubleshooting
If you encounter issues, review the following logs for detailed troubleshooting information:
For additional assistance, contact Jitterbit support.