# Financial-services × CRM — the INTERSECTION skill (a composition manifest, NOT a re-spec).
# It COMPOSES the base crm suite + the validated crm/overlays/finserv diff. The full mechanics
# live in the seven base skills; this contract only points at the additive overlay.
# Lives at skill/enterprise_software/crm/industries/finserv.skill.yaml.

id: crm/finserv
version: 1.0.0
summary: >-
  The CRM suite reshaped for wealth/advisory — households as the relationship unit, a referral network,
  AUM + KYC columns, a household/referral graph, and a MEDDIC scorer fronted by a deterministic KYC hard
  gate. Composes the base suite plus the finserv overlay; no fork.
module: crm
industry: finserv                  # NEW industry key — reuses the `finance` category chip
pillars: [sql, graph, models]

composes:
  suite: crm
  overlay: crm/overlays/finserv

# Published id = finserv-crm → route below (route wins over the derived page_url).
post: posts/enterprise_software/crm/industries/finserv.md
route: /library/finserv-crm

provides:
  tables_add: [households, referrals]            # + household_id/kyc_status/risk_rating on contacts, aum/client_since on accounts
  graph_edges_add: [member_of_household, referred_by]
  gate_change: "qualification-scoring defaults to MEDDIC + a DETERMINISTIC KYC hard gate (compliance_hold overrides score)"
  onto: [crm/core, crm/qualification-scoring, crm/account-360]

tested_branches:
  - overlay: finserv
    tested_at: 2026-09-02
    cites: crm/overlays/finserv
    live:
      - "ALTER contacts ADD household_id/kyc_status/risk_rating + accounts ADD aum/client_since; households + referrals created + seeded"
      - "KYC hard gate: Rory (score 0.88, kyc_status review) = compliance_hold (held despite the HIGHER score); Gwen (0.86, cleared) = qualified"
      - "household graph: Bolt MATCH (h)<-[:member_of_household]-(m) WHERE id(h)=200001 → 2 members (Rory, Gwen)"
