All Docs
FeaturesDepositClearUpdated March 13, 2026

Negotiation Thread Stale Escalation

Negotiation Thread Stale Escalation

Overview

The Negotiation Thread Stale Escalation workflow is a scheduled automation that runs every day at 10:00 AM UTC. It identifies open negotiation threads that have gone inactive for more than seven days — where a deposit release is still pending — and notifies org admins and owners in-app so they can intervene before a thread becomes a formal dispute.

Why This Exists

Negotiation threads can stall for many reasons: a tenant stops responding, an agent forgets to follow up, or both parties are waiting on the other to act. Without a prompt, these threads can sit idle for weeks while the deposit remains unresolved. This workflow closes that gap by surfacing stale threads to the people in the organisation who have the authority to take action.

Trigger

PropertyValue
ScheduleDaily at 10:00 AM UTC
Cron expression0 10 * * *
TypeEscalation

Escalation Criteria

A negotiation thread is considered stale and eligible for escalation when all of the following are true:

  1. negotiation_threads.status = 'open'
  2. negotiation_threads.lastMessageAt < (today − 7 days)
  3. A deposit_release record exists for the thread's tenancy and its status is not one of:
    • released
    • disputed

Threads already resolved (released) or already escalated to formal dispute (disputed) are excluded — notifications are only generated where a follow-up could still make a difference.

Notification Behaviour

  • Channel: In-app notification
  • Recipients: All members of the relevant organisation with the role admin or owner
  • Message: Alerts the recipient that a specific negotiation thread has gone quiet and may need follow-up
  • Frequency: Once per matching thread per daily sweep (no repeated flooding for the same thread on subsequent days unless the logic re-qualifies it)

Note: This release generates in-app notifications only. Email and SMS delivery are not included in v0.1.260.

Entities

EntityPurpose
negotiation_threadsQueried to find open, inactive threads
deposit_releasesChecked to confirm the deposit is still in an actionable state
tenanciesLinks the thread to the tenancy and its property
propertiesProvides property context included in the notification
org_membersDetermines the recipients (admins and owners only)
notificationsThe in-app notifications are written to this entity

Workflow Diagram

[10:00 AM UTC daily]
        │
        ▼
Query negotiation_threads
  WHERE status = 'open'
    AND lastMessageAt < today - 7 days
        │
        ▼
Join deposit_releases via tenancy
  WHERE status NOT IN ('released', 'disputed')
        │
        ▼
For each matching thread:
  Look up org_members (admin + owner roles)
        │
        ▼
  Create in-app notification
  → "Negotiation thread has gone quiet — follow-up may be needed"

How to Act on a Stale Escalation Notification

  1. Open the in-app notification to jump directly to the flagged negotiation thread.
  2. Review the thread history to understand where communication broke down.
  3. Send a follow-up message to the relevant parties (tenant, landlord, or agent) to re-engage.
  4. If the situation cannot be resolved through negotiation, consider raising a formal dispute via the deposit release record.
  5. If the deposit has already been settled outside the platform, update the deposit release status accordingly to prevent future escalation notifications for this thread.

Related