Solution Pattern: AI-Powered Application Integration Platform

See the Solution in Action

1. Demonstration

The demo showcases how Red Hat Application Foundations technologies combine to deliver a cloud-native, AI-powered integration platform. The demonstration focuses on:

  • Ingesting purchase orders and storing them securely across infrastructure boundaries via Service Interconnect

  • Bridging disconnected messaging platforms through a Kafka-based event-driven architecture

  • Automating support workflows with AI-assisted case resolution using natural language

  • Enforcing token-based governance on LLM consumption through Connectivity Link

  • Extending the platform with new communication channels following a standard integration pattern


2. Recorded Video

Watch the recorded video of the solution pattern, and find below instructions on how to install the demo and run it.


3. Install the demonstration

3.1. Provision the demonstration environment

  1. Provision the following Red Hat Demo Platform (RHDP) item:


3.2. Access the demonstration environment


The RHDP environment serves two distinct purposes:

  1. Hands-on Lab — Students can follow the detailed Lab Instructions step-by-step to complete hands-on exercises

  2. Solution Pattern Demonstration — Architects and decision-makers can follow the walkthrough guide below to understand the architecture in action

For this solution pattern: Follow the walkthrough guide provided in the sections below, not the Lab Instructions. The Lab Instructions contain important reference information (such as credentials, URLs, and environment details) that the walkthrough may reference, but treat them as support material rather than the primary guide.


Once your RHDP environment is provisioned, you will receive an email with access details. You can find the Lab Instructions link in both the email notification and on the RHDP cluster details page. Clicking this link opens the hands-on workshop guide in a new browser tab.

Lab Instructions link

Use your RHDP-provided credentials to access the lab instructions. In your RHDP instance you’ll find the usernames that have been provisioned, for instance, user1, user2, etc. See below the sample credentials for the user1 username.

Sample user credentials

Once inside, you’ll find a Resources panel on the right side of the page. Click to expand it and reveal links to all the demonstration components:

Resources panel with access links

The Resources panel provides quick access to:

  • OpenShift Credentials — Your username and password for the OpenShift cluster

  • Dev Spaces Console — Click to open Red Hat OpenShift Dev Spaces in a new tab

  • Developer Console — Direct link to the OpenShift Topology View

  • Matrix Web Client — Customer-facing messaging platform

  • Rocket.Chat Web Client — Support agent messaging platform

3.2.1. Open Dev Spaces and access the terminal

  1. Click the Dev Spaces Console link from the Resources panel

  2. Click Open to launch the camel-lab workspace (wait a few moments while it initializes)

    Open Dev Spaces workspace
  3. When the IDE loads, open a terminal by clicking the menu button (three horizontal lines) in the top-left, then select TerminalNew Terminal

    Open terminal in Dev Spaces

The workspace contains pre-configured setup scripts for each demonstration phase. You’ll execute these scripts from the terminal as you progress through the walkthrough.


4. Walkthrough guide

The guide below demonstrates the key capabilities of this Solution Pattern in action.

The walkthrough follows a story. Each phase solves a problem that sets up the next one.

Hover over each phase in the diagram to learn more.

flowchart LR
    A["Ingest purchase\norders"] -->|"customer spots\na problem"| B["Multi-channel\ncommunication"]
    B -->|"agent needs\nhelp resolving"| C["AI-assisted\nsupport"]
    C -->|"AI usage must\nbe controlled"| D["Govern AI\nconsumption"]

    style A fill:#e8f5e9,stroke:#66bb6a,color:#000
    style B fill:#e3f2fd,stroke:#42a5f5,color:#000
    style C fill:#fff3e0,stroke:#fb8c00,color:#000
    style D fill:#fce4ec,stroke:#ef5350,color:#000

journey-diagram

{x: 8.6, y: 96}
{x: 38, y: 96}
{x: 66, y: 96}
{x: 92, y: 96}

