I believe that if my app interrupts your day, it should have something useful to say.

“You haven’t opened me lately” doesn’t qualify. Neither does sending 5 notifications because you happen to have 5 goals. You installed an app to help you keep track of things, not to give you another reason to look at your phone.

In Accumoo, I use escalation-driven goal reminders to help users check their progress while there’s still time to do something about it. The interesting part isn’t getting a notification onto the screen. It’s deciding when the interruption is useful—and when the app should stay quiet.

Escalation with a reason

An Accumoo Event is an activity or something else you want to track. You can give it a goal and a Reset Period : for example, 3 walks per week. When that period ends, the count resets back to 0, in preparation for the following week.

A reminder schedule should complement a goal’s timeframe. An hourly goal leaves little room for reminders—5 in an hour isn’t helpful; it’s torture. For a monthly goal, however, occasional check-ins that gently increase in frequency as the deadline approaches can be helpful.

This is how escalation-driven reminders work. Reminders become more frequent as the reset approaches. They do not become more frequent because the user ignored the previous reminder.

For a monthly goal, the schedule looks like this before Quiet Hours adjustments:

Point in the month Reminder
Day 15 A mid-month check-in
Day 22 A reminder as the end of the month gets closer
Last 3 days A daily reminder before the reset

These are opportunities to check progress, not an unconditional reminder schedule. Notifications must be enabled, the monthly reminder setting must be on, and there must be an eligible goal to remind the user about.

Daily goals get a single reminder at the user’s chosen time. Weekly goals get a mid-week reminder and escalating reminders on the final 2 days. Yearly goals get a mid-year check-in, followed by monthly reminders. The escalation frequency is in proportion to the time available, rather than treating every goal as urgent from the start.

Knowing when to shut up

Escalation without restraint is just a more organized way to be annoying.

Accumoo groups eligible goals by reset period. If 5 daily goals need a reminder, users receive 1 daily reminder rather than 5 separate reminders. Weekly goals are grouped into weekly reminders, and monthly goals into monthly reminders, each following the schedule for its reset period.

The other boundaries matter just as much:

  • Goals already met for the current period don’t emit reminders. They can contribute again in the next period if the goal is not met.
  • Paused Events don’t contribute. Taking a break shouldn’t leave the reminders carrying on without you.
  • Users choose which reminder categories to enable. Daily reminders are scheduled once a day at the user’s chosen time, subject to Quiet Hours.
  • Quiet Hours prevent unwanted interruptions. Reminders wait until quiet hours end. If an hourly goal’s period has already ended by then, its reminder is skipped.

The app asks for notification permission when the user enables notifications, rather than putting the permission prompt in front of them at launch.

Users control which reminders they receive and when Accumoo should stay quiet. The scheduler’s job is to respect those choices and remind them only when there’s a relevant goal to act on.

The engineering behind the restraint

Accumoo delivers reminders through local notifications scheduled on the device. Once scheduled, they can be delivered without an internet connection. Delivery still depends on device settings and the operating system.

When progress or reminder settings change, Accumoo rebuilds the schedule. It also refreshes reminders after synchronization and when the app returns to the foreground. Several quick taps trigger one refresh, rather than a separate refresh for every tap.

Each device uses the information it has. If you meet a goal on your iPhone, an offline iPad may still have a reminder scheduled for it. The iPad needs to receive that progress through synchronization before it can update its reminders.

iOS also limits how many notifications an app can schedule. Accumoo divides the available slots among reminder categories. This prevents hourly reminders from taking all the space needed for weekly, monthly and yearly reminders.

Help is the motivation

I want Accumoo to help people accomplish their goals. Sometimes reminders are useful. Sometimes the most useful thing an app can do is leave users alone.

A deadline is a reason to reconsider the timing, not a license to keep interrupting. Escalation, grouped reminders, quiet hours and user controls are parts of the same decision: make the interruption worth it.

Whether a reminder helps still depends on the person receiving it. I can design the rules and test their behavior. I also need to listen when users tell me the balance is wrong.