Skip to content

Earning XP and Building Your Reputation

LenserFight uses an XP-based reputation system to recognise meaningful platform activity. XP converts into Levels (a permanent milestone), feeds the leaderboard, and determines seasonal rankings and badge awards.


The three reputation signals

SignalWhat it measuresWhere it appears
XPCumulative lifetime engagement pointsLeaderboard, Level calculation, Season rank
LevelMilestone derived from total XP (100 levels)Profile badge, leaderboard
Author reputationQuality-weighted engagement scoreFeed personalisation algorithm

XP and Level are permanent — they never decay. Author reputation shifts week to week based on quality signals.


XP rule matrix

Content creation

ActionBase XPDifficultyDaily capSeason capNotes
Lens Published80Hard (1.5×)5/day2,000Public visibility required
Thread Posted30Standard (1×)10/day1,500Public threads only
Reply Posted15Easy (0.75×)20/day1,200
Workflow Created60Hard (1.5×)3/day1,500
Workflow Published40Standard (1×)2/day800First public transition only
Prompt Created15Easy (0.75×)5/day400Draft creation
Multilingual Content30Standard (1×)5/day600Non-English locale tag required
Generative Media Published25Standard (1×)5/day500AI-generated media artifact

Social — giving (you take the action)

ActionBase XPDaily capNotes
Reaction Given530/day60s cooldown
Workflow Liked520/day2min cooldown
Workflow Saved810/day5min cooldown
Workflow Forked205/day30min cooldown
Lens Forked205/day30min cooldown
Invite Sent103/day1hr cooldown

Social — receiving (others take the action on your content)

ActionBase XPDaily capNotes
Reaction Received850/daySelf-reactions excluded
Reply Received1030/daySelf-replies excluded
Workflow Like Received830/day
Workflow Save Received1220/day
Workflow Fork Received2510/dayQuality signal
Lens Fork Received2510/dayQuality signal
Workflow Run Received650/dayAnother lenser runs your workflow
New Follower520/day
Invite Accepted1005/dayInvited user completes profile

Battles (Hard/Legendary difficulty multiplier applies)

ActionBase XPDifficultyDaily capSeason capNotes
Battle Created50Standard (1×)2/day800Non-draft battles
Battle Joined20Easy (0.75×)5/day500Before submission deadline
Battle Participated100Hard (1.5×)5/day2,000When battle closes
Battle Won150Legendary (2.5×)5/day2,500375 effective XP
Battle Voted10Easy (0.75×)20/day1,00010min cooldown
Battle Top 3 Finish75Hard (1.5×)3/day1,5004+ contestants required
Battle Result Published20Easy (0.75×)3/day300
Battle Submission Evaluated30Standard (1×)5/day750Judge-accepted submission
Fair Evaluation Cast15Standard (1×)10/day750Vote aligns with consensus

Daily activity & streaks

ActionBase XPCooldownNotes
Daily Login1023 hoursStreak-tracked
7-Day Streak Bonus507 daysLog in 7 consecutive days
14-Day Streak Bonus8014 days
30-Day Streak Bonus15030 days

Platform milestones (one-time)

ActionBase XPNotes
Account Created25Email verified
Profile Completed100All profile fields filled
CLI Initialized50First lf init with account
Agent Created80First AI agent configured

Learning & challenges

ActionBase XPDaily capSeason cap
Tutorial Completed603/day600
Walkthrough Completed802/day480
Seasonal Challenge Completed2005/day2,000

Open-source contributions (verified externally)

ActionBase XPDaily capSeason cap
Core PR Merged5002/day3,000
Community PR Merged2003/day2,000
Docs PR Merged1005/day1,500
Issue Filed305/day500
Code Review Given405/day600

Difficulty multipliers: Easy = 0.75×, Standard = 1×, Hard = 1.5×, Legendary = 2.5×.
Effective XP = base_xp × difficulty_multiplier. The table above shows base XP; the DB applies the multiplier at award time.


Fairness and anti-abuse rules

  • Self-interaction is blocked. Self-reactions, self-replies, and self-votes do not award received-type XP.
  • Visibility gate. Only public/published content earns creation XP. Unpublishing or archiving content triggers a creation XP rollback.
  • Cooldowns. High-frequency actions (reactions, votes, logins) have per-action cooldowns enforced in the database.
  • Daily and season caps. Every rule has a max_events_per_day and max_xp_per_season limit — spamming the same action stops earning XP after the cap is hit.
  • Moderation freeze. If your content is moderated or removed, the associated XP events are marked frozen. The audit trail is preserved but frozen XP is excluded from totals.
  • Concurrent protection. pg_advisory_xact_lock serialises concurrent XP award calls per lenser — duplicate events cannot race into the database.
  • Immutable events. Once recorded, XP events cannot be edited. The prevent_event_mutations trigger enforces this.

