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
| Type | Use for |
|---|---|
| Short text | One-line answers ("What are you working on?"). |
| Long text | Multi-line or markdown ("What's blocking you?"). |
| Yes / No | Gate conditional follow-ups. |
| Scale (1–5 or 1–10) | Mood checks, confidence ratings. |
| Multiple choice | Pick one. |
| Checkboxes | Pick many. |
| Emoji | Mood 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.
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.