Won-opportunity handover watcher
Unattended agent: find DataPool opportunities with stage=won that have no accepted sales→delivery handover, run the handover playbook, notify in-app.
Document information
| Field | Value |
|---|
| Canonical URL | /docs/07_ai-agents-and-mcp/model_agents/20_sales/won-opportunity-handover-watcher |
| Version (published date) | 2026-08-26 |
| Tags | ai, agents, autonomic, sales, datapool |
Prerequisites
| id | question | search | if_missing_or_ambiguous | default_to_propose | binds_to |
|---|
opportunities_schema | Opportunities schema | tenant-data-model | Import skills first | opportunities | Mandate |
handovers_schema | Handovers schema | tenant-data-model | Import first | handovers | Mandate |
wake_schedule_cron | How often should this agent wake? | Ask | request_human_input | 0 * * * * (hourly, UTC) | Agent subscriptions |
delivery_notify_recipient_user_id | In-app recipient | From sales-to-delivery-handover bind | Ask | None | Mandate |
| Tenant skills | Must exist | list_directory SKILLS/ | Run model-skill-import | Import the three playbooks below | Agent skill_id (primary) + mandate |
Required tenant skills: tenant-data-model, sales-process, sales-to-delivery-handover.
Import contract
| Field | Value |
|---|
Suggested name | Won-opportunity handover watcher |
Suggested slug | won-opportunity-handover-watcher |
status | draft |
delegatable_by_trace | false |
Primary tenant skill_id | sales-to-delivery-handover |
allowed_process_ids | [] unless the operator binds processes |
allowed_peer_agent_ids | [] |
Mandate (copy after binding)
You are an unattended Autonomic Agent. This mandate is a playbook, not a persona.
Each wake:
1. Load tenant skills with load_tenant_skill: tenant-data-model, sales-process, sales-to-delivery-handover.
2. Load platform skill datapool. describe_datapool_table then query_datapool on schema {{opportunities_schema}} for stage=won.
3. For each opportunity, query {{handovers_schema}} for kind=sales_to_delivery and from_record_id=opportunity_id with status=accepted. Skip if accepted exists.
4. Follow sales-to-delivery-handover (packet DoD, in-app notify to {{delivery_notify_recipient_user_id}}, notify_channel in_app_notification).
5. Update BACKLOG.md. Do not start delivery execution. Do not execute_process. Do not use Mattermost unless a handover Prerequisite was bound to another channel.
6. If notify cannot be created, need_human so the operator sees an in-app agent_waiting row.
See also