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
| Property | Value |
|---|---|
| Schedule | Daily at 10:00 AM UTC |
| Cron expression | 0 10 * * * |
| Type | Escalation |
Escalation Criteria
A negotiation thread is considered stale and eligible for escalation when all of the following are true:
negotiation_threads.status = 'open'negotiation_threads.lastMessageAt < (today − 7 days)- A
deposit_releaserecord exists for the thread's tenancy and its status is not one of:releaseddisputed
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
adminorowner - 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
| Entity | Purpose |
|---|---|
negotiation_threads | Queried to find open, inactive threads |
deposit_releases | Checked to confirm the deposit is still in an actionable state |
tenancies | Links the thread to the tenancy and its property |
properties | Provides property context included in the notification |
org_members | Determines the recipients (admins and owners only) |
notifications | The 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
- Open the in-app notification to jump directly to the flagged negotiation thread.
- Review the thread history to understand where communication broke down.
- Send a follow-up message to the relevant parties (tenant, landlord, or agent) to re-engage.
- If the situation cannot be resolved through negotiation, consider raising a formal dispute via the deposit release record.
- If the deposit has already been settled outside the platform, update the deposit release status accordingly to prevent future escalation notifications for this thread.