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.
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
- cancel_order 0.999
- return_item 0
- track_order 0
The boots have not shipped yet, so the customer's request is cancel_order.
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
- track_order 0.998
- cancel_order 0.002
- change_address 0
The customer wants to know where an order that has not arrived is, so the request is
track_order.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
- change_address 1
- track_order 0
- return_item 0
The customer wants the order delivered to the office instead, so the request is
change_address.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
- return_item 1
- track_order 0
- change_address 0
The boots were delivered and are too small, so the request is
return_item.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
- track_refund 1
- return_item 0
- track_order 0
The tent was returned and the money has not come back, so the request is
track_refund.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
| Field | Kind | Description |
|---|---|---|
message | input | The customer's or user's message as received. |
service | context | One 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
| Key | Interface | Instructions | Labels |
|---|---|---|---|
| intent | classify | What 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.
| Function | Right when confident | Confident on | Threshold | Calibration rows |
|---|---|---|---|---|
| intent | 96.5% | 100.0% | 0.29 | 999 |
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