Skip to main content

/program โ€” Discord Budget Controller

Set a weekly RSNC burn target and let the system auto-tune per-event payouts to stay within band. No more hand-tuning per-event amounts. Pick categories, pick a budget, go.

Different from the Partner Portal Program Wizard (web Dashboard โ†’ Reward โ†’ Create Program), which generates a full event+perk template. /program runs entirely from Discord and controls the live emission rate.

What it doesโ€‹

  1. You set a weekly RSNC budget with a tolerance band (default ยฑ10%)
  2. You set the events vs bounty split (default 50/50)
  3. You set category weights across 5 buckets (Conversation, Voice, Daily, Quality, Onchain)
  4. The system computes per-event payouts in real time. As the week progresses, if emission gets too high, payouts are dampened. If a category is disabled (weight=0), events in it pay zero.
  5. Every 8 hours (00, 08, 16 UTC) a compact pulse posts to your admin channel with current pace + projection

The controller is dampen-only. It never raises payouts above the formula nominal โ€” that prevents coordinated dormancy from gaming the rate. Underrun = less burn that week, no carry-over.

Subcommandsโ€‹

CommandPermissionWhat it does
/program setupFull Admin2-step wizard: budget/tolerance/split โ†’ category weights
/program showEvent Manager+Read-only embed with current config + week-to-date pace
/program migrateFull AdminAuto-classify last 30d of activity into a starter config
/program advancedFull AdminSwitch to advanced mode (controller OFF โ€” use /event for surgical tuning)
/program disableFull AdminDisable the program (controller OFF โ€” falls back to legacy monitoring rules)

The setup wizardโ€‹

  1. Run /program setup
  2. Step 1 modal:
    • Weekly RSNC Budget โ€” total emission target (e.g. 25000 = ~25k/wk)
    • Tolerance Band (%) โ€” how much variance before the controller dampens (default 10)
    • Events vs Bounty Split (%) โ€” % to per-event payouts. Rest goes to weekly bounty (default 50)
  3. Click Configure categories โ†’ on the confirmation message
  4. Step 2 modal:
    • Conversation weight (chat, replies, threads, reactions)
    • Voice weight (voice channel, stage attendance)
    • Daily ritual weight (gm, daily streak)
    • Quality content weight (AI-flagged posts)
    • Onchain weight (purchases, perk mints, votes)
    • Set any to 0 to disable the category. Weights auto-normalize to 100%.
  5. Submit โ€” config saves and /program show runs immediately to confirm

Discord forbids modal-to-modal chaining, so step 2 opens via a button click between modals. This is the supported pattern.

Reading the controller multiplierโ€‹

/program show displays a controller ร—N.NN value:

  • ร—1.00 โ€” at or under today's adaptive target, no dampening
  • ร—0.05 โ€” at or beyond the upper-band ceiling, soft floor (lowest payouts can drop to)
  • Anywhere between โ€” log-curve dampening based on how far over today's target the brand is

Today's target is adaptive (mig 101, 2026-05-13): target_today = (events_pool โˆ’ week_to_date_actual) รท days_remaining_in_week. Under-spent days earlier in the week raise today's target; over-spent days lower it. The brand's full weekly budget always gets paid out โ€” distribution self-corrects.

Daily clamp fires when 24h rolling emission exceeds daily_clamp_rsnc regardless of weekly position. The clamp is a burst-protection backstop, not the primary signal. Recommended sizing: clamp โ‰ˆ 1.75ร— daily target โ€” so it stays out of the way on normal days but catches real bursts. Example: 1M weekly ร— 0.80 events_share = 114k daily target โ†’ recommended clamp โ‰ˆ 200k. A clamp set BELOW the daily target will fire on every on-pace day โ€” self-defeating; raise it.

The floor is 0.05 โ€” never zero. Members always earn something, just less when the brand is over budget. When raising/lowering weekly_budget, also re-check daily_clamp_rsnc so it remains a backstop, not a structural pinch.

Sizing your weekly budgetโ€‹

A common pitfall is setting a low budget while members hold high-multiplier perks. A user with Amplifier Mythic + Tune Awakening 5 might compute a 2,000+ RSNC effective reward. If 50 such users are active in a 100k/wk brand, the controller pinches heavily by Tuesday and members feel cheated.

Plan your budget around the multiplier-stacked top decile, not the median user.

Brand stageWeekly budgetDaily clampPacing behavior
Testing (1โ€“50 active users)50kโ€“100k20kMostly 1.0ร— early week, pinches by Friday
Growth (100โ€“500 active)250kโ€“500k80kSmoothly self-regulates
Mature (500+ active)750k+200k+Light pinch on peak days, full pay on slow days

If you want to raise the daily clamp without raising the weekly budget, ask in the partner channel โ€” there's no slash command for it yet.

Communicating with your communityโ€‹

When pacing kicks in, members see lower per-event RSNC and often think their multipliers broke. They didn't โ€” pacing is the limiter. To pre-empt confusion:

  • Pin the user-facing pacing explanation in your community: Why Reward Amounts Vary
  • Announce budget changes โ€” increases relax pacing visibly within an hour
  • Avoid promising fixed RSNC amounts for activities; describe rewards as "base + your multipliers, scaled by current budget headroom"
  • Highlight that multipliers compound across weeks โ€” the value users build via Tune-In and Gear pays back over the long run, even when individual rewards are pinched

If you change your weekly budget mid-week and pacing doesn't appear to update, run /program show to confirm โ€” if it still shows the pinched value, contact the partner channel (this can happen if the audit log path drops the edit silently).

Pacing pulse (auto-posted to admin channel)โ€‹

Every 8 hours (00 / 08 / 16 UTC), an embed posts to your notification_channel_id with one line of pace info:

โšก Pacing pulse ยท Your Brand
Day 4 of 7 ยท on pace ยท 14,200 / 25,000 RSNC (57%)
controller: ร—0.97 ยท projected close: 24,800 ยท band: 22,500โ€“27,500

If you don't see the pulse: run /config notification-channel #your-admin-channel.

When to use which modeโ€‹

  • simple โ€” most brands. Budget + categories + done. Controller manages emission.
  • advanced โ€” you want surgical per-event control via /event and don't want the controller dampening. Same as the pre-Phase-3 behavior. Choose this if you've spent time hand-tuning every reward and don't want it touched.
  • disabled โ€” explicitly off. Same as no /program at all. Falls back to legacy monitoring rules. Use to fully retire the controller for a brand without removing the config.

Migration from advanced/legacyโ€‹

If you've been hand-tuning events with /event create and want to try the controller:

  1. Run /program migrate โ€” it reads your last 30 days of completed rewards and proposes:
    • A weekly budget (avg of last 4 weeks)
    • Category weights inferred from your historical mix
  2. Review the proposal โ€” it's read-only, no commitment
  3. If you like it, run /program setup and enter the proposed values (or adjust)
  4. To go back: /program advanced returns control to /event

When you create a social_link reward via /event, you can now require keywords. Without them, any tweet from a linked X account pays out โ€” even unrelated content. Set keywords in the rule config (e.g. soneium, rsnc, resonance) and the bot will only reward tweets where the surrounding Discord message contains at least one of them. Backward-compatible โ€” rules without keywords stay permissive.