Skip to main content

Notifications

I send three kinds of notifications, all driven by an hourly cron. None of them are marketing. All of them are tied to your study state.

The three core notifications

Today's plan — 8am local

At your local 8am, I regenerate your daily plan and send a notification titled "ARIA's plan for today" with the body "Your personalized study focus is ready. Open the app to see it."

This is the start-of-day prompt. The actual task on the card is selected by the priority engine described in Task types, but the plan also includes the wider context — readiness movement overnight, error backlog status, what's coming this week.

Streak warning — 8pm local

At your local 8pm, if you have zero completed sessions for the day, I send a notification titled "Your streak breaks at midnight" with the body "Open the app and finish a session — even a quick micro counts."

This is the only nag I send. If you've already done a session today, you don't get it. If you've done nothing, you get one push, four hours before the cutoff.

A micro session is enough to keep the streak. But remember — the streak only counts roadmap-required tasks. A free-play micro won't save it. The wording in the notification is intentionally a little loose because in practice users who open the app at 8pm finish today's roadmap task, which is what the system actually rewards.

Pass-prediction milestone — 9am local, one-time

The first hour after your pass_probability crosses 50%, I send a notification titled "You crossed the 50% line" with the body "Pass probability is now X%. The path ahead is clear — keep the pace."

This fires exactly once per certification — there's a check against the notifications table to make sure you don't get it twice. If your pass probability later climbs to 70% or 80%, I won't ping you again. The 50% line is the meaningful one because it's where the trajectory changes from "uncertain" to "achievable."

Other notification types

These exist as toggles in your settings even though they're not the daily-jobs cron's primary outputs:

  • Readiness updates — a digest of significant readiness movement.
  • Cohort updates — when someone in your cohort posts an activity that involves you.
  • Gauntlet unlocks — fired the moment your readiness crosses 80%.

Each of these has its own toggle in Profile → Settings.

Quiet hours

I won't send any notification during your quiet hours window, regardless of which type fired.

You set quiet hours in Profile → Settings → Study preferences. The window is stored as minutes-from-midnight in your local timezone and can wrap past midnight (e.g. 22:00–07:00).

If a notification fires during quiet hours, it's dropped, not queued. The 8am daily plan and the 8pm streak warning are the most common collisions — set your quiet hours intentionally so you don't silence the ones you actually want.

Per-type toggles

Every notification type has an on/off toggle. The defaults are:

TypeDefault
streak_warningOn
daily_planOn
readiness_updateOn
cohort_updateOn
pass_predictionOn
gauntlet_unlockOn

Toggle them off the moment they stop being useful. The system doesn't punish you for muting — but it also won't catch you when your streak is about to break.

Reminder cadence

In Profile → Settings → Study preferences you can also set how often I'll prompt you outside the standard windows:

  • daily — default. Every study day.
  • 3x_weekly — three nudges per week instead of seven.
  • weekly — one digest a week.
  • none — I don't ping you outside the streak warning and the pass-prediction milestone.

Channel

Push notifications require notification permission on iOS, Android, or your browser. If you haven't granted it, the notifications still queue server-side but you won't see them on your device. The app will surface a banner on your dashboard the first time it detects this state.

Email notifications are reserved for transactional events (purchase receipts, security alerts, password resets) — not study reminders. If you want to be reminded by email, that's coming, but it's not the channel today.