“Daily feedback that pushes you forward” is how the AI coaching apps
describe themselves. PaceStreak’s version is GET /v1/coach/today, and
every note it returns comes from a rule you could write on an index card:
- A streak with more sessions needed than days left: “Main needs you today.”
- Five or more days since the last session: “Something short counts.”
- A morning check-in with sleep or energy at 2 or below, or soreness at 4 or above: “Go easy.”
- Habits at risk this week, counted but never named, because Today can sit on a screen someone glances at.
- Yesterday’s protein under 80% of your target, or calories well over or under it, with under-eating getting the same calm tone as over-eating.
At most four notes, ranked so “do this today” comes before “well done”.
Not saying things twice
The app already had a coach of its own: Today’s cards, built on the device, covering at-risk streaks, comebacks, repairs and plan days, with buttons that act on them. Showing the server’s streak notes as well would have said everything twice.
So the app takes only the food notes from the server. Those are what the device couldn’t see. The server endpoint still returns the full set, which keeps it useful for anything that isn’t this app, like a notification or a future watch face, without the app repeating itself.
Why rules
A rule can be wrong, but it’s wrong the same way every time, and the fix is a line in a test. A generated paragraph can be wrong in a new way every morning. For something that speaks to you daily, boring and predictable is the feature.
AlzyWelzy
Building PaceStreak. GitHub
Related
Security & PrivacyNotification buttons without a session
A habit reminder now has Done and Snooze buttons. The service worker that handles them has no access token, by design, so each button carries a signed, single-purpose link instead.
2 min
ProductAn undo that is a restore
Every delete in PaceStreak now offers Undo, backed by a 30-day trash on the server. Why the trash stores generic snapshots, keeps original ids, and refuses a restore that would clash.
2 min
ProductA routine is only an order
Habit routines and the focus timer shipped without touching the streak engine. Why a routine stores nothing but a list of ids, and why the timer stores a start time instead of counting.
2 min