A | ① Secure Data Ingestion | The commerce platform sends purchase orders in EDI format. A Camel flow transforms the EDI into XML and stores the data in a backend database. The database lives on separate infrastructure, so Service Interconnect provides a secure link without exposing anything to the public network. The flow also renders PDF invoices and pushes them to S3 storage.
B | ② Multi-Channel Communication | A customer reviews their invoice and spots a mistake. They reach out to support, but customer and support team use different messaging platforms.
You connect both so that messages from one show up in the other. Agents can respond from their own portal without caring which platform the customer is on.
C | ③ AI-assisted Issue Resolution | The support agent needs to look up the order, fix it in the database, and regenerate the invoice. Instead of doing it manually, the agent talks to an AI bot right inside their messaging portal.
The integration layer sends the request to an LLM, which decides what to do (query the database, update the record, regenerate the PDF) and reports back. The whole thing happens using natural language.
D | ④ Governing AI Consumption | Once AI is part of the workflow, you need controls. Who can call the LLM? How many tokens can it consume?
A gateway sits in front of the AI service and enforces authentication and token-based rate limits. Multiple tiers of service, each with its own token budget. When one tier runs out, the system falls back to the next.

The walkthrough below provides a narrative overview of the solution architecture in action. Each phase section describes what happens and why it demonstrates the pattern, without detailed execution steps.

To actually run the demonstration yourself with step-by-step commands and setup scripts, open the Lab Instructions from your RHDP environment. The lab chapters map directly to the phases below:

  • Phase 1: Data Ingestion → Lab Module 1

  • Phase 2: Multi-Channel Communication → Lab Modules 2-3

  • Phase 3: AI-Assisted Support → Lab Module 4

  • Phase 4: Governance → Lab Module 5


4.1. Phase 1: Data Ingestion Flow

Follow the steps below to complete a run through that demonstrates the data ingestion flow.


  1. Enable access to the database

    The first capability at play in this phase is the ability to securely connect the integration platform to the database. This is achieved using Service Interconnect.

    Unfold the instructions below and follow the steps to enable access to the database.

    Click this link to unfold instructions.

    The database is unreachable by default.

    flowchart LR
        subgraph yoursLabel ["user1-devspaces ."]
            subgraph yours [" "]
                Camel[⚙️ Integration]
            end
        end
    
        Camel -.-x|"❌ unreachable"| SVC
    
        subgraph sharedLabel ["shared-database ."]
            subgraph shared [" "]
                %% SI2{{"Service\nInterconnect"}}
                SVC((svc))
                SVC --> DB
            end
        end
    
        DB@{ img: "_images/database-icon.svg", label: "Database", pos: "b", h: 80, w: 80, constraint: "on" }
    
        style yoursLabel fill:none,stroke:none,color:#EE0000,font-weight:bold
        style Camel fill:#f8b4b4,stroke:#EE0000,font-weight:bold
        style sharedLabel fill:none,stroke:none,color:#EE0000,font-weight:bold
        style yours fill:#fce4e4,stroke:#EE0000
        style shared fill:#fce4e4,stroke:#EE0000
        style DB fill:none,stroke:none
        style SVC fill:#fce4e4,stroke:#EE0000,color:#333

    To enable access to the database, run the following command in your terminal in Dev Spaces:

    si-setup

    You should see all resources reporting ready OK:

    Namespace: user1-devspaces
         Site                    ready  OK
         AccessGrant             ready  OK
         Listener                ready  OK
    
    Namespace: shared-database
         AccessToken             ready  OK
         Link                    ready  OK

    The above output indicates a Service Interconnect link has been established between your namespace and the database namespace.

    flowchart LR
        subgraph yoursLabel ["user1-devspaces ."]
            subgraph yours [" "]
                Camel[⚙️ Integration]
    
                SI1{{"Service\nInterconnect"}}
            end
        end
    
        Camel --> SI1
    
        SI1 -.-|"🔒 secure link"| SI2
    
        subgraph sharedLabel ["shared-database ."]
            subgraph shared [" "]
                SI2{{"Service\nInterconnect"}}
                SVC((svc))
                SVC --> DB
            end
        end
    
        SI2 --> SVC
    
        DB@{ img: "_images/database-icon.svg", label: "Database", pos: "b", h: 80, w: 80, constraint: "on" }
    
        style yoursLabel fill:none,stroke:none,color:#EE0000,font-weight:bold
        style sharedLabel fill:none,stroke:none,color:#EE0000,font-weight:bold
        style yours fill:#fce4e4,stroke:#EE0000
        style shared fill:#fce4e4,stroke:#EE0000
        style Camel fill:#f8b4b4,stroke:#EE0000,font-weight:bold
        style DB fill:none,stroke:none
        style SI1 fill:#f8b4b4,stroke:#EE0000,color:#333
        style SI2 fill:#f8b4b4,stroke:#EE0000,color:#333
        style SVC fill:#fce4e4,stroke:#EE0000,color:#333


  2. Setup and run the data ingestion flow

    To setup the processeing flow, run the following command in your terminal in Dev Spaces:

    step 3

    To run the process, run it with the following command:

    camel run *

    DevSpaces will detect that port 8080 is open and show a notification — click Open In New Tab to open the embedded Test Shop in your browser.

    devspaces port notification

    The Test Shop will now be open in your browser.


  3. Submit a purchase order

    From the Test Shop web page, follow the steps below to submit a purchase order:

    testshop order

    testshop-order

    {x: 82, y: 12, size: 1.5} {x: 35, y: 86, size: 1.5} {x: 63, y: 58, size: 1.5}

    1. Add an item to the basket — note the total amount

    2. Expand EDI X12 850 Preview to peek at the raw EDI message — no need to fully understand it, but you may spot the item name, quantity, and total amount in the data

    3. Click Place Order — the shop sends the Purchase Order to your Camel route


  4. View the invoice

    The order above is processed, records are added to the database (via Service Interconnect) and an invoice is generated and stored in S3.

    Invoice Generated

    Your order has been processed and an invoice is ready.

    View Invoice (PDF)
    invoice_66507812.pdf
    Check Database


    Click View Invoice (PDF) to open it in your browser. The Seller section should display the default mapping values mapped from the EDI message:

    Seller:
    Test Shop Warehouse
    456 Warehouse Blvd
    Stockton, CA 95202
    Editing the mapping values in the data mapper will update the invoice PDF accordingly. If you want to know more explore the lab instructions.


