Jitterbit Competitive Pricing Agent
Overview
Jitterbit provides the Competitive Pricing Agent to customers through Jitterbit Marketplace. This agent uses AI to analyze competitor pricing across marketplaces, helping organizations make data-driven pricing decisions and stay competitive.
The agent leverages real-time market data from Google Shopping to compare product prices across competitors. Using AI-powered analysis, it evaluates pricing strategies and recommends optimal prices based on configurable business rules and market positioning goals.
The agent integrates with Azure OpenAI to perform intelligent pricing analysis. The agent can be configured to work with or without App Builder depending on your needs. The agent performs the following tasks:
- (Optional) Connects to SAP ECC to retrieve real-time product (materials) data using Jitterbit Studio. Products can also be provided directly via API calls.
- (Optional) Stores retrieved products in Jitterbit App Builder for data management and configuration.
- Queries the Google Shopping API using the product SKU to retrieve competitor pricing information on all stored products.
- Processes individual products on demand using a Jitterbit custom API.
- Creates dynamic prompts based on configurable business strategy (stored in App Builder or project variables) to guide pricing recommendations.
- Integrates with Azure OpenAI to analyze competitor pricing and generate recommendations.
- Stores pricing analysis results (in App Builder if used) and sends Slack notifications for flagged products.
This document explains how to set up and operate this AI agent. It covers architecture and prerequisites, example API queries that show what the agent can do, and steps to install, configure, and operate the AI agent.
AI agent architecture
This AI agent analyzes competitor pricing and recommends optimal prices based on market data and business strategy. A typical workflow follows these steps:
- You run the agent on a schedule or manually, and the agent retrieves products from SAP ECC or App Builder.
- For each product, the agent queries the Google Shopping API to gather competitor pricing data including minimum, average, and maximum prices.
- The agent builds a dynamic prompt based on configurable business rules stored in App Builder (such as market positioning intent and price anchoring strategy) or in project variables.
- Azure OpenAI analyzes the market data using the dynamic prompt and returns pricing recommendations including suggested price, confidence score, and competitor price ranges.
- The agent stores analysis results in App Builder, returns results via API for single products, or sends Slack notifications, depending on your configuration.
- Products with the notification flag enabled trigger Slack alerts when prices change, recommendations are generated, or when you execute any of the available workflows.
- You can trigger individual product analysis through a custom API call from the App Builder interface or run batch processing for all products. Both approaches work with or without App Builder.
Workflow diagrams
The following diagrams depict the main workflows for this integration. Depending on whether you use App Builder for data storage and configuration, the workflows differ in how they retrieve product data and return results.
Workflows when using App Builder
When using App Builder, the agent stores product data and analysis results in App Builder tables.
Batch pricing analysis
You can run the agent on a schedule or manually to analyze all products. When using an ERP connection, you can optionally store products in App Builder immediately after querying the ERP system, then retrieve them from App Builder to continue the Jitterbit Competitive Pricing Agent workflow.
Jitterbit Competitive
Pricing Agent" } SAP[fas:fa-database
SAP ECC] GS[fab:fa-google
Google Shopping API] AZR[Azure OpenAI REST call] AZM@{ shape: hex, label: "Azure OpenAI model" } STR@{ shape: hex, label: "
App Builder" } SAP -->|1. Query products| JSP JSP -->|2. Product details| GS GS -->|3. Competitor prices| JSP JSP -->|4. Market data + prompt| AZR AZR --> AZM AZM --> AZR AZR -->|5. Pricing recommendations| JSP JSP -->|6. Store results| STR
On-demand pricing analysis
Users trigger analysis for individual products through the App Builder interface:
Jitterbit Competitive
Pricing Agent" } STR@{ shape: hex, label: "
App Builder" } JCA@{ shape: hex, label: "
Jitterbit API Manager
custom API" } UI[fas:fa-desktop
App Builder UI] GS[fab:fa-google
Google Shopping API] AZR[Azure OpenAI REST call] AZM@{ shape: hex, label: "Azure OpenAI model" } UI -->|1. Trigger analysis| JCA JCA -->|2. Product request| JSP JSP -->|3. Fetch configuration| STR JSP -->|4. Product details| GS GS -->|5. Competitor prices| JSP JSP -->|6. Market data + prompt| AZR AZR --> AZM AZM --> AZR AZR -->|7. Pricing recommendations| JSP JSP -->|8. Update results| STR STR -->|9. Return updated data| UI
Workflows when not using App Builder
When not using App Builder, the agent retrieves products directly from ERP systems and returns results via API responses and Slack notifications.
Batch pricing analysis from ERP
An API triggers the agent to retrieve products from ERP and perform pricing analysis:
Jitterbit Competitive
Pricing Agent" } JCA@{ shape: hex, label: "
Jitterbit API Manager
custom API" } SAP[fas:fa-database
SAP ECC] GS[fab:fa-google
Google Shopping API] AZR[Azure OpenAI REST call] AZM@{ shape: hex, label: "Azure OpenAI model" } SLK[fab:fa-slack
Slack] JCA -->|1. Trigger batch processing| JSP SAP -->|2. Query products| JSP JSP -->|3. Product details| GS GS -->|4. Competitor prices| JSP JSP -->|5. Market data + prompt| AZR AZR --> AZM AZM --> AZR AZR -->|6. Pricing recommendations| JSP JSP -->|7. Send results| SLK
Single product pricing analysis via API
Users trigger analysis for individual products through direct API calls with JSON payload:
Jitterbit Competitive
Pricing Agent" } JCA@{ shape: hex, label: "
Jitterbit API Manager
custom API" } GS[fab:fa-google
Google Shopping API] AZR[Azure OpenAI REST call] AZM@{ shape: hex, label: "Azure OpenAI model" } SLK[fab:fa-slack
Slack] USER[fas:fa-user
API Client] USER -->|1. Product JSON| JCA JCA -->|2. Product request| JSP JSP -->|3. Product details| GS GS -->|4. Competitor prices| JSP JSP -->|5. Market data + prompt| AZR AZR --> AZM AZM --> AZR AZR -->|6. Pricing recommendations| JSP JSP -->|7. API response| JCA JCA -->|8. Results| USER JSP -.->|9. Notifications if flagged| 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
- Jitterbit App Builder version 4.55.1 with a PostgreSQL database (optional, for data management and configuration)
- Jitterbit Competitive Pricing Agent purchased as a license add-on
Supported endpoints
The AI agent incorporates 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 for pricing analysis. To use Azure OpenAI, you must have a Microsoft Azure subscription with permissions to create an Azure OpenAI resource with a deployed gpt-4o model.
Tip
For pricing information, see the Azure OpenAI pricing page.
Data source
The AI agent can retrieve product data from SAP ECC or other ERP systems, or you can provide product data directly via API calls. If you choose to use App Builder, it stores and displays product information and pricing analysis results. Without App Builder, the agent returns results directly through API responses and Slack notifications.
Google Shopping data
The AI agent uses SerpApi to access Google Shopping data. You must have a SerpApi account to use the Google Shopping API. This service is external to Google and Jitterbit. SerpApi offers free and paid plans.
Notification service
The AI agent uses Slack to send notifications for products with the notification flag enabled when a product record changes. You can replace Slack with any other notification endpoint by modifying the project's endpoint configurations and adapting the workflows to the schemas required by your chosen service. If using Slack, you must create a Slack app (using the provided slack_app_manifest.json file from the customizations download) and obtain the necessary authentication tokens.
Example API queries
The following examples show how to call the Jitterbit custom API to perform pricing analysis.
API calls with App Builder
These examples demonstrate API calls when using App Builder for data storage and management.
Single product pricing analysis
The API accepts product details from App Builder. App Builder provides the JSON request according to the created App Builder rule. The response includes the original product data plus AI-generated pricing analysis: competitor minimum, average, and maximum prices, recommended price, and confidence score.
-
Endpoint:
POST https://JBExample123456.jitterbit.net/defaultUrlPrefix/2.1/aiAgentPricingAgentApi/suggestedprice -
Request:
{ "productID": "391fd871-cc9a-4e93-af27-a6f2e11237ee", "brand": "Apple", "SKU": "iPhone 14 Pro Max 256 Gb", "description": "Smartphone Apple iPhone 14 Pro Max", "basePrice": 350, "category": "Smartphone", "AICompetitorMinimum": "", "AICompetitorAverage": "", "AICompetitorMaximum": "", "AIPriceRecommendation": "", "AIConfidenceScore": "", "flagNotification": 1 } -
Response:
{ "productID": "391fd871-cc9a-4e93-af27-a6f2e11237ee", "brand": "Apple", "SKU": "iPhone 14 Pro Max 256 Gb", "description": "Smartphone Apple iPhone 14 Pro Max", "basePrice": 350, "category": "Smartphone", "AICompetitorMinimum": "$415.00", "AICompetitorAverage": "$537.06", "AICompetitorMaximum": "$879.00", "AIPriceRecommendation": "$626.53", "AIConfidenceScore": "75", "flagNotification": 1 }
Batch pricing analysis for all products
The API triggers batch processing of all products stored in App Builder. The batch process runs in the background to avoid API timeout.
-
Endpoint:
POST https://JBExample123456.jitterbit.net/defaultUrlPrefix/2.1/aiAgentPricingAgentApi/AppBuilderAllProductsSuggestedPrice -
Request: None required.
-
Response:
{ "status": "Success", "message": "The integration will run but it will take some time. Please verify that the data is updated after some time" }
API calls without App Builder
These examples demonstrate API calls when performing pricing analysis without using App Builder for data storage.
Batch processing from ERP
The API triggers batch processing of all products from the ERP system. The batch process runs in the background to avoid API timeout.
-
Endpoint:
POST https://JBExample123456.jitterbit.net/defaultUrlPrefix/2.1/aiAgentPricingAgentApi/ERPProductsSuggestedPrice -
Request: None required.
-
Response:
{ "status": "Success", "message": "The integration will run but it will take some time. Please verify that the data is sent to your instant message application" }
Single-product pricing analysis
The API allows pricing analysis without using App Builder for data storage. The agent returns results in the API response and sends them via Slack notifications.
-
Endpoint:
POST https://JBExample123456.jitterbit.net/defaultUrlPrefix/2.1/aiAgentPricingAgentApi/GenericProductSuggestedPrice -
Request:
{ "productID": "112233", "brand": "Apple", "SKU": "iPhone 14 Pro Max 256 Gb", "description": "Smartphone Apple iPhone 15 Pro Max", "basePrice": 345, "category": "Smartphone Apple", "AICompetitorMinimum": "", "AICompetitorAverage": "", "AICompetitorMaximum": "", "AIPriceRecommendation": "", "AIConfidenceScore": "", "flagNotification": 1 } -
Response:
{ "productID": "112233", "brand": "Apple", "SKU": "iPhone 14 Pro Max 256 Gb", "description": "Smartphone Apple iPhone 15 Pro Max", "basePrice": 345, "category": "Smartphone Apple", "AICompetitorMinimum": "$359.99", "AICompetitorAverage": "$494.53", "AICompetitorMaximum": "$1080.00", "AIPriceRecommendation": "$419.76", "AIConfidenceScore": "75", "flagNotification": 1 }
Installation, configuration, and operation
Follow these steps to install, configure, and operate this AI agent:
- Download customizations and install the project
- Create Microsoft Azure resources
- Create the Slack app
- Configure project variables
- Test connections
- Deploy the project
- Create the Jitterbit custom API
- Install the App Builder application (optional, for App Builder users only)
- Review project workflows
- Trigger the project workflows
For troubleshooting guidance, see Troubleshooting.
Download customizations and install the project
Follow these steps to download customization files and 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 Jitterbit Competitive Pricing Agent. To locate the agent, you can use the search bar or, in the Filters pane under Type, select AI Agent to limit the display to AI agents.
-
Click the AI 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 to download customizations and import the AI agent as a Studio project.
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.
-
In configuration step 1, Download Customizations, the following file is provided to facilitate setup of the Slack app. Select the file and click Download Files:
- Slack app manifest file:
slack_app_manifest.json
- Slack app manifest file:
-
Click Next.
-
In configuration step 2, Create a New Project, select an environment where the Studio project will be created, then click Create Project.
-
A progress dialog is displayed. Once it indicates the project is created, use the dialog link Go to Studio or open the project directly from the Studio Projects page.
Create Microsoft Azure resources
Create the following Microsoft Azure resources and retain the information for configuring the AI agent. To create and manage these resources, you must have a Microsoft Azure subscription with the appropriate permissions.
Azure OpenAI resource
You must create an Azure OpenAI resource and deploy a gpt-4o model through the Azure AI Foundry portal.
Retain the deployment name, Azure OpenAI endpoint URL, and API key. You will enter these values in the Azure OpenAI project variables when you configure project variables in the next step.
To find these values, follow these steps:
-
In the Azure AI Foundry portal, open the specific OpenAI resource.
-
On the landing page for the resource, copy the endpoint URL (you will use this for the
azure_openai_base_urlproject variable) and API key (you will use this for theazure_openai_api_keyvariable). -
In the navigation menu under Shared resources, select Deployments. Copy the deployment name (you will use this for the
azure_deployment_idvariable).
Create the Slack app
To receive Slack notifications for pricing changes, follow these steps:
-
Create a Slack app using the Slack app manifest file (
slack_app_manifest.json) provided with this AI agent's customization files. Alternatively, create the app from scratch. -
If you use the provided manifest file, replace the following placeholders with your own configuration values:
Placeholder Description {{Replace with Slack bot name}}The name you want your Slack bot to have, as displayed to users. Replace this value in two places in the manifest. {{Replace with Jitterbit API URL}}The service URL of the Jitterbit custom API you created in Create the Jitterbit custom API. -
Install the app to your Slack workspace.
-
Obtain the bot token (for the Slack connection's Bot User OAuth Token field) and enter its value for the
slack_bot_oauth_user_tokenproject variable. -
Configure the
slack_channel_nameproject variable with the channel where notifications should be sent. -
Enter the bot token value for the
slack_bot_oauth_user_tokenproject variable and the channel name for theslack_channel_nameproject variable. You will configure these in the next step.
Configure project variables
In the Studio project installed earlier from Marketplace, you must set values for the following project variables.
To configure project variables, use the project's actions menu to select Project Variables to open a drawer along the bottom of the page where you can review and set the values.
Slack
| Variable name | Description |
|---|---|
slack_channel_name |
Slack channel where notifications are sent with product pricing analysis. |
slack_bot_oauth_user_token |
The Slack bot token obtained after creating the Slack app, used for the Slack connection's Bot User OAuth Token field. |
SAP
| Variable name | Description |
|---|---|
SAP_Username |
Integration username for the SAP instance. |
SAP_System_Number |
System number to connect to the SAP instance. |
SAP_Password |
Password for the SAP instance. |
SAP_Language |
Language code, such as EN for English. |
SAP_Host |
SAP server URL. Example: ecc489.example.com. |
SAP_Client |
Each client has its own data, customizations, and configurations. The client number uniquely identifies each client within an SAP system. |
SAP_Last_Modified_Date |
Starting point date for retrieving SAP materials. Use the format YYYYMMDD. |
Google Shopping
| Variable name | Description |
|---|---|
Google_Location |
Filter results by country or region. |
Google_Key |
API key for Google Shopping. Create an account at https://serpapi.com. |
Google_Engine |
Engine type that Google uses to search for data. Use google_shopping_light by default. |
Email notifications
| Variable name | Description |
|---|---|
Email_Summary |
Set to true to enable sending of summary email notifications. |
Email_SMTP_Servers |
Comma-separated list of SMTP servers used for sending email notifications. |
Email_Sender_Password |
Password of the email account used for sending email notifications. |
Email_Sender_Account |
Email account used to send email notifications. |
Email_Recipients |
Comma-separated list of email accounts to receive email notifications. |
Email_Enabled |
Set to true to enable sending of email notifications. |
Email_Display_Name |
Email account used in the "from" field of email notifications. |
Email_Data_Error |
Set to true to enable sending of failure email notifications. |
Azure OpenAI
| Variable name | Description |
|---|---|
azure_openai_top_p |
Controls how much of the probability mass the model considers when generating text. Low values (such as 0.1–0.3) are very focused. High values (such as 0.9–1.0) are more diverse and creative. Set to 0.95. |
azure_openai_temperature |
Controls the randomness of model output. Lower values (such as 0.0–0.3) make responses more focused and deterministic, while higher values (such as 0.8–1.0) increase creativity and diversity. Set to 0.2 for deterministic answers. |
azure_deployment_id |
The name of the Azure OpenAI deployment used to access the model. Set to gpt-4o. |
azure_openai_base_url |
The base URL for accessing the Azure OpenAI service. Example: https://<your-resource-name>.openai.azure.com. |
azure_openai_api_key |
The API key used to authenticate requests to the Azure OpenAI service. |
App Builder
Note
You must populate the values for these variables after you Install the App Builder application. You can leave these variables blank for now.
| Variable name | Description |
|---|---|
app_builder_base_url |
The base URL of your App Builder instance (for example, https://development.appbuilder.jitterbit.com). You obtain this value after completing the App Builder API integration section. |
app_builder_api_key |
REST API authentication key for the API call. You obtain this value after completing the App Builder API integration section. For detailed instructions on obtaining this value, see Publish App Builder app as a REST API endpoint. |
app_builder_endpoint_url |
The endpoint path that comes after the base URL. Default value: rest/v1/PricingAIAgentApp. This value does not need to be modified by the user. |
Dynamic prompt parameters
These variables control AI behavior when building pricing recommendations.
Note
If you are using App Builder, the only one of these project variables you need to configure is ai_Use_PV_Configuration_Values. You can leave the rest at their default values.
| Variable name | Description |
|---|---|
ai_Use_PV_Configuration_Values |
Set to true to use the App Builder application for configuration. Set to false to use project variable values instead. |
ai_System_Prompt |
Static part of the instructions provided to AI. Defines the AI's role as an expert in shopping and competitive price analysis. See Default prompt values for the required default text. Do not modify unless necessary. |
ai_Premium_Discount_Percentage |
Percentage applied according to positioning intent. Positive values increase price (premium), negative values decrease price (discount). |
ai_Positioning_Intent |
Market positioning strategy. Options: Match market, Premium, or Undercut market. |
ai_Outlier_Exclusion |
Set to true to remove extreme competitor prices (values >2x or <0.5x the median) before calculating statistics. |
ai_Minimum_Competitor_Sample_Size |
Minimum number of valid competitors required for reliable recommendations. If below this threshold, AI triggers fallback behavior. |
ai_Max_Price_Increase |
Maximum percentage that AI can recommend above the base price or anchor-influenced price. |
ai_Max_Price_Decrease |
Maximum percentage that AI can recommend below the base price or anchor-influenced price. |
ai_Market_Price_Anchor |
Reference point for pricing decisions. Options: Average, Lowest competitor, Median, or Top quartile. |
ai_Base_Price_Weighting |
Percentage that controls how strongly the base price influences the final recommendation relative to the market anchor. Set to 0 to ignore base price, 100 to ignore market anchor, or 50 to blend both equally. |
ai_Dynamic_Prompt |
Variable part of the system prompt that incorporates configuration values. Contains instructions for how AI should analyze pricing data and generate recommendations. See Default prompt values for the required default text. Do not modify unless necessary. |
Default prompt values
The following default values must be maintained for ai_System_Prompt and ai_Dynamic_Prompt variables. Modifying these values may cause issues in AI execution.
ai_System_Prompt default value
You are an expert in shopping and competitive price analysis.\n You will receive a JSON document containing competitor items with prices.\n You must analyze ONLY the provided JSON data.\nYour responsibilities:\n - Identify all valid competitor prices.\n - Calculate competitor minimum price.\n - Calculate competitor maximum price.\n - Calculate competitor average price.\n - Count the number of valid competitors.\n - Calculate a confidence score based on competitor count, price variance, and data consistency.\n You do NOT invent data.\n You do NOT use external sources.\n You do NOT modify system-defined pricing bounds.\n When recommending a price:\n - You must recommend a price strictly within the provided price floor and price ceiling.\n - You must align the recommendation with the provided pricing strategy and market anchor.\n - You must apply fallback behavior when confidence is below the required threshold.\n The response must always follow the defined output structure exactly.\n
ai_Dynamic_Prompt default value
\n'Pricing strategy configuration:\n\n- Market anchor type: ||marketAnchor|| \n\n- Positioning intent: ||positioningIntent||\n\n- Base price weighting: ||basePriceWeighting||%\n This controls how strongly the base price influences the final recommendation relative to the market anchor. 0% ignores base price, 100% ignores market anchor, 50% blends both equally. Current value: ||basePriceWeighting||%\n\n- Premium/discount percentage: ||premiumDiscountPercentage||%\n This percentage is applied according to positioning intent. Positive values increase price (premium), negative values decrease price (discount). Current value: ' + premiumDiscountPercentage + '%\n\n- Maximum allowed price increase: ||maxPriceIncrease||%\n AI must not recommend a price more than this percentage above the base price or anchor-influenced price. Current value: ||maxPriceIncrease||%\n\n- Maximum allowed price decrease: ||maxPriceDecrease||%\n AI must not recommend a price more than this percentage below the base price or anchor-influenced price. Current value: ||maxPriceDecrease||%\n\n- Minimum competitor sample size: ||minimumCompetitorSampleSize||\n If the number of valid competitors is below this threshold, AI must trigger fallback behavior to avoid unreliable recommendations. Current value: ||minimumCompetitorSampleSize||\n\n- Outlier exclusion: ||outlierExclusion||\n If outlier exclusion is enabled, remove extreme competitor prices before calculating min, max, and average. Extreme is defined as values >2x or <0.5x the median. Current value: ||outlierExclusion||\n\nInstructions:\n\n1. From the provided JSON, identify all valid competitor prices.\n2. Remove outliers if outlier_exclusion is enabled.\n3. Calculate:\n - Competitor minimum price as AICompetitorMinimum\n - Competitor maximum price as AICompetitorMaximum\n - Competitor average price as AICompetitorAverage\n4. Format all calculated prices as currency with a "$" prefix and exactly two decimal places.\n5. Calculate a confidence score from 0 to 100 based on competitor count, price variance, and data consistency as AIConfidenceScore.\n6. Recommend a final price that:\n - Aligns with the selected market anchor and positioning intent\n - Applies base price weighting and premium/discount percentage\n - Respects maximum price increase/decrease limits\n - Stays strictly within system-defined price floor and ceiling\n - Store the recomended final price as AIPriceRecomendation\n7. If confidence < threshold or competitor count < ||minimumCompetitorSampleSize||, apply fallback behavior.\n8. Only update fields that are empty ("").\n9. Return valid JSON only, starting with "{" and ending with "}".\n\nBe sure to use the prescribed opening and closing tags. Do not return the response in markdown or any code format, just the plain text.\nRemove any ```json at the begining or at the end. The response should ONLY be a valid JSON that starts with { and ends with }.\nDo not send empty values\nOUTPUT STRUCTURE (use exactly this structure):\n
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 to select Deploy.
Create the Jitterbit custom API
Create a custom API for multiple services to trigger different operations using API Manager.
Choose the appropriate set of services below based on whether you use App Builder or direct API calls, then configure and publish the custom API.
Services for App Builder
Configure these services if using the App Builder approach. After you configure the services, publish the custom API.
-
Service 1: Get AI Suggested Price
Setting Value Service name Get AI Suggested PriceOperation Initial Data Load - API RunPath /suggestedpriceMethod POSTResponse Type System Variable -
Service 2: Get AI All Products Suggested Price
Setting Value Service name Get AI All Products Suggested PriceOperation Sync App Builder Products API Request HandlerPath /AppBuilderAllProductsSuggestedPriceMethod POSTResponse Type System Variable
Important
Save the API service URLs of the published API. You will use these URLs in the App Builder API integration section to configure the connection between App Builder and the Jitterbit custom API.
Services for API calls (non-App Builder)
Configure these services if you use API calls without App Builder. After you configure the services, publish the custom API.
-
Service 1: Initial Data Load Products
Setting Value Service name Initial Data Load ProductsOperation Initial Data Load ProductsPath /ERPProductsSuggestedPriceMethod POSTResponse Type System Variable -
Service 2: Get AI Suggested Price
Setting Value Service name Get AI Suggested PriceOperation Initial Data Load - Generic API RunPath /GenericProductSuggestedPriceMethod POSTResponse Type System Variable
Important
Save the API service URLs of the published API for use when making API requests. To find the service URLs, go to the API details drawer on the Services tab, hover over each service's Actions column, and click Copy API service URL.
Install the App Builder application
These instructions are only required if you are using App Builder for data management and configuration. If using the AI agent without App Builder, skip this section and configure the agent using project variables as described in Dynamic prompt parameters.
Note
This AI agent uses bidirectional API communication with App Builder:
- The AI agent calls App Builder APIs to store product information.
- App Builder calls the Jitterbit custom API to perform pricing analysis.
You will configure API URLs in both Studio project variables and App Builder during the steps below.
To install and configure the App Builder application, contact Jitterbit support to obtain the App Builder installation file (.lp file).
Important
If using the App Builder release package, your App Builder instance must run version 4.55.1 and use a PostgreSQL database.
Install the LP file
Install the release package on your App Builder instance:
-
Log in to App Builder.
-
Go to the IDE.
-
Under Deploy, click Install Release.
-
Click + Package and then click Browse.
-
Select the LP file provided by Jitterbit support.
-
Click Save. The Release panel on the right displays the package information.
-
Close the Package dialog.
-
Confirm the details are correct and click Install.
App Builder API integration
The steps in this section configure the bidirectional API communication between App Builder and the Jitterbit custom API:
- Inbound: Allow Jitterbit to call App Builder APIs to store product information.
- Outbound: Allow App Builder to call the Jitterbit custom API to trigger pricing analysis.
Configure API authentication for inbound calls
Configure API Key authentication in App Builder to allow Jitterbit to store product data. You need an API Key security provider and user-specific API Keys.
Note
-
If you have an existing API Key security provider: Configure API Keys for the specific users who need access.
-
If you don't have an API Key security provider: Create the API Key security provider and configure API Keys for specific users. Do not configure or publish endpoints.
For detailed instructions, see Publish App Builder app as a REST API endpoint.
Configure the data server for outbound calls
Configure App Builder to call the Jitterbit custom API when users click the Send data to AI button. This triggers the Tool - Read AppBuilder Pricing Request workflow.
-
Go to IDE > Data Servers and locate the AI Pricing Agent API Source data server.
-
Click Open record and then click Edit.
-
In the URL field, enter the Jitterbit custom API URL you saved when creating the Jitterbit custom API.
-
Click Save.
Update Studio project variables
Now that you have completed the App Builder API integration, enter the values for the App Builder project variables.
Update App Builder tables using APIs
The Studio project uses the app_builder_base_url and app_builder_endpoint_url project variables to call the following App Builder endpoints:
- Upsert Products table:
/products/[appBuilderProductID](POST) - Create App Builder historical data:
/aiSearchLog(POST)
No additional configuration is required. These endpoints are used automatically by the project workflows.
Get App Builder data using APIs
To retrieve data from App Builder using the native App Builder REST API, the following requests are used:
- Get product information:
GET - https://development.appbuilder.jitterbit.com/rest/v1/PricingAIAgentApp/products -
Get configuration values:
GET - https://development.appbuilder.jitterbit.com/rest/v1/PricingAIAgentApp/configurationControlGET - https://development.appbuilder.jitterbit.com/rest/v1/PricingAIAgentApp/marketPriceAnchorGET - https://development.appbuilder.jitterbit.com/rest/v1/PricingAIAgentApp/positioningIntent
App Builder tables
The App Builder application stores and displays the following information in different tables.
The following tables are used by the App Builder application. For detailed information about App Builder data types and their specifications, see App Builder's Column data types documentation.
-
AISearchLog: This table stores historical data for every AI run.
Column name Data type Description AISearchLogIDUUID Unique identifier dateDateTime Timestamp of the AI run productInformationNVarchar(5000) Product information with AI-generated values configurationNVarchar(5000) Configuration schema used in the analysis -
ConfigurationControlValues: This table stores the analysis strategy used to create the dynamic prompt for pricing analysis results.
Column name Data type Description ConfigurationControlValueIDUUID Unique identifier marketPriceAnchorValueIDUUID Reference to market price anchor value positioningIntentIDUUID Reference to positioning intent value basePriceWeightingTinyInt Percentage controlling base price influence premiumDiscountPercentageTinyInt Percentage applied according to positioning intent maxPriceDecreaseTinyInt Maximum percentage for price decrease maxPriceIncreaseTinyInt Maximum percentage for price increase minimumCompetitorSampleSizeNVarchar(50) Minimum competitors required for reliable recommendations outlierExclusionBit Boolean flag to enable outlier exclusion dynamicPromptTextNVarchar(5000) Variable part of the prompt that incorporates configuration values staticPromptTextNVarchar(5000) Static part of the AI instructions -
marketPriceAnchorValues: This table stores dropdown values used in the analysis configuration.
Column name Data type Description marketPriceAnchorValueIDUUID Unique identifier marketPriceAnchorValueNVarchar(50) The anchor value option: Average,Lowest competitor,Median, orTop quartilescriptNVarchar(5000) Associated script for the anchor value -
positioningIntentValues: This table stores dropdown values used in the analysis configuration.
Column name Data type Description positioningIntentIDUUID Unique identifier positioningIntentValueNVarchar(50) The positioning intent option: Match market,Premium, orUndercut marketscriptNVarchar(5000) Associated script for the positioning intent -
Products: This table stores product information. Populate this table manually or use the Tool - Get ERP Products with App Builder workflow to import products automatically from SAP ECC.
Column name Data type Description ProductIDUUID Unique product identifier BrandNVarchar(50) Product brand SKUNVarchar(50) Stock Keeping Unit VinylAuditRefIdUUID Vinyl audit reference identifier DescriptionNVarchar(100) Product description BasePriceNumeric(15,2) Base price of the product CategoryNVarchar(50) Product category AICompetitorMinimumNVarchar(50) AI-generated minimum competitor price AICompetitorAverageNVarchar(50) AI-generated average competitor price AICompetitorMaximumNVarchar(50) AI-generated maximum competitor price AIPriceRecommendationNVarchar(50) AI-generated recommended price AIConfidenceScoreNVarchar(50) AI confidence score for the recommendation SourceIDNVarchar(50) Source system identifier SourceNameNVarchar(50) Source system name flagNotificationBit Boolean flag to enable Slack notifications
Review project workflows
The Studio project contains 12 workflows that implement the AI pricing agent functionality. Each workflow serves a specific purpose in the pricing analysis process. Understanding these workflows helps you determine which ones to configure and run based on your implementation approach.
| Workflow | Trigger type | App Builder | Non-App Builder |
|---|---|---|---|
| Tool - Read AppBuilder Pricing Request | API | ||
| Tool - Read Products From AppBuilder Table | Manual/Schedule | ||
| Tool - Build Prompt Configuration | Called by other workflows | ||
| Utility - Search Products in Google Shopping | Called by other workflows | ||
| Main - AI Agent Tools Logic | Called by other workflows | ||
| Tool - Get ERP Products with App Builder | Manual/Schedule | ||
| Tool - Get ERP Products | API | ||
| Utility - Store to App Builder | Called by other workflows | ||
| Utility - AppBuilder Logging | Called by other workflows | ||
| Main Entry - Slack API Request Handler | Called by other workflows | ||
| Main Entry - Sync App Builder Products API Request Handler | API | ||
| Main Entry - Generic Single Pricing API Request Handler | API |
Workflows when using App Builder
Tool - Read AppBuilder Pricing Request
This workflow receives product information via App Builder API requests and calls the Google Shopping API, prompt configuration, Azure OpenAI, notification, and logging workflows to perform pricing analysis. The workflow returns updated pricing information to App Builder tables.
Main Entry - Sync App Builder Products API Request Handler
This workflow calls Tool - Read Products From AppBuilder Table to process all products on demand instead of waiting for a scheduled run. You can trigger this workflow using an API configured in App Builder or execute it outside of App Builder.
Main Entry - Slack API Request Handler
This workflow sends AI results and processing summary to a Slack channel when a product's flagNotification field is marked true. You can customize this workflow for other communication channels by creating a new connector and operation.
Tool - Get ERP Products with App Builder
This workflow connects to SAP or other ERP systems to retrieve products and store them in App Builder tables in a generic format. When connecting to SAP ECC, RFC_READ_TABLE calls table MARA to obtain the list of materials, and BAPI_MATERIAL_GETALL is used to obtain the details of every material. The workflow contains the Get SAP Materials operation. The workflow runs on schedule or manually.
Tool - Read Products From AppBuilder Table
This workflow processes all products from the App Builder table. The workflow contains the Initial Data Load operation that calls the Google Shopping API, prompt configuration, Azure OpenAI, notification, and logging workflows to perform pricing analysis. The workflow runs on schedule or manually.
Utility - Store to App Builder
This workflow checks whether a product exists in the App Builder table. The workflow updates the product if it exists, or creates a new record if it doesn't.
Utility - AppBuilder Logging
This workflow stores execution information in the App Builder AISearchLog table when Tool - Read AppBuilder Pricing Request and Tool - Read Products From AppBuilder Table run. The workflow logs the product schema with AI values and the configuration schema used in each run.
Workflows when not using App Builder
Tool - Get ERP Products
This workflow receives API requests to retrieve materials from SAP or other ERP systems, performs pricing analysis using Google Shopping and the LLM, and returns results via Slack notifications. When connecting to SAP ECC, RFC_READ_TABLE calls table MARA to obtain the list of materials, and BAPI_MATERIAL_GETALL is used to obtain the details of every material. The API call requires a mandatory startingDate parameter in the URL (for example, https://JBExample123456.jitterbit.net/defaultUrlPrefix/2.1/aiAgentPricingAgentApi/ERPProductsSuggestedPrice?startingDate=20250101) to narrow down the search for products. Without this parameter, the integration will show an error. This workflow is similar to Tool - Read Products From AppBuilder Table but does not store data in App Builder.
Main Entry - Generic Single Pricing API Request Handler
This workflow receives API requests with product information in JSON format and performs pricing analysis without requiring SAP ECC or App Builder. You provide complete product data in the API request body, and the workflow returns the product with updated AI information in the API response. The workflow sends Slack notifications if the flagNotification field is marked true.
Main Entry - Slack API Request Handler
This workflow sends AI results and processing summary to a Slack channel when a product's flagNotification field in the API request is marked true. You can customize this workflow for other communication channels by creating a new connector and operation.
Shared workflows
The following workflows are used by both App Builder and non-App Builder approaches. These workflows run automatically as part of other workflows and are not intended for direct execution.
Tool - Build Prompt Configuration
This workflow builds dynamic prompts for AI-driven pricing analysis. The workflow searches configuration stored in App Builder tables when using App Builder, or builds prompts from project variables when not using App Builder.
Utility - Search Products in Google Shopping
This workflow calls the Google Shopping API to retrieve market price information for products. The workflow uses the product SKU as the query filter to search for and retrieve competitor pricing data from Google Shopping.
Main - AI Agent Tools Logic
This workflow calls the LLM (Azure OpenAI) to perform pricing analysis based on product information and market data.
Trigger the project workflows
When using App Builder
If using an ERP connection, run the Get SAP Materials operation in the Tool - Get ERP Products with App Builder workflow to load materials into App Builder databases. Alternatively, you can provide product data directly via the API without an ERP connection.
To run an operation, hover over the operation name and select the Run option. Run the operations again in the future when your data is updated.
Tip
You can schedule these operations to get updated data on a regular basis. To set up a schedule, open the operation's actions menu and select Settings > Schedules.
When not using App Builder
The following workflows run via API calls without requiring App Builder. These workflows perform pricing analysis without storing results in App Builder databases:
-
Tool - Get ERP Products: An API triggers this workflow to obtain materials from SAP or another system, perform pricing analysis, and return results via Slack notifications. Since this workflow does not require App Builder, Slack notifications are sent to show the pricing analysis results for all products.
-
Main Entry - Generic Single Pricing API Request Handler: An API triggers this workflow with a JSON request body containing product information. The workflow processes the product and sends pricing analysis results via Slack notifications.
-
Main Entry - Slack API Request Handler: This workflow is triggered when the
flagNotificationfield in the API request is enabled. The workflow sends AI results and processing summary to Slack.
Troubleshooting
If you encounter issues, review the following logs for detailed troubleshooting information:
For additional assistance, contact Jitterbit support.