Health and fitness/Plan inputs

A plan that fits the week the user just had.

Signals tells your plan builder what each user started, finished and stopped partway through this week, and when, so the next session is built for the week they had rather than the one the program assumed.

Higher workout completion

Get more workouts finished by building the next session from this week.

Workout completion moves when the next session fits what the user did in the last few. Signals gives your plan builder what each user started, finished and stopped partway through this week, how long each session ran, which days they trained and which types they chose. Your plan builder decides what the next session is.

Shorten the next session for a user who keeps stopping early

A user has started three sessions this week and finished none of them, each one stopped around the middle. The plan has a fourth session queued at the same length, and the report that would show the pattern arrives after the week is over. By then the fourth session has been served and stopped too. The right move is a shorter session, ready the next time this user opens the app.

What Signals knows
sessions_started_7d
Sessions started in the last seven days
sessions_finished_7d
Sessions finished in the last seven days
days_since_finish
Days since they last finished a session
What your plan builder does

Shortens the next session when three of this week's starts have no finish, and returns to the planned length once a finish comes through. Which exercises make up the shorter session stays with the plan builder.

plan-builder.ts · 13 lines
// In the service that builds the user's next session
const user = await signals.getServiceAttributes({
  name: "fit_plans_abandoned",
  attribute_key: "user_id",
  identifier: userId,
});
// { sessions_started_7d: 3, sessions_finished_7d: 0, days_since_finish: 9.4 }

const unfinished = user.sessions_started_7d - user.sessions_finished_7d;

if (unfinished >= 3) {
  planBuilder.next({ userId, length: "short" });
}

Try it on your own site.

Add the SDK, define one thing you want to know about a visitor, and watch it update while you click around. The free tier runs on the real engine: no card, no sales call.