Prevents reward inflation
Cooldowns, caps and rule criteria stop noisy events from flooding the economy.
warming the kiln…
Evaluation is the decision layer. It receives your domain events, checks cooldowns and criteria, then computes rewards before anything is applied.

Each primitive exists to support retention, clarity or trust. No decorative points system required.
Cooldowns, caps and rule criteria stop noisy events from flooding the economy.
Product teams can tune rewards without redeploying the app that emits events.
Each operation records which rules fired, which were skipped and why.
Product teams control the concept. Engineering sends events and embeds the result.
Your app sends lesson_completed, purchase_made or any event you define.
Hatched checks criteria, cooldowns, counters and user state.
The result commits under a user-scoped lock so state cannot race.
The useful part is not the label. It is the way evaluation turns product activity into a concrete state change users can understand.
{
"type": "lesson_completed",
"score": 92,
"duration_ms": 184000,
"skill": "pronunciation"
}Marketplace, evaluation, avatar, badges, skills, tokens, path and streaks share the same event and state model.