Matching is strict, and once
Two rules keep a tour from swallowing the demo it is supposed to carry. An entry fires only on a close variant of its own frozen prompt. Matching is a normalized similarity score, not keyword presence — so a typo, a dropped em dash, or a small word swap still lands the entry, while a different ask about the same subject does not:What an entry can replay
respond takes prose, a recorded app, or a sequence of both.
prompt takes an array when the same answer has more than one phrasing — the
line you say out loud and the suggestion chip beside it are the usual two.
An app part is a real app, not painted pixels: the document is imported
as an owned copy for the signed-in user, so it opens, pins, survives a reload,
and — the point — can be edited by the next turn, which is the live agent’s.
buildMs is how long the build takes (default 8 seconds). A real generation of
a dashboard-sized app takes 30–60 seconds; raise buildMs toward that when the
audience is meant to believe the app was generated in front of them.
Recording an app
Build the app once through the real agent, then export it:app.json is the document — drop it in your repo and import it:
id in the document is ignored: each replay mints a fresh one, exactly as
a real generation would.
Determinism
A rehearsed demo has to run the same way twice, so every pause and every chunk boundary is drawn from a stream seeded by the entry’s own prompt — uneven like a live provider, and the same unevenness on every run. Nothing in a tour callsMath.random.
Pacing is measured against real turns rather than invented: a delta carries
20–55 characters and lands 76–530ms after the last, with the odd burst and the
odd stall. Marks are absolute offsets from the moment the turn opened, so a
slow store spends its latency inside the budget instead of on top of it — the
same tour reads the same way on a laptop and on a hosted deployment.
What tour mode is not
- Not a key-gated feature. Tours are plain config with no Cloud dependency:
identical behavior with and without
VENDO_API_KEY. - Not a mock. A tour turn streams the same wire parts a live turn streams, persists into the same thread, and leaves a real app behind.
- Not a fallback. If a replay cannot run, the turn fails loudly and names the entry in the server log. A tour that silently degrades is one you find out about on stage.