Marketing to sales handover

Packet, acceptance, and in-app notify when a lead is sales-ready. Not “tell Sales”.

Document information
FieldValue
Canonical URL/docs/07_ai-agents-and-mcp/model_skills/50_handovers/marketing-to-sales-handover
Version (published date)2026-08-26
Tagsai, skills, handover, notifications, datapool

Kind

Handover.

Depends on

tenant-data-model, marketing-lead-qualification.

Prerequisites

idquestionsearchif_missing_or_ambiguousdefault_to_proposebinds_to
handovers_schemaDataPool handovers schematenant-data-modelImport firsthandoversTenant SKILL.md
leads_schemaDataPool leads schematenant-data-modelImport firstleadsTenant SKILL.md
sales_notify_channelNotify channelPrefer in-app; do not assume MattermostChoice: in-app (default) or operator-named alternativein_app_notificationTenant SKILL.md
sales_notify_recipient_user_idWhich tenant user receives the in-app notification?entity_search / askrequest_human_inputNoneTenant SKILL.md

Import contract

FieldValue
suggested_skill_idmarketing-to-sales-handover
version1.0.0
capabilities.toolsdescribe_datapool_table, query_datapool, insert_datapool_rows, update_datapool_rows, list_notifications, request_human_input

Packet DoD (generic B2B)

Required in packet_json before status=proposed:

  • lead_id, company_name
  • qualification outcome (sales_ready)
  • contact (contact_email or contact_name)
  • source

Acceptance: Sales owner sets status=accepted and to_record_id (new or existing opportunity id). SLA to acknowledge: same calendar day unless the operator binds otherwise at import (optional note in SKILL.md).

Notify: Default in_app_notification to {{sales_notify_recipient_user_id}}. Title/body must include company name and lead_id. If no create-notification tool is in tools_active, set notify_status=pending on the handover row and surface to the current operator (Trace final answer) or Autonomic Agent need_human (platform in-app agent_waiting). Do not switch to Mattermost.

Tenant SKILL.md (copy this body)

# Marketing to sales handover

Write handovers to DataPool schema `{{handovers_schema}}`. Source leads: `{{leads_schema}}`.

Notify channel: `{{sales_notify_channel}}`. Recipient user id: `{{sales_notify_recipient_user_id}}`.

Load `datapool` and `notifications`. Load tenant skills `tenant-data-model` and `marketing-lead-qualification`.

## Sequence

1. Confirm lead `status=sales_ready` (qualification playbook).
2. Insert handover `kind=marketing_to_sales`, `from_record_id=lead_id`, `packet_json` with DoD fields, `status=proposed`, notify fields bound above.
3. Notify in-app to the bound user. If create is unavailable, `notify_status=pending` and `need_human` / tell the operator. Never assume Mattermost.
4. On accept: `status=accepted`, `accepted_at`, `to_record_id`. Do not mark the lead won.

## Stop

- Do not handover a `disqualified` or `new` lead.
- Do not invent a recipient user id.

Optional skill.json

{
  "name": "marketing-to-sales-handover",
  "version": "1.0.0",
  "description": "Sales-ready lead packet, in-app notify, and acceptance on DataPool handovers.",
  "capabilities": {
    "prompt": ["Default notify is in-app. Packet DoD before proposed."],
    "resources": [],
    "tools": [
      "describe_datapool_table",
      "query_datapool",
      "insert_datapool_rows",
      "update_datapool_rows",
      "list_notifications",
      "request_human_input"
    ]
  }
}

See also