Standups

Standups are the most common Pulse primitive. A set of questions, a schedule, a team, and a delivery channel — Pulse takes care of the rest.

Anatomy of a standup

A standup has:

  • Team — which members participate.
  • Questions — ordered, each with a type and optional conditions.
  • Schedule — days and time, honoring each participant's timezone.
  • Delivery channel — Slack, Comms, email, web.
  • Digest settings — where the summary goes and when.

Question types

TypeUse for
Short textOne-line answers ("What are you working on?").
Long textMulti-line or markdown ("What's blocking you?").
Yes / NoGate conditional follow-ups.
Scale (1–5 or 1–10)Mood checks, confidence ratings.
Multiple choicePick one.
CheckboxesPick many.
EmojiMood as an emoji.

Schedules

Standups can fire:

  • Daily (pick weekdays)
  • Weekly (one day per week)
  • Biweekly
  • Monthly (Nth day, or "last Friday" style)
  • Custom CRON (admin-only, for power users)

Times are local to each participant's timezone. If a participant hasn't set one, VITE_PULSE_DEFAULT_TZ is used.

Holidays are honored from the workspace calendar (Settings → Calendar). Pulse skips standups on holidays and on users' out-of-office days.

Delivery channels

Slack

A DM posts in the user's Slackbot channel. They answer inline in Slack. Replies feed back into Pulse via the event webhook. No context switch.

Comms

A DM message posts in the user's Comms DM channel. Thread replies feed back into Pulse.

Email

A plain email with each question and a response form link. Form submission is authenticated via a signed token.

Web

Standup appears in the user's Pulse dashboard. Useful as a fallback or for users who don't have Slack/Comms.

Channels are configurable per user — some team members can answer in Slack while others answer via email. Default is set per standup.

Conditional follow-ups

Branching based on a prior answer:

Q1 (Yes/No): Do you have blockers today?
  if YES → Q2: What's blocked? (long text)
  if NO  → skip to Q3

Configured in the standup editor. Branches can be nested.

Digests

Every standup produces a digest:

  • Format: markdown, rendered as a Slack/Comms message or emailed.
  • Location: team channel, a specific person, or "no digest".
  • Timing: configurable — e.g., daily at 9:30 AM team time.
  • Content: grouped by person, questions inline. Blockers highlighted.

Digests can be embedded in Ink via a Pulse block.

Skipping and opt-out

Team members can:

  • Skip today — answers are not requested, digest shows Skipped: <reason> (optional reason).
  • Pause for N days — vacations, PTO.
  • Opt out of a standup — admin-approved.

All skip reasons are audit-logged.

Response windows

Each standup has a response window (default 4 hours). Answers arriving after the window still count but may not make it into the digest. Late responses are appended to the next digest with a flag.

Editing standup settings

Standups → select → Edit. Changes apply on the next scheduled fire, not the current pending one. To force an immediate rerun, use Run now.

Analytics

Per-standup analytics (Standups → select → Analytics):

  • Participation rate (% of scheduled users who answered)
  • Average response time
  • Trend chart (last 30 days)
  • Per-person streak
  • Blocker frequency

Export any view to CSV.