PayMe Guide
PM GuideIntelligence

Deadline Nudges

How PayMe detects tasks approaching deadlines and sends proportional urgency alerts.

Deadline Nudges

PayMe watches for tasks where remaining work is on a collision course with the deadline. Urgency scales with task size — a 200h milestone gets a gentle weekly check-in; a 4h task due tomorrow gets a same-day alert.

Urgency levels

LevelConditionMessage tone
nonePlenty of slackNo nudge
morning-ofSmall task (≤4h), due tomorrow, fits in timeGentle reminder
weeklyLarge task (>100h), many days leftWeekly check-in
nowRemaining ≥ available hours before deadlineUrgent — act now
overdueDeadline passed, work remainsOverdue alert

Due modes

Nudge behaviour depends on the task's dueMode. The planner, absorption capacity, and nudge system all agree on these semantics:

ModePlannerAbsorptionNudge behaviour
autoSchedules normallyDoesn't lock capacitySkipped — system-computed, recalculates silently
softRespects date, no warningDoesn't lock capacityOverdue only — nudges if deadline passed, silent otherwise
hardWarns if can't fitLocks capacityFull urgency — all levels (morning-of, now, overdue, weekly)

Only hard deadlines generate proactive nudge alerts. Soft deadlines only surface when they're already overdue. Auto deadlines never nudge — they recalculate automatically.

Deadline collision detection

The system checks cumulatively: if you have 15h due Wednesday and 15h due Thursday, that's 30h across 3 days (24h capacity) — a collision.

Example collision:

Task A: 15h, due Wed
Task B: 15h, due Thu
Daily capacity: 8h

Cumulative by Wed: 15h needed, 16h available → OK
Cumulative by Thu: 30h needed, 24h available → COLLISION (6h short)

The collision nudge names the first deadline that can't be met.

Stuck task detection

A task is flagged as "stuck" when:

  • Open for more than max(3, expectedDays + 1) days
  • Less than 25% of the estimate has been logged

Tasks are excluded from stuck detection when:

  • Blocked by a dependency — a task with dependsOn pointing to an incomplete task is waiting, not stuck.
  • Unbroken allocation — a task whose name matches the project name is a budget placeholder, not a real work item. These are reported separately with a nudge to break them down into specific tasks.

Stuck task alerts fire Mon–Fri at 10:00 AM via the stuck-task-check Trigger.dev job.

On this page