Skip to Content

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:

  1. You run the agent on a schedule or manually, and the agent retrieves products from SAP ECC or App Builder.
  2. For each product, the agent queries the Google Shopping API to gather competitor pricing data including minimum, average, and maximum prices.
  3. 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.
  4. Azure OpenAI analyzes the market data using the dynamic prompt and returns pricing recommendations including suggested price, confidence score, and competitor price ranges.
  5. The agent stores analysis results in App Builder, returns results via API for single products, or sends Slack notifications, depending on your configuration.
  6. Products with the notification flag enabled trigger Slack alerts when prices change, recommendations are generated, or when you execute any of the available workflows.
  7. 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.

--- config: flowchart: padding: 20 nodeSpacing: 100 --- flowchart LR classDef default fill:white, stroke:black, stroke-width:3px, rx:15px, ry:15px JSP@{ shape: hex, label: "
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:

--- config: flowchart: padding: 20 nodeSpacing: 100 --- flowchart LR classDef default fill:white, stroke:black, stroke-width:3px, rx:15px, ry:15px JSP@{ shape: hex, label: "
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:

--- config: flowchart: padding: 20 nodeSpacing: 100 --- flowchart LR classDef default fill:white, stroke:black, stroke-width:3px, rx:15px, ry:15px JSP@{ shape: hex, label: "
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:

--- config: flowchart: padding: 20 nodeSpacing: 100 --- flowchart LR classDef default fill:white, stroke:black, stroke-width:3px, rx:15px, ry:15px JSP@{ shape: hex, label: "
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:

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:

  1. Download customizations and install the project
  2. Create Microsoft Azure resources
  3. Create the Slack app
  4. Configure project variables
  5. Test connections
  6. Deploy the project
  7. Create the Jitterbit custom API
  8. Install the App Builder application (optional, for App Builder users only)
  9. Review project workflows
  10. 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:

  1. Log in to the Harmony portal at https://login.jitterbit.com and open Marketplace.

  2. 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.

  3. 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.

  4. 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.

  5. 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
  6. Click Next.

  7. In configuration step 2, Create a New Project, select an environment where the Studio project will be created, then click Create Project.

  8. 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:

  1. In the Azure AI Foundry portal, open the specific OpenAI resource.

  2. On the landing page for the resource, copy the endpoint URL (you will use this for the azure_openai_base_url project variable) and API key (you will use this for the azure_openai_api_key variable).

  3. In the navigation menu under Shared resources, select Deployments. Copy the deployment name (you will use this for the azure_deployment_id variable).

Create the Slack app

To receive Slack notifications for pricing changes, follow these steps:

  1. 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.

  2. 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.
  3. Install the app to your Slack workspace.

  4. Obtain the bot token (for the Slack connection's Bot User OAuth Token field) and enter its value for the slack_bot_oauth_user_token project variable.

  5. Configure the slack_channel_name project variable with the channel where notifications should be sent.

  6. Enter the bot token value for the slack_bot_oauth_user_token project variable and the channel name for the slack_channel_name project 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 Price
    Operation Initial Data Load - API Run
    Path /suggestedprice
    Method POST
    Response Type System Variable
  • Service 2: Get AI All Products Suggested Price

    Setting Value
    Service name Get AI All Products Suggested Price
    Operation Sync App Builder Products API Request Handler
    Path /AppBuilderAllProductsSuggestedPrice
    Method POST
    Response 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 Products
    Operation Initial Data Load Products
    Path /ERPProductsSuggestedPrice
    Method POST
    Response Type System Variable
  • Service 2: Get AI Suggested Price

    Setting Value
    Service name Get AI Suggested Price
    Operation Initial Data Load - Generic API Run
    Path /GenericProductSuggestedPrice
    Method POST
    Response 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:

  1. Log in to App Builder.

  2. Go to the IDE.

  3. Under Deploy, click Install Release.

  4. Click + Package and then click Browse.

  5. Select the LP file provided by Jitterbit support.

  6. Click Save. The Release panel on the right displays the package information.

  7. Close the Package dialog.

  8. 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.

  1. Go to IDE > Data Servers and locate the AI Pricing Agent API Source data server.

  2. Click Open record and then click Edit.

  3. In the URL field, enter the Jitterbit custom API URL you saved when creating the Jitterbit custom API.

  4. 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/configurationControl
    • GET - https://development.appbuilder.jitterbit.com/rest/v1/PricingAIAgentApp/marketPriceAnchor
    • GET - 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.

  1. AISearchLog: This table stores historical data for every AI run.

    Column name Data type Description
    AISearchLogID UUID Unique identifier
    date DateTime Timestamp of the AI run
    productInformation NVarchar(5000) Product information with AI-generated values
    configuration NVarchar(5000) Configuration schema used in the analysis
  2. ConfigurationControlValues: This table stores the analysis strategy used to create the dynamic prompt for pricing analysis results.

    Column name Data type Description
    ConfigurationControlValueID UUID Unique identifier
    marketPriceAnchorValueID UUID Reference to market price anchor value
    positioningIntentID UUID Reference to positioning intent value
    basePriceWeighting TinyInt Percentage controlling base price influence
    premiumDiscountPercentage TinyInt Percentage applied according to positioning intent
    maxPriceDecrease TinyInt Maximum percentage for price decrease
    maxPriceIncrease TinyInt Maximum percentage for price increase
    minimumCompetitorSampleSize NVarchar(50) Minimum competitors required for reliable recommendations
    outlierExclusion Bit Boolean flag to enable outlier exclusion
    dynamicPromptText NVarchar(5000) Variable part of the prompt that incorporates configuration values
    staticPromptText NVarchar(5000) Static part of the AI instructions
  3. marketPriceAnchorValues: This table stores dropdown values used in the analysis configuration.

    Column name Data type Description
    marketPriceAnchorValueID UUID Unique identifier
    marketPriceAnchorValue NVarchar(50) The anchor value option: Average, Lowest competitor, Median, or Top quartile
    script NVarchar(5000) Associated script for the anchor value
  4. positioningIntentValues: This table stores dropdown values used in the analysis configuration.

    Column name Data type Description
    positioningIntentID UUID Unique identifier
    positioningIntentValue NVarchar(50) The positioning intent option: Match market, Premium, or Undercut market
    script NVarchar(5000) Associated script for the positioning intent
  5. 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
    ProductID UUID Unique product identifier
    Brand NVarchar(50) Product brand
    SKU NVarchar(50) Stock Keeping Unit
    VinylAuditRefId UUID Vinyl audit reference identifier
    Description NVarchar(100) Product description
    BasePrice Numeric(15,2) Base price of the product
    Category NVarchar(50) Product category
    AICompetitorMinimum NVarchar(50) AI-generated minimum competitor price
    AICompetitorAverage NVarchar(50) AI-generated average competitor price
    AICompetitorMaximum NVarchar(50) AI-generated maximum competitor price
    AIPriceRecommendation NVarchar(50) AI-generated recommended price
    AIConfidenceScore NVarchar(50) AI confidence score for the recommendation
    SourceID NVarchar(50) Source system identifier
    SourceName NVarchar(50) Source system name
    flagNotification Bit 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 flagNotification field 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.