Skip to content

Recurring asset reminders (auto-repeat on a cadence) #2659

Description

@carlosvirreira

The need

A lot of equipment upkeep is periodic: calibration cycles, safety inspections, preventive maintenance, warranty/lease renewals. These happen on a fixed cadence (e.g. every 12 months).

Right now a reminder fires once. So the moment a calibration/inspection reminder does its job, someone has to remember to manually create next cycle's reminder. That defeats the point — the thing you set a reminder to avoid forgetting is now the thing you have to remember to re-set. Over a year, across dozens of instruments, things slip.

User perspective

  • "As a lab manager, I want each instrument's annual calibration reminder to come back every year on its own, so an instrument never quietly goes out of date and gets used for real work."
  • "As an ops lead, I want to set a quarterly safety inspection reminder once and trust it keeps coming back — I shouldn't have to babysit it."
  • "When I recalibrate an instrument, I don't want to manually rebuild the next reminder; the cycle should just continue."

What success looks like (user POV)

  • I can set a reminder to repeat on a cadence I choose (e.g. yearly, monthly, every N weeks).
  • After one fires, the next one is already scheduled — I don't have to recreate it.
  • I can change the cadence or stop it, and edits behave sensibly.
  • The right people keep getting notified each cycle.

Current limitation (user-observable)

Reminders are one-time only; there's no "repeat" option, so periodic upkeep has to be recreated by hand each cycle.

Notes

  • I'm deliberately not prescribing the implementation — the best/most relevant approach is the team's call.
  • Out of scope for a first version (unless trivial): tiered escalation (e.g. 30/14/0/overdue), and auto-deriving the reminder date from a due-date field.

Context: surfaced while building calibration/maintenance content for the marketing site — it's the #1 gap blocking us from honestly positioning Shelf for calibration & preventive-maintenance use cases.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions