Writing flow content
Guided selling is not yet available. This page describes it ahead of its release, so details can still change. The changelog announces when it is released.
The content of a version decides how a flow behaves. The instruction holds your selling knowledge, the catalog lists what the flow may advise and the settings hold the opening question, the languages, the question budget and the model. You send the content whole when you create a flow or a new version, and it is the only thing the flow knows. The examples come from the label printer advisor in Creating and publishing a flow, which has the complete content.
The instruction
The instruction is markdown, written for the AI model the way you would brief a new sales rep. It works best when it covers three things:
- How to narrow down. The questions an expert asks, starting with the one that rules out the most products.
- Rules. What rules a product in or out, in terms of the attributes in your catalog.
- What the advice should say. For example which needs each reason should name, or when to suggest talking to a specialist.
The instruction of the label printer advisor:
# Label printer advisor
You help warehouse managers, operations leads and office staff choose a label printer from this catalog.
## How to narrow down
1. Where the printer is used: a packing desk or office; a warehouse or production floor; on the move.
2. How many labels the customer prints on a busy day.
3. The widest label they print: 2, 4 or 6 inch.
4. How the printer connects: USB, Ethernet, Wi-Fi or Bluetooth.
Rule printers out on what the customer tells you. Do not ask a question whose answer would not change the advice.
## Rules
- On the move means battery power and a wireless connection: only mobile printers fit.
- More than 5,000 labels a day needs an industrial printer.
- Labels wider than 4 inch need a 6-inch printer.
- Thermal transfer labels last longer than direct thermal ones. Mention it when labels are stored outdoors or for months.
- When the customer already knows which model they want, ask which one and advise it.
## In the advice
In each reason, name the customer's needs that the printer meets. When no printer here meets a need, say so and suggest talking to a specialist.
What helps:
- Describe how an expert rules products out rather than which product to pick. The flow asks whichever question best splits the products that still fit.
- Use the attribute names and values of your catalog in your rules, so rules and products clearly match.
- Put every fact the flow may use in the catalog or the instruction. The flow does not state facts that are in neither.
- Leave out what every flow already does, such as limiting the number of options or never naming prices. See Rules every flow follows.
The catalog
The catalog lists the products the flow may advise, with only what it needs to choose between them:
| Field | What to put in it |
|---|---|
productId | The Propeller product id. The advice returns it and the storefront fetches the product with it. |
sku | Optional. For people who read the content and the conversation history. The flow does not use it to decide. |
name | The product name as the flow should know it |
description | One line on what the product is for, in the words a buyer would use |
attributes | The attributes that tell products apart, each as a name and a text value. Join the values of a multi-valued attribute in one string. |
{
"productId": 18242,
"sku": "LP-M220",
"name": "LP-M220 Mobile Label Printer",
"description": "Battery-powered printer worn on the belt for shelf and picking labels.",
"attributes": [
{ "name": "ENVIRONMENT", "value": "Warehouse aisles, customer sites" },
{ "name": "LABELS_PER_DAY", "value": "Up to 300" },
{ "name": "MAX_LABEL_WIDTH", "value": "2 inch" },
{ "name": "PRINT_METHOD", "value": "Direct thermal" },
{ "name": "CONNECTIVITY", "value": "Bluetooth, Wi-Fi" },
{ "name": "POWER_SOURCE", "value": "Battery" }
]
}
What helps:
- Include only attributes that differ between products and matter to a buyer. An attribute that every product shares cannot help the flow choose.
- Leave out prices, stock and images. The storefront shows them per customer.
- List the products you want advised, typically one product range. A flow advises from the same catalog for every customer, and the storefront leaves out advised products a customer cannot buy.
Build the catalog from your product data in Propeller, for example with the products query. The catalog is a copy: when products or their data change, the flow does not change with them. Create a new version with the updated catalog and publish it.
Every step sends the instruction and the catalog to the model. The model vendor caches them, but a shorter instruction and only the attributes that matter still keep steps faster and cheaper.
The settings
The settings of the label printer advisor:
{
"language": "EN",
"languages": ["EN", "NL"],
"opener": {
"questions": [
{ "language": "EN", "value": "Where will the printer be used?" },
{ "language": "NL", "value": "Waar gaat u de printer gebruiken?" }
],
"options": [
{
"labels": [
{ "language": "EN", "value": "At a packing desk or in an office" },
{ "language": "NL", "value": "Aan een inpaktafel of op kantoor" }
]
},
{
"labels": [
{ "language": "EN", "value": "In a warehouse or on the production floor" },
{ "language": "NL", "value": "In een magazijn of in de productie" }
]
},
{
"labels": [
{ "language": "EN", "value": "On the move: in the aisles or at customer sites" },
{ "language": "NL", "value": "Onderweg: tussen de stellingen of bij klanten" }
]
},
{
"labels": [
{ "language": "EN", "value": "I already know which model I want" },
{ "language": "NL", "value": "Ik weet al welk model ik wil" }
]
}
]
},
"freeText": true,
"maxQuestions": 5,
"model": { "model": "claude-sonnet-5-5", "effort": "MEDIUM" }
}
| Setting | What it does | Default |
|---|---|---|
language | The language you wrote the content in, in Propeller format such as EN | Required |
languages | The languages the flow answers in | language only |
opener | The opening question and its options, written per language | Required |
freeText | Whether customers may type an answer instead of picking an option | true |
maxQuestions | The question budget: the most answers a customer gives before the advice | 6 |
model.model | The Anthropic model id, for example claude-sonnet-5-5 | The platform default |
model.effort | How hard the model thinks on every step: LOW, MEDIUM or HIGH | MEDIUM |
The opening question
The opening question is shown instantly and without a model call, so make it the question that splits your catalog best and that every customer can answer, such as where or for what the product is used. Give it two to six options with distinct labels.
An option for customers who already know what they want, together with a rule in the instruction, gives experienced buyers a short way through.
Languages
You write the instruction and the catalog once, in language. The flow writes its questions and advice in the language of each request, for every language in languages. Only the opening question and its options are written per language. Write them in every language you offer: a language without its own text shows the text in language.
Typed answers
With freeText set to true, customers can type an answer to every question. Typed answers let customers explain what the options do not cover, but every step after a typed answer is a model call for that customer and takes several seconds. Set it to false for a flow with options only.
The question budget
maxQuestions counts every answer, picked or typed, the answer to the opening question included. The flow advises as soon as the answers identify the fit, so most conversations end before the budget is spent. When it is spent, the next step is the advice. A budget of 4 to 6 suits most catalogs.
Model and effort
Leave model.model out to use the platform default, or name an Anthropic model to fix the flow to it. Guided selling does not check the model id when you save the version. When you test a draft with a model Anthropic does not know, the step fails with GUIDED_SELLING_MODEL_UNAVAILABLE_ERROR and the reason LLM_MODEL_NOT_FOUND. After publishing, the same reason shows in warmError.
model.effort applies to every step, questions and advice alike, so that they share the model vendor's cache. A higher effort is slower and costs more. Try a different model or effort on a draft before you publish it.
Limits
| Content | Limit |
|---|---|
Flow name | 1 to 255 characters |
modelApiKey | 8 to 512 characters |
instruction | 1 to 200,000 characters |
| Catalog | 1 to 2,000 products, each productId once |
Product name | 1 to 300 characters |
sku | Up to 100 characters |
description | Up to 2,000 characters |
attributes | Up to 50 per product. Name 1 to 100 characters, value up to 500. |
language and each of languages | 2 to 8 letters |
languages | Up to 20 |
| Opening question options | 2 to 6, labels distinct within a language |
maxQuestions | 1 to 20 |
model.model | Up to 100 characters |
Validation
Guided selling validates the content when you create a flow or a version and reports every problem at once in extensions.problems. A field that breaks a rule, such as an empty catalog or a name that is too long, returns GUIDED_SELLING_INPUT_INVALID_ERROR. Content that does not fit together returns GUIDED_SELLING_CONTENT_INVALID_ERROR:
{
"errors": [
{
"message": "The flow content is invalid.",
"path": ["guidedSellingFlowCreate"],
"extensions": {
"code": "GUIDED_SELLING_CONTENT_INVALID_ERROR",
"problems": [
"settings.opener.questions: no question in the authored language EN",
"catalogue.products[4]: productId 18240 listed twice"
]
}
}
],
"data": null
}
Content checks include:
- the opening question and every option have a text in
language - option labels are distinct within a language
- every product is listed once