> ## 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.

# Fan companion

> Use urgency and conversation history to answer an ambiguous question directly.

## The conversation

A racing fan asks:

1. “When does the next round start?”
2. “Is Maya Torres racing?”
3. “How does qualifying work again?”
4. “Did I miss quali?”

The last message is short, but the earlier messages show that the fan cares
about this event and wants an immediate yes-or-no answer.

## Without and with Era

| Without Era                                                                          | With Era                                           |
| ------------------------------------------------------------------------------------ | -------------------------------------------------- |
| “I don't have the current day or time, so I can't say for sure. Check the schedule.” | “No, you're good. Qualifying is tomorrow morning.” |

The first answer treats the message as an isolated schedule question. The
second answer uses the live goal and urgency from the full conversation.

## What Era adds

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

```text theme={null}
[STATE v1] urgency=time_sensitive [/STATE]
[GOAL v1] active=seek:check_qualifying_timing_status resolved=unresolved [/GOAL]
[INTENT v1] intent=validating(0.92) specificity=specific [/INTENT]
[CAUSAL v1] emotion=anxious need=confirm_qualifying_has_not_passed [/CAUSAL]
[REC v1] action=validate do="Confirm whether qualifying has happened" priority=0.85 [/REC]
```

The model can now see that:

* The user needs confirmation, not an explanation of qualifying.
* The answer is time-sensitive.
* A direct answer should come first.

Era does not provide the race schedule. Your application still needs the facts
or tools required to answer correctly. Era helps the model understand what to
do with those facts.

## Integration

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

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

<Note>
  The racing series and driver 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="Async and sync modes" icon="bolt" href="/concepts/async-sync">
    Choose when the context is prepared.
  </Card>
</CardGroup>
