MD Reader Open in MD Reader

Challenges Message Spec

What this covers: the events that produce chat messages, the preset vocabulary each one loads, the rules that pick between them, and how many members respond. Applies to both bot replies and the user's composer — they draw from the same library.

What it doesn't: responder eligibility and self-exclusion, unchanged from bot-system-spec.md §6. The performance algorithm stays in bot-system-spec §4.

Status: Draft — for review


1. What changes

Presets move from one flat pool to eight event-typed buckets. A reply anchors to the event it responds to, and the composer loads the bucket for whatever is being replied to.

Distinct strings
Today — 8 composer presets + 9 bot presets, 5 shared 12
This spec — 8 buckets × 8, one shared library 64

The two pools merge: the composer and bot replies draw from the same library.


2. The seven events

# Event Fires when Posted by Bucket
01 week-start Monday, first active hour group open
02 member-joined live, on join group welcome
03 mid-week 20 waking hours with no medal, and points < target · max 1/day group availability
04 medal-earned every medal reveal member medal · routine or standout
05 half-target points cross target × 0.5 group momentum
06 close-to-goal points cross target × 0.9 group final push
07 goal-reached points ≥ target group victory

Once per week: 01, 05, 06, 07. Repeatable: 02 per join · 03 max once a day · 04 every medal.

try-request emits a system card but loads no vocabulary — it takes no reactions and no replies.

Any cap on medal-earned applies to the replies, not the cards.


3. Choosing a bucket

The bucket is decided by the event, never by the sender. Nothing picks from the whole library.

Person-directed vs group-directed

Anchors to Register
Person-directed a member's own action — medal-earned, member-joined second person; the anchor shows who, so a line never carries a name
Group-directed a group state card — week-start, mid-week, half-target, close-to-goal, goal-reached first person plural

Tier split on medals

medal-earned picks by medal: bronze and silver draw routine, gold and platinum draw standout.

State gate

open and availability lines do not fire once the target is crossed, evaluated at the reply's scheduled time rather than its parent's.

Threshold collisions

When one event crosses several thresholds, only the highest fires — a Platinum taking a group from 85 to 105 fires goal-reached, not close-to-goal. Same between 0.5 and 0.9.


4. The buckets

Eight lines each.

medal · routine — bronze / silver

🎉 Nice one · 👏 Well done · 🙌 Way to go · 👍 Solid · 💫 Nice work · 🤝 Good stuff · 😄 Love that · ⭐ On the board

medal · standout — gold / platinum

🔥 On fire · 🏆 Huge · 🧠 Big brain · 💪 Monster run · 🤯 Unreal · ⚡ Elite · 🚀 Carrying us · 👑 Top tier

welcomemember-joined

👋 Welcome! · 🎉 Glad you're here · 🙌 Welcome aboard · 😊 Hi there · 🤝 Good to have you · ✨ Welcome in · 🎊 Great to have you · 🙂 Hey!

openweek-start

🚀 Let's go · 💪 I'm in · ⚡ Ready · 📋 Locked in · 🎯 New week · 🔥 Here we go · 🙌 Fresh start · 🎮 Game on

availabilitymid-week

🎮 Playing tonight · ⏳ On it later · 🙋 Who's up? · 👀 Still here · 🕐 After work · 💤 Been busy · 🔜 Later today · 💪 Count me in

momentumhalf-target

🙌 Halfway · 📈 Right on pace · 👏 Nice work team · 🔥 Momentum · 💪 Keep it rolling · 🎯 On track · ⚡ Building · 🤝 Good pace

final pushclose-to-goal

🏁 So close · 💪 Final push · ⚡ Let's finish it · 🎮 Playing now · 🔥 Nearly there · 🎯 Almost · 🙌 One more · ⏰ Down to it

victorygoal-reached

🏆 We did it · 🎉 Champions · 🙌 Team effort · 💯 Nailed it · 🔥 Big week · 👏 Everyone turned up · 🎊 Got there · ⭐ Great week


5. Volume and timing

Each member makes two rolls per event, not three. First the reaction. Then the preset, against 0.45 if the reaction landed, 0.20 if it did not — one draw, two possible thresholds.

Event React Preset if reacted if not Expected reactions Expected presets
medal-earned · routine 0.32 0.45 0.20 2.6 2.2
medal-earned · standout 0.60 0.45 0.20 4.8 2.8
medal-earned · yours 0.60 aggregate 0.35 aggregate ≥1
week-start 0.28 0.45 0.20 2.5 2.4
member-joined 0.45 0.60 0.30 4.0 3.9
mid-week 0.18 0.40 0.15 1.6 1.8
half-target 0.33 0.45 0.20 3.0 2.5
close-to-goal 0.45 0.50 0.25 4.0 3.3
goal-reached 0.55 0.60 0.30 5.0 4.2

Medal and user-medal values are today's, carried over unchanged. The two medal tiers are weighted to average today's flat 0.40.

Delays. Reactions 5–60 min for every event. Presets 60–240 min on a medal, 5–60 min on a group card.

Standalone presets are removedstandalonePoissonMean goes from 1.4 to 0.

"chat": {
  "reactToMedalProb":          { "routine": 0.32, "standout": 0.60 },
  "presetGivenReaction":       0.45,
  "presetGivenNoReaction":     0.20,
  "reactionDelayMins":         [5, 60],
  "promptedPresetDelayMins":   [60, 240],
  "groupCardPresetDelayMins":  [5, 60],

  "reactToUserMedalAggregate":          0.60,
  "promptedPresetToUserMedalAggregate": 0.35,

  "standalonePoissonMean":     0,
  "presetCooldownSeconds":     120,

  "events": {
    "week-start":    { "react": 0.28, "presetYes": 0.45, "presetNo": 0.20 },
    "member-joined": { "react": 0.45, "presetYes": 0.60, "presetNo": 0.30 },
    "mid-week":      { "react": 0.18, "presetYes": 0.40, "presetNo": 0.15 },
    "half-target":   { "react": 0.33, "presetYes": 0.45, "presetNo": 0.20 },
    "close-to-goal": { "react": 0.45, "presetYes": 0.50, "presetNo": 0.25 },
    "goal-reached":  { "react": 0.55, "presetYes": 0.60, "presetNo": 0.30 }
  }
}

Responder eligibility, self-exclusion and the weighting that quietens members with no medal are unchanged from bot-system-spec §6.