Files
Qortal-Hub/docs/reticulum-group-score.md

3.9 KiB
Raw Permalink Blame History

Reticulum Group Score

Group Score is a public-group discovery signal shown in Reticulum Q-Chat. It is an integer from 0 to 100 that combines four independent signals. Private groups deliberately receive no score: their activity and membership context should not be exposed through public discovery.

Formula

Group Score = QORT Holdings × 50% + Activity × 30% + Community × 10% + Legacy × 10%

The weighted result is rounded and clamped to 0100.

QORT Holdings — 50%

Holding is normalized against a target of 1,000,000 QORT:

Holding Score = 100 × log(1 + balance) / log(1 + 1,000,000)

The score is capped at 100. A logarithmic curve was chosen instead of a linear one so a very large holder cannot flatten the useful differences between every other group. The 50% weight is an explicit product decision from the developer discussion.

Activity — 30%

Activity combines three seven-day/recent participation signals. Each component scales proportionally to its target and is capped at 100:

Activity Score =
  active authors over 7 days (target 50) × 50%
  + messages over 7 days (target 500) × 30%
  + messages over 24 hours (target 100) × 20%

One visible user post counts once. Active authors carry the most weight because participation breadth is harder to inflate than message volume; seven-day volume rewards sustained use; 24-hour volume adds recency without letting a short burst dominate. Activity contributes up to 30 points, making sustained participation the second-largest signal after QORT Holdings.

A successfully fetched activity directory that omits a public group is treated as zero activity. If the complete activity request fails, an existing valid snapshot is retained instead of replacing Activity with zeros.

Community — 10%

Member count maps to ten tiers, then to the shared scale as tier × 10:

Members Tier / score
010 1 / 10
1125 2 / 20
2650 3 / 30
5199 4 / 40
100249 5 / 50
250499 6 / 60
500999 7 / 70
1,0002,499 8 / 80
2,5004,999 9 / 90
5,000+ 10 / 100

Community contributes at most 10 points to the total. A group reaches 9/10 Community points at 2,500 members and the full 10/10 at 5,000 members.

Legacy — 10%

Legacy starts at zero and awards one total-score point for each completed year since the group was created. It caps at 10 points after ten completed years. This gives established groups modest recognition without preventing a new group from reaching 90/100 through QORT Holdings, Activity, and Community alone.

Refresh and persistence

Q-Chat starts score discovery when Reticulum Q-Chat loads, not only when Find Groups opens. A snapshot is stored locally and shared by invitation previews, About Group, and discovery.

  • Snapshots use six-hour slots based on Qortal network time, producing four scheduled refresh opportunities per day.
  • Cached score data may be reused for up to 24 hours when a later fetch is unavailable.
  • A newly encountered group can request an out-of-cycle refresh, with a five-minute cooldown.
  • Real activity data may replace an assumed zero within the same slot.
  • Holding data comes from /groups/balances?limit=0&reverse=true; Activity comes from the Reticulum public-group activity directory.

Display and discovery

Score colors are consistent anywhere Group Score appears:

  • 024: red
  • 2544: orange
  • 4564: yellow
  • 6594: green
  • 95100: Qortal blue

Find Groups uses deterministic tie-breakers so equal values do not jump unpredictably:

  • Top: Group Score, Activity, members, newest.
  • Active: Activity, active authors, seven-day posts, Group Score, members, newest.
  • Newest: creation time, then group ID.
  • Largest: members, Group Score, newest.

The implementation and constants live in src/components/Group/reticulumGroupScore.ts.