Two things that bugs me about this kind of services on chess, first is AI, how do you tackle or track players who would win with the help of bots? second, do you also notice advanced players who would downgrade their Elo just to win against low skilled players, and earn through multiple winning streaks with low efforts. However, great effort, I'd look through this soon.
Both are the right questions to ask about an earn-only chess platform - and the two failure modes most projects in this space don't survive.
Engine assistance. Three detection layers with an economic backstop. First, statistical engine-correlation against top-3 moves of multiple reference engines (Stockfish, Leela, others), weighted by position difficulty and benchmarked against the expected distribution for the player's rating band - flagged for manual review, not auto-ban. Second, behavioral timing analysis: human deliberation is uneven; engines are structurally even. Third, asymmetric reward weighting - rated human games and tournament play pay materially more than free play, so pure scripted farming is economically unattractive before detection runs at all. None of this is bulletproof against a determined adversary, but it's calibrated to make engine-assisted farming worse than just playing chess elsewhere.
Sandbagging. aioc explicitly surfaced this a few posts ago: "I don't want to match against stronger players because I'm protecting my rating and I want to keep accumulating GAMBIT." That's exactly the failure mode. The response shipped this week: per-game GAMBIT rewards now scale with the level being played at. Level 1 pays 5 GAMBIT per win, Level 5 pays 14, Level 10 pays 50. Staying low to accumulate isn't profitable anymore - climbing to your real level is. Progression is automatic too: wins promote, losses demote, so sustained sandbagging requires sustained deliberate losing, which doesn't pay either.
Neither problem is fully solved - this is an ongoing engineering surface. But both are first-class concerns rather than afterthoughts, and the build cadence aioc's post triggered is the kind I'm trying to maintain across the project.
Thanks for asking the right questions, not the easy ones

Daniel