A single JSON object that describes a complete Pulse event — the agenda, speakers, polls, prepared questions, timed segments, links, survey, and appearance. Hand your slides and this spec to an AI assistant; it returns a blueprint you upload to create the event. Pulse embeds no AI — it just defines this format so an AI you already use can design a rich, thoughtful event for you.
This page evolves with the product — always fetch the current version rather than
a saved copy. Machine schema: /spec/event-blueprint.schema.json (JSON Schema, CORS-enabled).
A blueprint carries no ids. A segment points at its speaker with speakerIndex (into
speakers[]); a link attaches to a speaker or segment with attachIndex. Pulse
mints real ids on import and wires everything up. This keeps a blueprint portable and re-runnable.
If a blueprint has problems, the import returns HTTP 400 with a machine-readable list — every issue at once — so you can paste it straight back to the AI to fix in one pass:
{
"error": "The blueprint has 2 problem(s).",
"code": "blueprintInvalid",
"errors": [
{ "path": "agenda[1].speakerIndex", "error": "No speaker at index 3.", "hint": "speakerIndex must be 0..1, or omitted." },
{ "path": "polls[0].options", "error": "A poll needs at least 2 options.", "hint": "Add options[] with text values." }
]
}
| Field | Meaning |
|---|---|
pulseTemplate | Required. The schema version — use 2. |
title | Required. The event name. |
scheduledStart / scheduledEnd | ISO 8601. The event auto-starts/ends at these times. |
settings | Feature toggles (reactions, chat, polls, questions, slides, guestAccess, …). |
reactionSetId / controlSize | Reaction set (a preset or "custom") + one-tap size (XS/S/M/L). |
customReactions | 3–8 emoji (from the curated reaction picker) used when reactionSetId is "custom". |
attendeeLayout | Order of the attendee tabs — any of engage, slides, chat, qa, info. Order only; an omitted tab still shows. |
speakers[] | Name, title, bio, and up to 6 links each. |
agenda[] | Ordered segments; each can tie to a speakerIndex, a slide range, planned minutes, and its own reactionSetId. |
resources[] | Links or text cards with attachKind (manual / event / speaker / segment / slide) so they surface at the right moment. A slide resource opens after slideIndex; add a body for a text-only note/definition (url optional). |
polls[] / questions[] / survey | Prepared polls & quizzes, seeded Q&A, and the post-event survey. |
video | Attendee-device YouTube for the lobby, live, and ended phases (each a YouTube link or 11-char id; live plays on the moderator's cue). Each slot defaults to muted autoplay; set its *Autoplay flag to false to instead let the viewer press play with sound. |
stageQr, themeId, qrFgColor, passcode | Stage-QR placement, per-event theme, QR color, and room passcode. |
Build it out to the maximum useful complexity: a real agenda with timed segments and speakers, a poll or quiz per major section, prepared Q&A that fits the talk, and a short survey.
{
"pulseTemplate": 2,
"title": "Q3 Product All-Hands",
"scheduledStart": "2026-08-01T16:00:00Z",
"reactionSetId": "professional",
"settings": { "reactions": true, "questions": true, "polls": true, "slides": true },
"speakers": [
{ "name": "Priya Sharma", "title": "VP Product", "bio": "Leads product.", "links": [{ "kind": "linkedin", "value": "https://linkedin.com/in/priya" }] },
{ "name": "Marcus Lee", "title": "Head of Eng" }
],
"agenda": [
{ "type": "intro", "title": "Welcome", "plannedMinutes": 5 },
{ "type": "speaker", "title": "Roadmap", "speakerIndex": 0, "slideFrom": 1, "slideTo": 8, "plannedMinutes": 20, "reactionSetId": "celebration" },
{ "type": "speaker", "title": "Reliability", "speakerIndex": 1, "slideFrom": 9, "slideTo": 15, "plannedMinutes": 15 }
],
"resources": [
{ "title": "Roadmap doc", "url": "https://example.com/roadmap", "attachKind": "segment", "attachIndex": 1 }
],
"polls": [
{ "kind": "poll", "prompt": "Which area matters most to you?", "resultsVisibility": "live",
"options": [{ "text": "Speed" }, { "text": "Reliability" }, { "text": "New features" }] }
],
"questions": ["What's the timeline for the mobile app?"],
"survey": { "enabled": true, "questions": [{ "prompt": "How useful was this?", "type": "Rating", "scale": 5 }] }
}
Pulse™. Spec version 2 — served live at nowpresenting.net/spec.