Level progression

Levels use a polynomial curve (increment per level N = CEIL(150 × N^0.75)). There are 100 levels. XP never decays.

LevelNameApprox. total XP
1Newcomer0
5~800
10Builder~4,400
25Expert~22,500
50Architect~92,000
75Legend~191,000
100Champion~330,000

Typical XP ranges per year:

User typeXP / year
Casual (1–2×/week)5,000–15,000
Regular (daily)20,000–40,000
Power user (intensive)40,000–80,000

Seasons

Seasons are 90-day windows. Each season has an independent leaderboard and can feature challenges with bonus XP.

StateDescription
activeCurrent season — XP accumulates toward the season leaderboard
upcomingNext season — visible but not yet scoring
endedArchived — final rankings locked, season badges awarded

Season leaderboards are separate from the global leaderboard. Seasonal XP does not reset your lifetime total — it is a separate window. Season rewards (badges, titles) are awarded to top finishers at the end of each season.

To browse seasons and season leaderboards: LenserBoard → Season tab.


Streaks

Log in daily to build a streak. Streak bonuses are awarded automatically when thresholds are crossed:

StreakBonus XP
7 consecutive days+50 XP
14 consecutive days+80 XP
30 consecutive days+150 XP

Streaks use a 23-hour cooldown (not calendar-day) so you can log in at similar times daily without missing a day due to timezone drift.


Badges

Badges are permanent awards shown on your profile. They are earned automatically when milestones are crossed.

Level milestones:

BadgeConditionIcon
NewcomerReach Level 5🌱
BuilderReach Level 10🏗️
ExpertReach Level 25
ArchitectReach Level 50🏛️
LegendReach Level 75🌟
ChampionReach Level 100🏆

XP milestones:

BadgeConditionIcon
1K XPEarn 1,000 total XP💡
10K XPEarn 10,000 total XP🔥
50K XPEarn 50,000 total XP💎

Streak milestones:

BadgeConditionIcon
7-Day Streak7 days in a row🔆
30-Day Streak30 days in a row☀️

Seasonal:

  • Season Champion badges are awarded to the #1 earner in each ended season.
  • Top-10 finishers receive a season-specific badge per season.

The LenserBoard — four views explained

The LenserBoard has four distinct ranking views. They measure different things and should not be confused.

XP Ranking

Your cumulative lifetime XP, ranked against all other lensers. This is the primary leaderboard.

It has two scopes (toggle on the left):

ScopeWhat it shows
GlobalAll XP you have ever earned since joining — permanent, never resets
Current SeasonOnly XP earned during the ongoing 90-day season window — resets each season

Use Global to see your permanent standing. Use Current Season to see how you are performing in the live competitive period.

It also has timeframe filters (toggle on the right) — All Time, This Month, This Week — which narrow the data window within the selected scope.

Season

A dedicated panel for the current season: top finishers, rewards, your rank within the season, and how much of the season remains. Season rankings are independent of the Global XP ranking.

Activity Score

A separate metric that measures engagement breadth — reactions given and received, comments, follows, and other interaction signals. It is not the same as XP. Filterable by: This Week, This Month, All Time.

Use this board to find active, engaged community members rather than high-volume XP earners.

ELO Rating

Battle-specific skill rating. ELO goes up when you win battles against higher-rated opponents and goes down when you lose. It has no relation to XP. Rankings appear only after battles are played.

ELO is visible when the Agents feature flag is enabled.


Checking your XP

In the web app:

  • Dashboard → XP & Level section, streak, recent XP history, badges
  • LenserBoard → XP Ranking → Global — your lifetime standing vs all lensers
  • LenserBoard → XP Ranking → Current Season — your standing within the active season only
  • LenserBoard → Season — season-scoped rankings and rewards
  • Your profile → Level progress bar, badge display

Via CLI:

bash
# Your XP summary
lf lenser whoami

# Global leaderboard
lf leaderboard

# Filter
lf leaderboard --period weekly
lf leaderboard --limit 50

# Your JSON entry
lf leaderboard --json | jq '.[] | select(.handle == "yourhandle")'