Weekly Negotiator & Property Manager Unread Message Re-notification
Weekly Negotiator & Property Manager Unread Message Re-notification
Version introduced: v0.1.388
Workflow type: Escalation
Schedule: Daily at 10:00 UTC (0 10 * * *)
Overview
This workflow ensures that unread negotiation messages never go silently stale when the assigned negotiator is inactive. It complements the existing negotiation-unread-renotify workflow by adding an escalation path to branch managers when a negotiator-role agent has been offline for 48 hours and their thread has had no activity for more than 3 business days.
How It Works
The scheduled sweep runs once per day and performs the following checks in sequence:
Step 1 — Identify inactive negotiators with unread threads
The workflow queries org_members for agents with the negotiator role, then cross-references users to find those whose last login was more than 48 hours ago. From that set, it checks negotiation_threads and negotiation_messages to identify threads that have at least one unread message.
Step 2 — Measure thread silence in business days
For each qualifying thread, the workflow calculates how long the conversation has been silent by examining the most recent message timestamp in negotiation_messages. Silence is measured in business days (Monday–Friday, excluding public holidays), not calendar days.
Step 3 — Escalate to branch manager
If the silence window exceeds 3 business days, the workflow:
- Resolves the negotiator's branch via
branch_membersandbranch_properties. - Looks up the branch manager for that branch.
- Creates an escalation entry in
notificationsaddressed to the branch manager, including the thread reference and the number of business days elapsed.
Escalation Thresholds
| Condition | Threshold |
|---|---|
| Negotiator inactivity | Last login > 48 hours ago |
| Thread silence | > 3 business days without a new message |
Relationship to negotiation-unread-renotify
The pre-existing negotiation-unread-renotify workflow re-notifies any authenticated org user who has unread negotiation messages. It does not check inactivity and does not escalate to managers.
This new companion sweep is narrower and more targeted:
negotiation-unread-renotify | This workflow | |
|---|---|---|
| Target audience | All authenticated org users | Negotiator-role agents only |
| Inactivity check | No | Yes (48-hour threshold) |
| Escalation to manager | No | Yes (after 3 business days) |
| Business-day logic | No | Yes |
Both workflows run independently and can operate in parallel without producing duplicate notifications for the same thread.
Entities
negotiation_threads— Source of open negotiation threads to evaluate.negotiation_messages— Used to determine the last activity timestamp and unread status per thread.org_members— Filtered by negotiator role to find the target agent population.branch_members— Maps negotiators to their branch for manager lookup.branch_properties— Provides branch context used in escalation routing.users— Queried for last-login timestamps to assess inactivity.notifications— Receives the escalation records dispatched to branch managers.
Compliance Context
Under the Renters' Rights Act, timely communication during deposit negotiations is a compliance requirement. Unacknowledged messages in active negotiation threads can contribute to disputes and regulatory exposure. This workflow acts as a safety net to ensure no thread is inadvertently abandoned due to agent inactivity, surfacing the issue to branch management before it becomes a formal dispute.