system-prompts-and-models-o.../salesflow-saas/backend/app/services/dealix_os/vertical_playbooks.py
Sami Assiri 07557c4be9 feat(dealix): GTM polish, CRM/AI APIs, launch verification hardening
- Add integrations CRM and AI routing APIs; Salesforce OAuth refresh; lead CRM metadata
- Marketer hub, settings CRM UI, OS views; premium landing and strategy_summary differentiators
- Docs: API-MAP, product guide, competitive matrix, launch simulation, AGENT-MAP LLM routing
- Sync script: strategy legal + competitive matrix to public; pytest DB isolation (.pytest_dealix.sqlite)
- Tests: CRM status and AI routing smoke; check_go_live_gate UTF-8 stdout on Windows
- Alembic migrations for strategic deal links and lead company/sector/city

Made-with: Cursor
2026-04-13 05:08:39 +03:00

62 lines
3.4 KiB
Python

"""
Vertical playbooks — sector defaults for ICP, channels, and governance hints.
طبقات إعداد قطاعية تغذي الوكلاء والواجهة دون تعديل كود لكل عميل.
"""
from typing import Any
VERTICAL_PLAYBOOKS: dict[str, dict[str, Any]] = {
"real_estate": {
"id": "real_estate",
"label_ar": "العقار والتطوير",
"label_en": "Real estate & development",
"icp_hints_ar": ["مطورون، وكلاء عقاريون، صناديق عقارية، إدارة أملاك"],
"primary_channels": ["whatsapp", "email"],
"objection_patterns_ar": ["العمولة", "حصرية الحي", "زمن البيع", "الترخيص"],
"approval_value_threshold_sar": 250_000,
"suggested_deal_types": ["channel_partnership", "referral_partnership", "co_marketing"],
"compliance_notes_ar": ["تأكد من إعلانات الهيئة العقارية عند الاقتضاء", "لا التزامات تسعير نهائي بدون موافقة"],
},
"healthcare": {
"id": "healthcare",
"label_ar": "الرعاية الصحية",
"label_en": "Healthcare",
"icp_hints_ar": ["مستشفيات، عيادات، موردو أجهزة، منصات صحية"],
"primary_channels": ["email", "in_person"],
"objection_patterns_ar": ["الترخيص SFDA", "خصوصية البيانات", "التكامل مع أنظمة المستشفى"],
"approval_value_threshold_sar": 100_000,
"suggested_deal_types": ["subcontracting", "white_label", "strategic_alliance"],
"compliance_notes_ar": ["قطاع حساس — افتراض موافقة بشرية قبل إرسال واتساب", "تجنب ادعاءات علاجية في المحتوى الآلي"],
},
"saas_b2b": {
"id": "saas_b2b",
"label_ar": "SaaS وB2B تقني",
"label_en": "B2B SaaS / technology",
"icp_hints_ar": ["شركات برمجيات، شركاء تكامل، موزعون، استشاريو تحول رقمي"],
"primary_channels": ["email", "linkedin", "whatsapp"],
"objection_patterns_ar": ["الأمان", "SLA", "التكامل", "التسعير حسب المقعد"],
"approval_value_threshold_sar": 150_000,
"suggested_deal_types": ["reseller", "co_selling", "white_label", "channel_partnership"],
"compliance_notes_ar": ["مراجعات DPA عند مشاركة بيانات عملاء"],
},
"professional_services": {
"id": "professional_services",
"label_ar": "الخدمات المهنية",
"label_en": "Professional services",
"icp_hints_ar": ["محاسبة، قانون، استشارات إدارية، تدريب"],
"primary_channels": ["email", "linkedin"],
"objection_patterns_ar": ["نطاق الخدمة", "الاستشاري المسؤول", "السرية المهنية"],
"approval_value_threshold_sar": 80_000,
"suggested_deal_types": ["referral_partnership", "co_selling", "capability_gap_fill"],
"compliance_notes_ar": ["لا تقديم استشارة قانونية/مالية كأمر تنفيذي آلي"],
},
}
def list_playbook_ids() -> list[str]:
return list(VERTICAL_PLAYBOOKS.keys())
def get_playbook(playbook_id: str) -> dict[str, Any] | None:
return VERTICAL_PLAYBOOKS.get(playbook_id)