Activity Health Score

Make drift visible early.

A privacy-first 0–100 community health score. AHS explains what moved the needle, so you can make small, fair adjustments before inactivity becomes a moderation headache.

Discord servers rarely “die” overnight

They drift: conversations concentrate into a few channels, regulars stop showing up on weekdays, and one quiet week turns into a month of churn—often before staff can clearly see what’s happening.

Activity Health Score (AHS) is CleanerBot’s privacy-first way to make that drift visible early. AHS gives your team a single 0–100 community health score plus a clear explanation of what changed.

What AHS is

AHS is a server-wide community health KPI computed from the last 7 days of observable activity signals. The result is a 0–100 score that is updated once per day (scheduled around 00:15 UTC).

The score is intentionally designed for week-over-week comparison within your own server, not for ranking servers against each other.

What AHS is not

  • Not a moderation trigger: AHS does not kick, warn, or change roles by itself.
  • Not content analysis: we don’t judge sentiment, topics, or “quality” of messages.
  • Not a vanity metric: it is built to resist spam and low-effort inflation.
  • Not surveillance analytics: we do not store message content or read private messages.

The six pillars behind the score

AHS is a weighted blend of six pillars. Each pillar answers a question staff actually needs to answer—without chasing raw message volume.

1) Breadth

“How many people show up?”
Measures how many managed members were active in the last 7 days, normalized by server-size cohort. Helps detect if a small core is carrying the server.

2) Intensity

“How much energy per active member?”
Reflects how strongly active members participate, using robust statistics (e.g., median AU per active member) so outliers don’t dominate.

3) Momentum

“Are we trending up or down?”
Compares the current 7-day window to the previous week. It’s your early-warning system and “did our change work?” confirmation.

4) Mix

“Is engagement diverse or fragile?”
Measures spread activity across categories (e.g., text, reactions, voice, threads, RSVPs). A healthier mix usually means a more resilient community.

5) Continuity

“Do we show up consistently?”
Tracks how many of the last 7 days had any qualifying activity. Makes “spike-and-silence” patterns visible and nudges towards stability.

6) Decay hygiene

“Are channels fresh?”
Incorporates freshness and dormancy patterns. Connects “community health” to maintainability: active communities feel maintained.

How AHS helps

AHS is designed to produce outcomes—not dashboards.

Catch dips early. Most inactivity drama starts with a gradual decline. Momentum and continuity reveal drift while you can still fix it with small actions.
Measure interventions safely. Events, onboarding tweaks, channel cleanup—AHS helps you see if they actually change the health pattern, not just the volume.
Turn “vibes” into a repeatable ritual. Instead of debating impressions, AHS gives your staff a shared language: band, trend, and the one pillar that moved.
Build trust through transparency. Publishing AHS can communicate that inactivity management is structured and fair—without exposing member-level data.

Fairness: Anti-gaming by design

A metric that can be gamed becomes meaningless. AHS is designed to reward healthy patterns (more unique people participating, consistency, diversity) instead of noise.

Deduping / Debouncing Reduces low-value repeats (e.g., rapid messages, typing bursts).
Per-member per-day caps Ensure no single user can dominate the score across event types.
Voice session rules Count meaningful participation and cap minutes, preventing “idle farming.”
Robust statistics Reduces outlier influence (e.g., median rather than max).

The practical result: you cannot “spam your way” to a healthy AHS.

Coverage

AHS reflects only activity in places CleanerBot can observe.

  • If CleanerBot can’t View Channel, activity there won’t count.
  • For voice signals, CleanerBot needs Connect permissions.
  • AHS surfaces a coverage indicator (OK / Partial / Low / Error).

Guardrails

AHS is intentionally fail-closed. We withhold the score if:

  • Too little meaningful activity (< 15 active members).
  • Coverage is too low (< 10%) to publish responsibly.
  • Setup is incomplete.

A missing score is not a bug. It is a guardrail.

Persona Aha Moments

🎮

Gaming/MMO guilds

“We’re not dead, we’re concentrated.”

Symptom: Chat busy, but raids slip.

AHS: Intensity okay, Breadth drops.

Fix: Add one low-friction ritual (LFG prompt).

🎭

Roleplay servers

“The RP is fine; structure is decaying.”

Symptom: Great sessions, confusing onboarding.

AHS: Mix narrows, Decay hygiene declines.

Fix: Consolidate stale spaces, clear entry path.

🎥

Creator/Subscriber

“Spikes hide weekday silence.”

Symptom: Peaks after streams, quiet otherwise.

AHS: Continuity drops, Intensity spikes.

Fix: Add one midweek prompt (poll/Q&A).

🎓

Education/Cohorts

“Top students are carrying the class.”

Symptom: Few active learners, most quiet.

AHS: Breadth declines.

Fix: Weekly check-in prompt + office hour.

💼

SaaS/Product

“Support is fine; community shrinking.”

Symptom: Tickets happen, engagement fades.

AHS: Mix collapses to one mode.

Fix: Archive dead spaces + one community touchpoint.

🛡️

Privacy-sensitive

“Measure health without exposing anyone.”

Symptom: Low tolerance for data tooling.

AHS: Uses aggregates only. Sharing optional.

Fix: Use AHS privately in staff channel.

Try it now (5 minutes)

  1. Run /score to view the current AHS and the main drivers.
  2. If score is missing, check the guardrail reason (thin data, coverage, setup).
  3. Open /score_settings to configure behavior (publish channel, sharing).
  4. Publish once using /score_publish (max once per day).
  5. If public sharing is enabled, use /score_link to get your web link.
  6. Need a baseline policy? Use the Inactivity Policy Template.
  7. See a live public example: AHS public page.

Weekly habit loop (10 minutes)

  1. Look at the band (Poor / Fair / Good / Excellent).
  2. Look at Momentum (up/down vs last week).
  3. Choose one pillar to improve this week.
  4. Run one small action aligned to that pillar.
  5. Re-check next week.

Tip: Improve breadth before chasing intensity.

Common misunderstandings

“Our server has lurkers, so AHS will always be low.”

Lurkers are normal. AHS is not trying to force everyone to talk. It helps you track whether participation is widening and whether the server stays alive across the week. Breadth and continuity are often more useful than message volume.

“We don’t want a public scoreboard.”

Perfect. AHS is staff-first. Publishing is optional, and public sharing can be enabled/disabled. Many servers keep AHS internal and still get huge value.

“When is there no score?”

Because AHS refuses to guess. If data is too thin, coverage is too low, or setup isn’t ready, it withholds a misleading number and points you to the next best step.

AHS is about a calm routine: check the trend, pick one lever, re-check next week.