---
name: pulse-event-builder
description: Design a complete nowpresenting.net (Pulse) live-event blueprint from a slide deck and a short interview — agenda with timed segments, speakers, polls & quizzes, prepared Q&A, and a survey — output as JSON to upload via "Start from a blueprint". Use when the user wants to build or set up a Pulse / nowpresenting event, or turn slides into an interactive session.
---

# Pulse event builder

This skill helps you (Claude) design a rich, thoughtful **event blueprint** for
[nowpresenting.net](https://nowpresenting.net) (Pulse) — a live-presentation engagement platform.
The user uploads the JSON you produce via **Start from a blueprint** and a fully built draft event
appears. Pulse embeds no AI; you do the design work, outside the product.

This skill *works with* nowpresenting.net; it is an independent helper, not a Pulse product.

## Always use the LIVING spec — never a baked-in copy

The blueprint format evolves with the product. **At the start of every use, fetch the current spec**
so you build to today's schema, not a stale memory:

- Human reference: `https://nowpresenting.net/spec/event-blueprint.html`
- Machine schema (JSON Schema, CORS-enabled): `https://nowpresenting.net/spec/event-blueprint.schema.json`

Fetch the JSON Schema, honor its `enum`s, `required` fields, and `additionalProperties: false`, and
pin `pulseTemplate` to the version the schema specifies. If you cannot fetch it, tell the user and ask
them to paste the spec, rather than guessing.

## Connected over MCP? Skip the paste

If the user has connected Pulse to you as an **MCP server** (console → Connect AI → a token), you don't
need the upload step at all — call the tools directly: read `pulse://spec/event-blueprint`, then
`validate_blueprint` and `create_session_from_blueprint` (or `update_session_from_blueprint` to iterate
on a draft). The `build-my-event` MCP prompt packages this whole flow. See
`https://nowpresenting.net/spec/mcp.html`. You can create and edit draft events and read reports — you
can't run the live room.

## Workflow

1. **Review the material.** If the user shares slides (PDF or images) or an outline, read them to
   understand the flow, the sections, and who presents what. Map slide ranges to agenda segments.
2. **Interview briefly.** Ask only what the slides don't answer, e.g.:
   - Title, date/time (and timezone), expected audience.
   - Speakers (names, titles, one-line bios, links) and which segment each owns.
   - Where interaction adds value — a poll or quiz per major section, an icebreaker to open, a survey to close.
   - Tone (which reaction set), whether a passcode is needed, any resource links to surface.
   - Whether a YouTube video should play on attendees' devices before the event (a lobby loop), on cue during it, or after (see the `video` object in the schema).
3. **Design to the maximum useful complexity.** A real run-of-show with timed segments and speaker
   attributions; a poll or quiz that fits each section; 2–4 prepared Q&A questions the speaker can
   expect; a short post-event survey. Attach resource links to the segment or speaker they belong to,
   and give a segment its own reaction set when the mood shifts (e.g. a celebration moment).
4. **Emit ONE JSON object** conforming to the fetched schema. Use array **indices** for cross-references
   (a segment's `speakerIndex`, a link's `attachIndex`) — never invent ids.
5. **Hand it off.** Tell the user to open Pulse → Events → **Start from a blueprint** and upload the
   JSON. If the import returns errors, they come back as a machine-readable list of
   `{path, error, hint}` — paste that back to you and fix every item in one pass.

## Guardrails

- Output valid JSON only for the blueprint itself (no comments, no trailing commas).
- Only `https://` links and email addresses (validated by the platform); never `http:`/`javascript:`.
- Don't fabricate speaker bios or links you weren't given — leave them out.
- Keep polls to 2–6 options; mark quiz answers with `isCorrect`.