When you’re done, press Ctrl+C in the terminal to stop Camel.


4.2. Phase2: Multi-Channel Communication

The diagram below shows the four flows enabling bidirectional communication between customer and support agent:

flowchart LR
    MX -->|"flow 1"| K -->|"flow 2"| RC
    RC -->|"flow 3"| K -->|"flow 4"| MX

    MX@{ img: "_images/element-icon.svg", label: "Matrix", pos: "b", h: 100, w: 80, constraint: "on" }
    K@{ img: "_images/kafka-icon.svg", label: "Kafka", pos: "b", h: 100, w: 80, constraint: "on" }
    RC@{ img: "_images/rocketchat-icon.svg", label: "Rocket.Chat", pos: "b", h: 100, w: 100, constraint: "on" }

    style MX fill:none,stroke:none
    style K fill:none,stroke:none
    style RC fill:none,stroke:none

    linkStyle 0 stroke:#66bb6a,stroke-width:2px
    linkStyle 1 stroke:#66bb6a,stroke-width:2px
    linkStyle 2 stroke:#ef5350,stroke-width:2px
    linkStyle 3 stroke:#ef5350,stroke-width:2px


Follow the steps below to complete a run through that demonstrates the multi-channel communication flow.


  1. Scale up the flows involved

    The flows have been pre-deployed on OpenShift, but are not scaled up. You need to scale them up to enable inter-platform communication.

    Unfold the instructions below and follow the steps to enable access to the database.

    Click this link to unfold instructions.

    From your Dev Spaces terminal, scale up all four deployments to start the flows:

    oc scale deployment m2k r2k k2m k2r --replicas=1

    Once all pods are up and running, the Topology view should show blue rings around each deployment:

    openshift topology running
    Access the Topology view from the resources overview on the right side of the lab instructions. resources topology view


  2. Try the flows

    Now that all flows are running, it’s time to simulate a conversation between customer and support agent.

    For easy onboarding onto Matrix and Rocket.Chat, follow the lab instructions "Lab 2 - Messaging Access" containing the following chapters:

    • Matrix platform onboarding — the customer side

    • Rocket.Chat platform onboarding — the support agent side


    Let’s simulate a brief exchange between a customer and a support agent(you will impersonate both personas).

    1. Customer sends a message — go to your Matrix room and type:

      Hi, I need some help with a purchase order I placed recently.

    2. Agent responds — go to your Rocket.Chat room, you should see the customer’s message. Reply with:

      Of course! Could you share your order reference so we can look into it?


    If all goes well, both platforms should show the full exchange. You should see something similar to:

    Matrix
    U
    user1
    4:10
    Hi, I need some help with a purchase order I placed recently.
    4:11
    user1@rocketchat: Of course! Could you share your order reference so we can look into it?
    Rocket.Chat
    U
    user1 4:10 PM
    user1@matrix: Hi, I need some help with a purchase order I placed recently.
    U
    user1 4:11 PM
    Of course! Could you share your order reference so we can look into it?


