Skip to content
jeff.support.support-intentsv1.4.0

Customer request classification

Identifies the request in a customer or assistant-user message, choosing from a fixed list such as cancel_order or track_refund.

Open in playground

Example

Context

service
Customer support chat of an online shop

Input

hi, i changed my mind about the boots i ordered yesterday, can i still stop the order before it ships?

Labels (the options)

cancel_order
Cancel an order that has not been delivered yet
track_order
Find out where an order is
change_address
Change the delivery address of an order
return_item
Return an item that was delivered
track_refund
Find out the status of a refund
Answer (JSON)
value cancel_order, confidence 0.999
Top options
  1. cancel_order 0.999
  2. return_item 0
  3. track_order 0

The boots have not shipped yet, so the customer's request is cancel_order.

Open in playground

import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.support.support-intents.intent", context={        "service": "Customer support chat of an online shop",    }, labels={        "cancel_order": "Cancel an order that has not been delivered yet",        "track_order": "Find out where an order is",        "change_address": "Change the delivery address of an order",        "return_item": "Return an item that was delivered",        "track_refund": "Find out the status of a refund",    })     decision = decide("hi, i changed my mind about the boots i ordered yesterday, can i still stop the order before it ships?")     print(decision.value, decision.confidence)

More examples

  • Where is my parcel?answer track_order · confidence 0.998

    Context

    service
    Customer support chat of an online shop

    Input

    hiya, I ordered a rain jacket last Tuesday and it still hasn't come, can you tell me where it is?

    Labels (the options)

    cancel_order
    Cancel an order that has not been delivered yet
    track_order
    Find out where an order is
    change_address
    Change the delivery address of an order
    return_item
    Return an item that was delivered
    track_refund
    Find out the status of a refund
    Answer (JSON)
    value track_order, confidence 0.998
    Top options
    1. track_order 0.998
    2. cancel_order 0.002
    3. change_address 0

    The customer wants to know where an order that has not arrived is, so the request is track_order.

    Open in playground

    import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.support.support-intents.intent", context={        "service": "Customer support chat of an online shop",    }, labels={        "cancel_order": "Cancel an order that has not been delivered yet",        "track_order": "Find out where an order is",        "change_address": "Change the delivery address of an order",        "return_item": "Return an item that was delivered",        "track_refund": "Find out the status of a refund",    })     decision = decide("hiya, I ordered a rain jacket last Tuesday and it still hasn't come, can you tell me where it is?")     print(decision.value, decision.confidence)
  • Send it to my office insteadanswer change_address · confidence 1

    Context

    service
    Customer support chat of an online shop

    Input

    I won't be home on Friday, can you deliver my order to my office at 4 Canal Street instead?

    Labels (the options)

    cancel_order
    Cancel an order that has not been delivered yet
    track_order
    Find out where an order is
    change_address
    Change the delivery address of an order
    return_item
    Return an item that was delivered
    track_refund
    Find out the status of a refund
    Answer (JSON)
    value change_address, confidence 1
    Top options
    1. change_address 1
    2. track_order 0
    3. return_item 0

    The customer wants the order delivered to the office instead, so the request is change_address.

    Open in playground

    import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.support.support-intents.intent", context={        "service": "Customer support chat of an online shop",    }, labels={        "cancel_order": "Cancel an order that has not been delivered yet",        "track_order": "Find out where an order is",        "change_address": "Change the delivery address of an order",        "return_item": "Return an item that was delivered",        "track_refund": "Find out the status of a refund",    })     decision = decide("I won't be home on Friday, can you deliver my order to my office at 4 Canal Street instead?")     print(decision.value, decision.confidence)
  • Boots that are too smallanswer return_item · confidence 1

    Context

    service
    Customer support chat of an online shop

    Input

    The walking boots arrived yesterday but they're a size too small. How do I send them back?

    Labels (the options)

    cancel_order
    Cancel an order that has not been delivered yet
    track_order
    Find out where an order is
    change_address
    Change the delivery address of an order
    return_item
    Return an item that was delivered
    track_refund
    Find out the status of a refund
    Answer (JSON)
    value return_item, confidence 1
    Top options
    1. return_item 1
    2. track_order 0
    3. change_address 0

    The boots were delivered and are too small, so the request is return_item.

    Open in playground

    import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.support.support-intents.intent", context={        "service": "Customer support chat of an online shop",    }, labels={        "cancel_order": "Cancel an order that has not been delivered yet",        "track_order": "Find out where an order is",        "change_address": "Change the delivery address of an order",        "return_item": "Return an item that was delivered",        "track_refund": "Find out the status of a refund",    })     decision = decide("The walking boots arrived yesterday but they're a size too small. How do I send them back?")     print(decision.value, decision.confidence)
  • Refund not yet receivedanswer track_refund · confidence 1

    Context

    service
    Customer support chat of an online shop

    Input

    I sent the tent back two weeks ago and you said you got it, but the money still isn't on my card. What's happening with my refund?

    Labels (the options)

    cancel_order
    Cancel an order that has not been delivered yet
    track_order
    Find out where an order is
    change_address
    Change the delivery address of an order
    return_item
    Return an item that was delivered
    track_refund
    Find out the status of a refund
    Answer (JSON)
    value track_refund, confidence 1
    Top options
    1. track_refund 1
    2. return_item 0
    3. track_order 0

    The tent was returned and the money has not come back, so the request is track_refund.

    Open in playground

    import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.support.support-intents.intent", context={        "service": "Customer support chat of an online shop",    }, labels={        "cancel_order": "Cancel an order that has not been delivered yet",        "track_order": "Find out where an order is",        "change_address": "Change the delivery address of an order",        "return_item": "Return an item that was delivered",        "track_refund": "Find out the status of a refund",    })     decision = decide("I sent the tent back two weeks ago and you said you got it, but the money still isn't on my card. What's happening with my refund?")     print(decision.value, decision.confidence)

Use when

  • You need to classify requests in an online shop chat or voice assistant.
  • Messages are short and in English.

Avoid when

  • You need to identify every request in a message containing several; this adapter selects one.
  • Your inputs are long emails or tickets; use Support ticket triage.

Context and input

FieldKindDescription
message
inputThe customer's or user's message as received.
service
contextOne short phrase about the service the message is sent to. Training used three, one per data set, for example "Customer support chat of an online shop".

Functions

KeyInterfaceInstructionsLabels
intentclassifyWhat does the customer want? Choose the request that best matches what the customer is asking for in their message.from the caller

How it was measured

Test accuracy: the share of test rows whose top answer was right.

  • 96.4% on public intent data sets: Bitext customer support, HWU64 and SNIPS (5,577 rows). public benchmark

When confident

From the calibration set: at or above the threshold confidence, how often the answer is right, and how often the adapter is that confident. Below it, escalate.

FunctionRight when confidentConfident onThresholdCalibration rows
intent96.5%100.0%0.29999

Base: Jeff v1.4. Adapter trained: 25 October 2026.

Base

jeff-base v1.4

Call it

jeff.support.support-intents.intent, with placeholders for its input and context.

import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.support.support-intents.intent", context={        "service": "<service>",    })     decision = decide("<message>")     print(decision.value, decision.confidence)

Download

Weights: mstrasser/jeff-adapter-support-intents (v1.4)

Licence: Apache-2.0