Skip to content

Commands

Configure AsyncUp by @mentioning it in the space where reports post. When a space has several standups, prefix commands with the standup id, e.g. @AsyncUp #2 time 09:30status lists all standups with their ids.

Configuration (admins only)

The person who runs setup becomes the standup's first admin. Only admins can change configuration; status, trends, blockers, export and help are open to everyone in the space.

CommandEffect
setup [name]Create a standup reporting to this space (creator becomes admin)
add @user…Add participants (mandatory by default)
remove @user…Remove participants
mandatory @user… / optional @user…Count toward the wrap-up report, or not
vacation @user… / back @user…Mark people away — no prompts, not counted as missing
admin @user… / unadmin @user…Manage who can change configuration
time HH:MMPrompt time — interpreted in each participant's own timezone
deadline HH:MMWhen the run closes and the wrap-up posts — standup timezone
remind <minutes>Nudge non-submitters this many minutes before the deadline (0 disables)
timezone <IANA>Standup timezone, e.g. Asia/Kolkata
days mon,tue,…Which days the standup runs (default mon–fri)
questionsShow the current question list
questions set Q1 | Q2 | …Replace the questions (1–10, pipe-separated)
questions resetBack to the default three questions
mood on|off|anonMood dropdown; anon hides who felt what — the wrap-up shows the team average instead
escalate @userDM this person when blockers stay open too long
escalate days N / escalate offEscalation threshold (default 2 days) / disable
digest on|offWeekly digest posted after the last run of the week
ai on|offAI daily/weekly summaries (needs an LLM key on the server)

Insights (everyone)

CommandEffect
statusConfiguration + today's progress (submitted / pending / away)
trendsLast 4 weeks: participation % and average mood
blockersOpen blockers with ids, age, who's tagged, and update counts
exportHow to download a CSV of submissions

Working a blocker together (everyone)

Blockers get an id (blockers shows them). Tag teammates to pull them in:

CommandEffect
blocker 12 tag @Asha @RohitTagged people get an interactive DM card (✋ Acknowledge · 📝 Add update · ✅ Resolve)
blocker 12 update <text>Post an update — DMed to the reporter and everyone tagged, and added to the blocker's thread in the space
blocker 12 resolveClose it (reporter, tagged people, or admins)

How collaboration changes the lifecycle:

  • Tagging makes it explicit-resolve. Untagged blockers still auto-resolve when the reporter's next standup is blocker-free; once a blocker is tagged or has updates, only an explicit resolve closes it — someone's clean standup can't silently end a conversation others are having.
  • Acknowledge stops the nudges. Tagged people get one DM per day (at run close) until they hit ✋ Acknowledge; posting an update acknowledges implicitly. The reporter is notified of every ack.
  • Everything is tracked. Updates and resolution land in a per-blocker thread in the team space, and open blockers keep appearing in wrap-ups, digests, and escalation pings until resolved.

DM self-service

Anyone can DM the bot directly:

MessageEffect
vacationPause prompts for yourself across all your standups
backResume prompts

Behavior notes

  • Editing: re-open Fill standup before the deadline to edit — the posted card updates in place and is marked edited.
  • Skip today: the prompt card has a 🏖️ Skip today button; skipped people are listed as away, not missing.
  • Pre-fill: the "yesterday" answer is pre-filled from your previous "today" answer.
  • Late submissions after the deadline still post, flagged late; the wrap-up isn't recalculated and late entries can no longer be edited.
  • Untagged blockers auto-resolve when the same person submits a blocker-free standup on a later day; tagged ones need an explicit blocker <id> resolve. With escalate @user configured, the contact gets one DM per blocker once it has been open past the threshold.
  • Calendar OOO (when enabled): participants with an Out of office event in Google Calendar are automatically marked away for that day's run. Emails are learned from Chat interactions, so this kicks in after a person has used the bot at least once.
  • Roster snapshots: the day's roster is frozen when the run opens; add/remove/vacation apply from the next run.
  • Custom questions apply from the next run. Questions containing the word "blocker" get blocker tracking; questions containing "yesterday"/"today" get pre-fill behavior.

Released under the MIT License.