> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seasonlabs.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Shopping companion

> Recognize when a product question is really a purchase objection.

## The conversation

A shopper:

1. Asks which serum works for oily skin.
2. Compares two niacinamide products.
3. Adds a \$44 product to the cart but says the price feels high.
4. Asks, “Is niacinamide actually good for oily skin?”

The last message looks like a general skincare question. In context, it is the
shopper's final concern before deciding whether to buy.

## Without and with Era

| Without Era                                                             | With Era                                                                                                |
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| “Niacinamide can help regulate oil and reduce the appearance of pores.” | “Yes. Niacinamide can help regulate oil, and the product in your cart uses an effective concentration.” |

Both answers address the ingredient. The second also addresses the purchase
decision that led to the question.

## What Era adds

Before the model responds, Era supplies a block like this:

```text theme={null}
[STATE v1] situation=product_in_cart urgency=delayed_purchase_decision [/STATE]
[GOAL v1] active=seek:confirm_ingredient_effectiveness resolved=unresolved [/GOAL]
[VALUE v1] top=[cost:high] [/VALUE]
[INTENT v1] intent=validating(0.90) specificity=specific [/INTENT]
[CAUSAL v1] constraint=price_sensitivity emotion=anxious [/CAUSAL]
[REC v1] action=validate do="Address ingredient effectiveness before purchase" priority=0.70 [/REC]
```

The model can now see that:

* The shopper is validating a choice, not starting new research.
* Price is part of the hesitation.
* The reply should connect the answer to the pending decision.

Era does not supply product facts or clinical evidence. Your application still
needs a trusted catalog or retrieval source.

## Integration

```typescript theme={null}
const eraContext = await era.turnContext(messages, {
  visitorId,
  sessionId,
});

const reply = await generateText({
  system: `${PERSONA}\n\n${eraContext}`,
  messages,
});
```

<Note>
  The retailer, shopper, products, and prices in this example are fictional.
</Note>

<CardGroup cols={2}>
  <Card title="Node SDK quickstart" icon="rocket" href="/quickstart">
    Add `turnContext()` to your backend.
  </Card>

  <Card title="When to use Era" icon="circle-check" href="/when-to-use">
    Check whether Era fits your application.
  </Card>
</CardGroup>
