[Backlog] Post-session 'stars & wishes' player feedback #122

Open
opened 2026-07-14 19:55:33 +00:00 by claude-bot · 0 comments
Contributor

Context / Motivation

Research/product brief. GMs rarely get structured feedback; "stars & wishes" (a star = something you appreciated, a wish = something you want more of) is the lightest-weight format that works. Quest Board already knows when a session ends: the Beat task auto_complete_sessions (webapp/backend/app/tasks/reminder_tasks.py:1145, transitions in_progress → completed at :1188-1205) fires send_session_completed to the bot on completion (:1230). That completion hook is the natural trigger.

Spec (starting sketch)

  • SessionFeedback: session_id, user_id, star (Text), wish (Text), created_at; unique per (session, user). Exactly two free-text fields — no rating scales, ever (scales turn feedback into scores and kill candor).
  • Prompt delivery: on session completion, prompt attending players — either a bot DM ("How was tonight? One star, one wish") with a modal, or a dismissible banner on their next web visit (session/dashboard). Web banner is the safe default; bot DM only if the campaign opts in (see open questions).
  • GM digest: session page section visible to GM listing stars/wishes once submitted; campaign setting feedback_attribution: attributed (default) | anonymous (schema keeps user_id for dedupe but the GM serializer omits it — document that this is presentation-level anonymity, unlike the safety-tools issue).
  • Later (not this issue): per-campaign trends view (word themes over time).

Out of scope

  • Ratings, scores, or aggregate dashboards.
  • Feedback on other players.
  • Reminder nagging (one prompt, no follow-ups).

Open questions

  • DM fatigue: should the bot DM path exist at all, or only when the campaign explicitly opts in? Leaning opt-in-only with web banner default.
  • Should feedback close after N days to keep digests session-fresh?
  • Does the GM see partial submissions (star only)?

Acceptance criteria (for when this is pulled)

  • Completion of a session with attendance triggers exactly one prompt per attending player via the configured channel.
  • GM digest shows submissions per the attribution setting; anonymous mode leaks no user id in API responses.
  • Players who didn't attend are not prompted.

References

  • webapp/backend/app/tasks/reminder_tasks.py:1145 (auto_complete_sessions), :1230 (send_session_completed dispatch)
  • webapp/backend/app/models/session_attendance.py (who to prompt)
  • bot/questboard_bot/cogs/notifications.py (bot event handling for a DM prompt)

Filed from the July 2026 full-project review.

## Context / Motivation Research/product brief. GMs rarely get structured feedback; "stars & wishes" (a star = something you appreciated, a wish = something you want more of) is the lightest-weight format that works. Quest Board already knows when a session ends: the Beat task `auto_complete_sessions` (`webapp/backend/app/tasks/reminder_tasks.py:1145`, transitions `in_progress → completed` at `:1188-1205`) fires `send_session_completed` to the bot on completion (`:1230`). That completion hook is the natural trigger. ## Spec (starting sketch) - `SessionFeedback`: `session_id`, `user_id`, `star` (Text), `wish` (Text), `created_at`; unique per (session, user). **Exactly two free-text fields — no rating scales, ever** (scales turn feedback into scores and kill candor). - **Prompt delivery**: on session completion, prompt attending players — either a bot DM ("How was tonight? One star, one wish") with a modal, or a dismissible banner on their next web visit (session/dashboard). Web banner is the safe default; bot DM only if the campaign opts in (see open questions). - **GM digest**: session page section visible to GM listing stars/wishes once submitted; campaign setting `feedback_attribution`: `attributed` (default) | `anonymous` (schema keeps `user_id` for dedupe but the GM serializer omits it — document that this is presentation-level anonymity, unlike the safety-tools issue). - **Later** (not this issue): per-campaign trends view (word themes over time). ## Out of scope - Ratings, scores, or aggregate dashboards. - Feedback on other players. - Reminder nagging (one prompt, no follow-ups). ## Open questions - **DM fatigue**: should the bot DM path exist at all, or only when the campaign explicitly opts in? Leaning opt-in-only with web banner default. - Should feedback close after N days to keep digests session-fresh? - Does the GM see partial submissions (star only)? ## Acceptance criteria (for when this is pulled) - Completion of a session with attendance triggers exactly one prompt per attending player via the configured channel. - GM digest shows submissions per the attribution setting; anonymous mode leaks no user id in API responses. - Players who didn't attend are not prompted. ## References - `webapp/backend/app/tasks/reminder_tasks.py:1145` (`auto_complete_sessions`), `:1230` (`send_session_completed` dispatch) - `webapp/backend/app/models/session_attendance.py` (who to prompt) - `bot/questboard_bot/cogs/notifications.py` (bot event handling for a DM prompt) _Filed from the July 2026 full-project review._
claude-bot changed title from [Backlog] Post-session 'stars & wishes' player feedback to [Backlog] Post-session 'stars & wishes' player feedback 2026-07-14 19:55:43 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/Quest-Board#122
No description provided.