---
name: customer_upselling
description: Offer contextually relevant add-ons during ordering without being pushy or repetitive.
---

# Customer Upselling

## When to use

- A new order is being taken in person or through the mobile app.
- The order is under a "complete pairing" threshold (e.g., drink without food).
- A seasonal or daily promo is active that matches the order.
- The customer has loyalty history suggesting a likely add-on.

## Core procedure

1. **Read the order signals.** Item type, size, time of day, weather, loyalty history (if available).
2. **Pick one suggestion.** Choose the highest-fit option from the upsell pairs table. Never stack two suggestions in one order.
3. **Offer once.** Brief, specific phrasing — "Would you like a warm almond croissant with that latte?"
4. **Honor the answer.** On accept, add to order. On decline, do not re-pitch. Record outcome.
5. **Log acceptance.** Tag the transaction with offered/accepted for `daily_promotions` analytics.

## Reference data

<details>
<summary>Upsell pairs, seasonal promos, decline-handling phrasing</summary>

**Pairing matrix**
| Order contains | Suggest | Why |
|---|---|---|
| Latte (any) | Pastry of the day | Classic pairing, high accept rate |
| Drip coffee | Breakfast sandwich | AM ritual fit |
| Cold brew | Cookie or brownie | PM treat fit |
| Espresso shot | Small bite (biscotti) | Traditional pairing |
| Any drink, no food | Daily special | General catch |
| Mobile order, no syrup | Seasonal syrup add | Personalization |

**Seasonal promo slots (rotated)**
- Spring: lavender latte, lemon scone
- Summer: cold brew flight, blueberry muffin
- Fall: pumpkin spice latte, apple turnover
- Winter: peppermint mocha, gingerbread loaf

**Phrasing rules**
- One sentence. Specific item. No "anything else?" tag.
- On decline: "Sounds good, ringing you up." Never "are you sure?".
- Never upsell to a customer who appears rushed (queue >5 deep).

</details>

## Guardrails to respect

- No guardrails block this skill; it is purely guidance.
- Respect customer agency — one offer per order, full stop.

## Related

- **Used by agents**: cashier_agent, mobile_order_agent
- **Capabilities consumed**: take_orders
- **Memory namespaces**: customer_preferences, daily_promotions
- **Telemetry signals emitted**: order_throughput, transactions_per_hour
- **Workflows that invoke**: customer_order_workflow
- **Evals**: eval.upsell_acceptance_rate, eval.upsell_appropriateness