4.3. Phase 3: AI-Assisted Case Resolution

The following phase demonstrates how the AI-powered integration platform can assist support agents with complex case resolution tasks.


  1. Setup and run the data ingestion flow

    1. To setup the processeing flow, run the following command in your terminal in Dev Spaces:

      step 8

    2. Now, use the mcp script to start the MCP servers, as follows:

      ./mcp start

      The first time you run the MCP servers, it’ll take some time to download dependencies and start.
      Run ./mcp help to explore options and troubleshoot issues.
    3. To run the process, run it with the following command:

      camel run agent

      Wait for the process to start.


  2. Try it out

    Go through the following steps to recreate the the full resulution process:


    1. Switch to the ai-support channel

      From Rocket.Chat, as the support agent, find and select the ai-support channel in the left sidebar:

      A ai-support


    2. Pull the invoice

      From Rocket.Chat, as the support agent, enter the following message:

      Can you show me invoice 61356291?

      What if the AI still says it can’t help?

      The workshop uses a small LLM that can be inconsistent. The system prompt tells it to re-evaluate its tools before responding, but sometimes it replies as if no tools are available, for example:

      rocket.chat
      U
      user1 5:10 PM
      Can you show me invoice 61356291
      A
      ai-bot 5:10 PM
      I'm sorry, I don't have the capability to retrieve that PDF right now.

      If that happens, try one or both of these options:

      1. Send a more specific request:

        Please try again using the tool to get invoices

        This points the LLM to the right tool, which is usually enough to get it working.

      2. Stop the process with CTRL+C and restart it. A fresh start gives the LLM a clean tool list.

      If all goes well, this time the LLM discovers the tool, calls it, and responds with the invoice:

      rocket.chat
      U
      user1 6:47 PM
      Can you show me invoice 61356291
      A
      ai-bot 6:47 PM
      Here is the PDF for Invoice 61356291.
      Invoice 61356291 PDF ▾
      Click to view or download

      The bot identified the right tool, retrieved the invoice, and returned a download link to the support agent. Clicking the link opens the PDF in a new tab.

      See the sample invoice

      Invoice no: 61356291
      Date of issue: 09/06/2012

      Seller:
      Georgia World Congress Center
      285 Andrew Young International Blvd NW
      Atlanta, Georgia GA 30313

      Tax Id: 939-98-8477
      IBAN: GB50ACIE59715038217063
      Client:
      Chapman, Kim and Green
      64751 James Branch
      Smithmouth, NC 26872

      Tax Id: 949-84-9105
      ITEMS
      No. Description Qty UM Net price Net worth VAT [%] Gross worth
      1. Wine Glasses Goblets Pair Clear Glass 5,00 each 12,00 60,00 10% 66,00
      2. With Hooks Stemware Storage Multiple Uses Iron Wine Rack Hanging Glass 4,00 each 28,08 112,32 10% 123,55
      3. Replacement Corkscrew Parts Spiral Worm Wine Opener Bottle Houdini 1,00 each 7,50 7,50 10% 8,25
      4. HOME ESSENTIALS GRADIENT STEMLESS WINE GLASSES SET OF 4 20 FL OZ (591 ml) NEW 1,00 each 12,99 12,99 10% 14,29
      SUMMARY
      VAT [%] Net worth VAT Gross worth
      10% 192,81 19,28 212,09
      Total $ 192,81 $ 19,28 $ 212,09


    3. Amend the invoice

      The ai-bot can do more than just retrieve data — it can act on it. Imagine the customer has changed their mind and wants to return one of the items. Ask the AI assistant to amend the invoice:

      The customer would like to return stemless wine glasses, could you please adjust the invoice?

      The agentic system inspects the invoice, identifies the matching item, triggers the necessary tools to update the database, and responds with a summary of the changes:

      rocket.chat
      U
      user1 6:49 PM
      The customer would like to return stemless wine glasses, could you please adjust the invoice?
      A
      ai-bot 6:49 PM
      The database records have been updated. The stemless wine glasses item (Item 4) has been removed, and the summary values have been recalculated. Would you like to see the new PDF invoice?

      The agentic system acted autonomously — it inspected the invoice, identified the item, updated the quantity in the database, recalculated the totals, and confirmed the changes. All from a single natural language request.

      Notice the bot’s response — it may suggest viewing the updated invoice (LLMs are unpredictable, so the exact wording varies). If it does, simply reply yes. If it doesn’t, ask to see the amended invoice:

      Can you show me the updated invoice?

      Either way, the bot responds with the updated PDF link:

      rocket.chat
      A
      ai-bot 6:50 PM
      Here is the updated PDF for Invoice 61356291.
      Invoice 61356291 PDF ▾
      Click to view or download

      Click the link to open the regenerated invoice.

      See a sample of the amended invoice

      Amended
      Invoice no: 61356291
      Date of issue: 09/06/2012

      Seller:
      Georgia World Congress Center
      285 Andrew Young International Blvd NW
      Atlanta, Georgia GA 30313

      Tax Id: 939-98-8477
      IBAN: GB50ACIE59715038217063
      Client:
      Chapman, Kim and Green
      64751 James Branch
      Smithmouth, NC 26872

      Tax Id: 949-84-9105
      ITEMS
      No. Description Qty UM Net price Net worth VAT [%] Gross worth
      1. Wine Glasses Goblets Pair Clear Glass 5,00 each 12,00 60,00 10% 66,00
      2. With Hooks Stemware Storage Multiple Uses Iron Wine Rack Hanging Glass 4,00 each 28,08 112,32 10% 123,55
      3. Replacement Corkscrew Parts Spiral Worm Wine Opener Bottle Houdini 1,00 each 7,50 7,50 10% 8,25
      SUMMARY
      VAT [%] Net worth VAT Gross worth
      10% 179,82 17,98 197,80
      Total $ 179,82 $ 17,98 $ 197,80
      Notice the red Amended tag in the upper-right corner of the invoice — this indicates the document has been modified from the original.

      Inspect the document and verify the modifications are correct — the stemless wine glasses (item 4) should be removed, and the totals recalculated accordingly.


    4. Raise a ticket

      A customer support process rarely ends with a single action. Returning an item involves multiple departments — confirming the goods were received, processing the refund, updating inventory, notifying the customer. Rather than handling each step manually, ask the AI agent to raise a ticket that coordinates everything:

      Could you please raise a ticket? Include the details explained, and ask the right departments to refund the customer accordingly.

      The agentic system gathers the context from the conversation, creates a ticket in the HelpDesk system, and responds with a confirmation:

      rocket.chat
      U
      user1 6:52 PM
      Could you please raise a ticket? Include the details explained, and ask the right departments to refund the customer accordingly.
      A
      ai-bot 6:52 PM
      A ticket has been created with ID 1025. Would you like to share this ticket with the customer?

      At this point, the bot has created a ticket and asks permission to share it with the customer. You can either reply with "Yes, please share it with the customer." or "Could you share the ticket with the customer?" depending on the bot’s response.

      Either way, the final outcome is the same — the bot shares the ticket and the customer receives a link to the HelpDesk system:

      rocket.chat
      A
      ai-bot 6:53 PM
      The ticket #1025 has been successfully shared with the customer. They will receive a link to the HelpDesk system.
      Ticket 1025 ▾
      Click to open HelpDesk and select ticket 1025

      Remember — the customer communicates from the Matrix messaging platform. The bot indicated the ticket was shared, which means the customer should have received a message with the ticket reference. Switch to your Matrix window and check.

      You should see a message like this:

      matrix
      U
      user1
      11:05 ai@rocketchat:
      📄 Ticket #1025 created.
      (Click to open in HelpDesk)


    5. Verify the ticket from the customer’s perspective

      Now put yourself in the customer’s shoes. The customer received a message in Matrix with a link to the Globex HelpDesk ticketing system. Click the ticket link in the Matrix window.

      A new tab opens with the Globex HelpDesk login page:

      GLOBEX
      HELPDESK
      Username
       
      Password
       
      LOGIN

      To login, run the following command to obtain your HelpDesk credentials:

      grep -E "helpdesk_(username|password)" /tmp/lab-config.cache

      The command above should display your credentials, similar to:

      helpdesk_username=user1
      helpdesk_password=59QwdxEM
      

      Log in using the credentials displayed in your terminal

      Once logged in, the Globex HelpDesk displays the list of open tickets. You should see the ticket the AI agent just created:

      GLOBEX
      HELPDESK
      Tickets
      Status
      #
      Subject
      Created
      Requester
      N
      1025
      Refund Request for Invoice 61356291
      03/28/2026
      user1

      Click the ticket to inspect its details. The AI agent composed the ticket body from the conversation — it includes a summary of the changes and a link to the updated invoice:

      Refund Request for Invoice 61356291
      user1 <user1@globex.com>
      Mar 28, 2026, 07:05am
      The customer would like to return stemless wine glasses. The item has been removed from the invoice, and the summary calculations have been updated accordingly. Please process the refund for the customer.

      The full circle is complete: the AI assistant retrieved an invoice, amended it, raised a ticket with all the relevant details, and shared it with the customer across messaging platforms. All from natural conversation.


