Your agent can ship a working engagement loop this week
The complete product model

Eleven primitives.
One coherent loop.

Events and Score are the always-on foundation. Add only the progress, competition, economy, and recognition mechanics your product actually needs.

2 always enabled9 opt-in5 user journeys
Composable by design

Start with facts.
Add mechanics deliberately.

Each primitive has one job and explicit connections to the others. The result is a product model your team and coding agent can reason about, review, and version.

01

Earn score

Choose which product actions matter and express what each action is worth.

Actions become score
Always enabled

Events

The actions users take

Immutable records such as completing a lesson, logging a workout, or making a purchase. Every other primitive derives from these facts.

Example
lesson.completed
Connects
Feeds scoring and conditions
Always enabled

Score

What each action is worth

Multipliers, bonuses, cooldowns, and daily caps define the behavior your product encourages without rewriting the event history.

Example
+10 · daily cap 3
Connects
Feeds progress and rank
02

Build progress

Turn score into visible momentum and give users a reason to return.

Score becomes progress
Opt-in

Scopes

Progress by area

Separate progress into meaningful categories such as a global score and a score for each subject, skill, team, or product area.

Example
global · mathematics
Connects
Segments score and boards
Opt-in

Levels

A climb users can see

Convert accumulated score into a tunable progression curve, with quick early momentum and later milestones that feel earned.

Example
base 100 · exponent 1.6
Connects
Derived from score
Opt-in

Streaks

Reward showing up

Track consecutive daily, weekly, or monthly periods using one qualifying event, any event in a set, or several required actions.

Example
daily practice · day 7
Connects
Derived from event periods
03

Create competition

Compare relevant progress over a fair period without forcing every user into one global race.

Progress becomes rank
Opt-in

Leaderboards

Show who is on top

Rank users by a scoped score over daily, weekly, monthly, or all-time windows, with cohorts that keep the comparison motivating.

Example
weekly · cohort · top 100
Connects
Reads score within a scope
04

Create an economy

Give users something to hold, save, and spend on useful product benefits.

Participation becomes choice
Opt-in

Balances

What users can hold

Create named pools such as coins, energy, hearts, or credits with their own starting value and optional holding limit.

Example
coins · maximum 5,000
Connects
Funded by grants
Opt-in

Store

What users can buy

Offer items, perks, or unlocks with a clear price, the balance they spend, and the benefit delivered after purchase.

Example
freeze-token · 250 coins
Connects
Spends a balance
05

Recognize success

Set meaningful goals and define exactly what completing them unlocks.

Milestones become rewards
Opt-in

Achievements

Permanent milestones

One-time recognition with a name, rarity tier, and event, score, category, boolean, or compound completion condition.

Example
first-week · gold
Connects
Evaluates a condition
Opt-in

Challenges

Time-boxed goals

Measurable daily, weekly, monthly, seasonal, or one-time objectives with difficulty and a defined completion target.

Example
weekly-lessons · 5
Connects
Completes into grants
Opt-in

Grants

What success unlocks

Reusable reward payloads that add score, credit a balance, deliver a store item, or unlock a product benefit.

Example
currency +50
Connects
Rewards achievements and challenges
The design rule

A primitive is a capability,
not a mandatory feature.

A habit app might use Streaks and Achievements. A learning product might add Scopes, Levels, and Leaderboards. A loyalty product can layer Balances, Store, Challenges, and Grants on the same event history.

See how the engagement loop works →

Build from the product you have

Let the agent choose the smallest useful set.

Streakline maps the journeys already present in your repository and proposes only the primitives that support them.