The Rank System

Classification,
not competition.

Your Ascent rank is a weighted reflection of the last 90 days — with recent weeks carrying the most weight. You can recover from a bad start. You cannot fake a current performance.

Unranked
no threshold
No activity recorded yet. Start your first session.
Builder
≥ 15
rank score
Consistent output. Pattern forming.
Operator
≥ 35
rank score
Reliable execution. No filler days.
Executor
≥ 55
rank score
High output, high compliance. The standard.
Performer
≥ 70
rank score
Top-tier consistency. Decisions compound.
Elite
≥ 82
rank score
Sustained elite output. Near the ceiling.
Apex
≥ 92
rank score
Peak performance. Must be earned daily.
How It's Calculated

Your rank is derived from a weighted score across a 90-day cycle. Recent days dominate, but the full window counts. Compliance and hours both factor in — neither alone is sufficient.

Core Formula
// step 1 — daily score
effectiveHours = min(hoursWorked, 8)
hourFactor = (effectiveHours / 8)^1.5
dailyScore = hourFactor × complianceScore
// step 2 — time weight
weight = 0.5 ^ (daysSinceEntry / 30)
// step 3 — weighted average
rankScore = Σ(dailyScore × weight) / Σ(weight)
1
Log a session
Start the timer on any task. Your first logged session starts the 90-day cycle clock. Before that, no cycle is active.
2
Daily score is computed
Hours are capped at 8h, then scaled nonlinearly — (hours / 8)^1.5 — and multiplied by your compliance score for that day. Compliance is based on locked cycle rules only.
3
Time-weighted average is updated
Each daily score is weighted by how recent it is. Entries decay with a half-life of 30 days. The result: last month matters most, but the full 90 days still counts.
4
Consistency gate is applied
If fewer than 70% of the last 30 days had ≥2h logged, your rank score is halved. Consistency is measured on recent behavior, not full history.
5
Rank is assigned
Your weighted score maps to a rank. Apex has an additional hard gate: you must currently be averaging the required hours and compliance — no coasting on old scores.
Apex Hard Gate

Even if your weighted score reaches 92, Apex is only assigned if your last 14 days average ≥6h/day and ≥90% compliance. Below either threshold, you're placed at Elite.

This prevents gaming the system with strong early history and recent coasting. Apex is earned daily, not inherited.

Why It Works This Way

Every design decision was made deliberately. Here's the reasoning.

Weighted 90-day window
Memory with recency bias
Your full 90-day history counts, but recent weeks dominate. A bad start doesn't trap you — exponential decay lets you recover without erasing what you did.
Streaks
Binary and fragile
Streak systems collapse on one missed day. They create all-or-nothing psychology that triggers abandonment at the worst moment. That's a design flaw, not a motivation tool.
Compliance locked per cycle
Fair scoring
Rules you set mid-cycle don't change your current ranking score. Compliance is measured against the ruleset that was active when the cycle started — no retroactive punishment.
Leaderboards
External validation dependency
Leaderboards tie your sense of progress to other people's behavior. Ascent's system is self-referential — your rank only reflects you, not the distribution of everyone else.
Apex hard gate
Can't be inherited, only earned
Apex requires a current 14-day average of ≥6h and ≥90% compliance. Weighted history can get you close, but the gate confirms you're performing right now.
90-day cycle reset
Prevents stagnation
Every cycle starts fresh. You can't coast on a high rank forever. The reset forces re-qualification — but your history is preserved in analytics so no data is lost.
The 90-Day Cycle

The cycle timer starts on your first logged session — not on signup. Every 90 days after that, all ranking data resets and the next cycle begins on your next activity.

Compliance rules are snapshotted at cycle start. Any rules added mid-cycle only take effect in the next cycle. This keeps scoring consistent and fair across the full window.

Historical rank data is preserved in analytics. The reset affects only the live rank display and active cycle scoring.