4.4. Phase 4: Governance and Rate Limiting

The following phase demonstrates how the AI-powered integration platform can be used to implement governance and rate limiting policies.


  1. Review and apply the AuthPolicy

    Create an AuthPolicy that is applied to the HTTPRoute (ai-proxy-route) and enforces a key-based authentication scheme. This will ensure that only authorized users with a valid API key can access the LLM.

    Click this link to unfold the actions.

    Examine the AuthPolicy and apply it by pasting the following command in your terminal:

    oc apply -f - <<EOF apiVersion: kuadrant.io/v1 kind: AuthPolicy metadata: name: ai-proxy-auth namespace: $WORKSPACE_NAMESPACE spec: targetRef: group: gateway.networking.k8s.io kind: HTTPRoute name: ai-proxy-route rules: authentication: api-key-users: apiKey: selector: matchLabels: app: my-llm-${WORKSPACE_NAMESPACE%-devspaces} credentials: authorizationHeader: prefix: Bearer response: success: filters: identity: json: properties: groups: selector: auth.identity.metadata.annotations.kuadrant\.io/groups userid: selector: auth.identity.metadata.annotations.secret\.kuadrant\.io/user-id headers: authorization: plain: selector: auth.identity.metadata.annotations.secret\.kuadrant\.io/upstream-token unauthenticated: headers: "content-type": value: application/json body: value: | { "error": "Unauthenticated", "message": "Invalid or missing API Key." } unauthorized: headers: "content-type": value: application/json body: value: | { "error": "Forbidden", "message": "Access denied. Your account does not have the required permissions (gold/silver)." } authorization: allow-groups: opa: rego: | groups := split(object.get(input.auth.identity.metadata.annotations, "kuadrant.io/groups", ""), ",") allow { groups[_] == "gold" } allow { groups[_] == "silver" } EOF


  2. Review and apply the TokenRateLimitPolicy

    The TokenRateLimitPolicy is a gateway-level resource. It defines token budgets per tier and lets the gateway enforce them independently of the running application.

    Click this link to unfold the actions.

    The policy defines two token budgets that reflect the cost of each tier:

    • Gold — richer analysis, higher compute cost. A stricter token allowance with a slower renewal window.

    • Silver — lighter analysis, lower compute cost. A more generous token allowance that renews faster.

    Review the TokenRateLimitPolicy below and apply it by pasting the following yaml in your new terminal tab:

    oc apply -f - <<EOF apiVersion: kuadrant.io/v1alpha1 kind: TokenRateLimitPolicy metadata: name: openai-token-limits namespace: $WORKSPACE_NAMESPACE spec: targetRef: group: gateway.networking.k8s.io kind: HTTPRoute name: ai-proxy-route limits: gold: rates: - limit: 50 window: 4m when: - predicate: | auth.identity.groups.split(",").exists(g, g == "gold") counters: - expression: auth.identity.userid silver: rates: - limit: 500 window: 2m when: - predicate: | auth.identity.groups.split(",").exists(g, g == "silver") counters: - expression: auth.identity.userid EOF

    Notice how the YAML matches the tier budgets described above:

    • gold with a tighter limit and longer window

    • silver with a more generous allowance that renews faster.


  3. Setup and run the customer AI assistant

    To setup the processeing flow, run the following command in your terminal in Dev Spaces:

    step 10

    To run the process, run it with the following command:

    camel run * --local-kamelet-dir ../support/kamelets


  4. Generate a customer profile

    From Rocket.Chat issue the following message:

    Please, generate a customer profile for order 61356291

    The order number in this request is illustrative — the Customer Profile Tool uses simulated input data from JSON files in the data/ folder of your project. You can explore these files in the source code to see the mock CRM, history, audit, and ticket data that feeds the analysis.

    The system should respond and default to Gold — the richer of the two analysis tiers. You should see a GOLD TIER ANALYSIS with a full customer profile, similar to:

    rocket.chat
    A
    ai-bot 6:49 PM

    🏅 GOLD TIER ANALYSIS

    📊 Customer Profile
    • Chapman, Kim and Green, Gold, 3.5 years
    • $48,200 annual revenue, Net 30 terms, FedEx Ground preferred
    🔍 Sentiment & Risk
    • Positive sentiment overall, with one Negative interaction
    • Low retention risk, with active engagement and resolution of issues
    📋 Open Issues
    • TKT-1025: Refund request — Stemless wine glasses returned (Invoice 61356291), pending confirmation and processing
    💡 Recommended Action
    Follow up with Dana Kim to confirm receipt of returned goods and finalize refund.
    Because LLM responses are non-deterministic, the exact wording may differ from the sample above. What matters is the GOLD TIER ANALYSIS banner and the four sections: Customer Profile, Sentiment & Risk, Open Issues, and Recommended Action.

    At this point, authentication is enforced. Both Gold and Silver keys are configured, and the AuthPolicy validates them before allowing access to the LLM. In the next exercise, you’ll discover how the gateway controls how much each tier can consume, and what happens when a tier reaches its limit.


  5. Force a rate limit

    In the previous step, the generated profile was based on the Gold tier. Because the rate limit is enforced, the next request will be downgraded to the Silver tier. Credit for gold tier was consumed and the system will default to the Silver tier.

    From Rocket.Chat issue the following message:

    Please try again

    The system should generate back a Silver profile — the poorer of the two analysis tiers. You should see a SILVER TIER ANALYSIS with a full customer profile, similar to:

    rocket.chat
    A
    ai-bot 6:49 PM

    🥈 SILVER TIER ANALYSIS

    📊 Customer Profile
    • Chapman, Kim and Green, Gold membership, US-East region
    📋 Open Issues
    • TKT-1025 — Refund request — Stemless wine glasses returned (Invoice 61356291)
    • TKT-0871 — Delayed shipment — Order 58201437 (resolved)
    • TKT-0943 — Pricing correction — Order 59843102 (resolved)


  6. Force a rate limit exhaustion

    Again, from Rocket.Chat issue the same message:

    Please try again

    Once both budgets are consumed, the system has no remaining capacity. You should see a SERVICE NOTICE with a 429 Too Many Requests status, confirming that the token rate limiting policy is fully enforced:

    rocket.chat
    U
    user1 11:25 AM
    Please try again
    A
    ai-bot 11:25 AM

    ⚠️ SERVICE NOTICE

    📡 System Insight
    • Status: 429 Too Many Requests
    • Action: Intelligence Service is currently paused due to high traffic.
    • Notice: Please try your request again in a few moments.
    Token budgets are not permanent. They operate on a time window basis, so after enough time passes the budgets get replenished. If you wait a few minutes and try again, the system will resume producing profiles following the same fallback strategy: Gold first, then Silver.


🎉 Well done! 🎉

You have completed the walkthrough of the AI-Powered Application Integration Platform solution pattern.

This walkthrough provided a narrative overview of the architecture and key capabilities. To experience the platform hands-on with detailed, self-guided instructions, step-by-step commands, and in-depth explanations of each component, explore the Lab Instructions from your RHDP environment.

The hands-on lab is designed as a comprehensive workshop experience, perfect for team training sessions or workshop days where multiple students can work collaboratively on the same environment. It offers:

  • Detailed setup instructions for each phase

  • Step-by-step command sequences with explanations

  • In-depth exploration of Service Interconnect, Kafka, Agentic Camel, and Connectivity Link

  • Troubleshooting guidance and verification steps

  • Extended scenarios demonstrating additional capabilities

  • Multi-user support for workshop environments where teams can learn together

Visit the Lab Instructions to discover all the capabilities in practice — whether individually or as part of a workshop.