# The sponsored card that arrived one turn late

A two-turn test for keeping a late ad response out of the wrong conversation.

Published: 2026-11-05T03:01:04Z

![The sponsored card that arrived one turn late](https://jolts.xyz/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6NiwicHVyIjoiYmxvYl9pZCJ9fQ==--a6a497144a986a8c023e759b8aa48dbbdb3d7a95/the-card-that-arrived-one-turn-late.webp)

At the top of the chat, the shopper asks for a headlamp. By the time the offer is ready, they have found their old one and want to know how to change its batteries. The headlamp offer was a reasonable match when the request left. Pinning it to the newest message turns it into a bad recommendation.

Perplexity described a different placement in its advertising experiment: a brand could sponsor a follow-up question. The distinction matters to an engineer. A follow-up belongs to a particular answer. So does a product card. Its position in a moving transcript is an unreliable way to identify that answer. [Read Perplexity’s experiment note](https://www.perplexity.ai/en-GB/hub/blog/why-we-re-experimenting-with-advertising).

## Make the race happen on demand

Here is a complete JavaScript reproduction. The user changes tasks between starting the lookup and resolving it. Run it in Node.

```js
const slots = new Map();
let current = "headlamp";
const requestedTurn = current;
let finish;
const offer = new Promise(resolve => { finish = resolve; });

const paint = offer.then(card => {
  if (requestedTurn === current) slots.set(requestedTurn, card);
});

current = "battery repair";
finish("Sponsored headlamp");
await paint;
if (slots.size !== 0) throw Error("Stale placement");
```

Change the callback to `slots.set(current, card)` and the example fails. A fast local network can hide this bug for months. A promise you resolve by hand reproduces it every time.

This example uses a policy that drops offers once the reader moves on. If a publisher wants old answers to retain their offers, it can instead write to the original answer’s slot. Either policy starts with capturing the turn ID before the request leaves.


## Related terms
- [Frequency cap](https://jolts.xyz/resources/glossary/frequency-cap)

## Next step

[Explore advertising](https://jolts.xyz/advertisers) or [monetize your AI app](https://jolts.xyz/publishers).
