system-prompts-and-models-o.../dealix/auto_client_acquisition/service_tower/vertical_service_map.py
Dealix Builder 84f1ad9620 feat(launch+revenue): Private Beta Launch Ops + Revenue Launch — 14 modules + 29 endpoints + 56 tests + scripts/landing/docs
Launch Ops (5 modules) — برج إطلاق الـ Private Beta
- private_beta: 499 SAR × 7-day offer + safety notes + 6-question Arabic FAQ
- demo_flow: 12-minute minute-by-minute Arabic demo + 5 discovery Qs + 6 objection responses + close script
- outreach_messages: 4 segments × 5 prospects = 20 + per-segment Arabic messages + 3-step follow-ups + 6 reply handlers
- go_no_go: 10-gate readiness + 3 critical gates (no_secrets/live_sends_disabled/staging_health) + verdict + next-actions
- launch_scorecard: 11 event types + daily/weekly aggregation + targets (20 outreach/5 replies/3 demos/1 pilot daily)

Revenue Launch (7 modules) — تحويل Dealix إلى دخل
- offer_builder: 4 offers (Private Beta, 499 Pilot, Growth OS Pilot 1.5-3K, Free Case Study) + segment-aware recommend
- pipeline_tracker: 8-stage deterministic pipeline + add/update/summarize + revenue tracking + win rate
- outreach_sequence: re-export single source of truth from launch_ops with revenue-tier wrappers
- demo_closer: re-export from launch_ops
- pilot_delivery: 12-field intake form + 5-phase 24h delivery plan + per-service templates (First 10 / List Intel / Free Diagnostic)
- proof_pack_template: 5-line Arabic client summary + ROI estimate (pipeline_x + closed_won_x) + next-step recommendation (upsell/iterate/extend)
- payment_manual_flow: Moyasar invoice step-by-step (halalas-correct) + Arabic payment-link message + confirmation checklist; NEVER charges via API

Service Tower extensions (2 modules)
- contract_templates: re-export targeting_os contracts + new SLA outline (legal_review_required, PDPL-aware)
- vertical_service_map: 6 verticals (B2B SaaS / agencies / training-consulting / real estate / healthcare-local / retail-ecommerce) with primary+supporting services + buyer roles + common pains + winning offer

Routers (2 new) — 29 endpoints
- /api/v1/launch/* — 11 endpoints (private-beta/offer, demo/flow, outreach/{first-20, message, followup}, go-no-go, readiness, scorecard/{event, daily, weekly, demo})
- /api/v1/revenue-launch/* — 18 endpoints (offers + offers/recommend, outreach/{first-20, followup}, demo-flow, pipeline/{schema, summarize}, pilot-delivery/{intake-form, 24h-plan, first-10, list-intelligence, free-diagnostic}, payment/{invoice-instructions, link-message, confirmation-checklist}, proof-pack/{template, client-summary, next-step})

Tests (2 new files, 56 tests)
- test_launch_ops.py: 25 tests (Private Beta offer essentials + Arabic FAQ; demo flow 12-min structure; first-20 segments × 5; outreach Arabic + drafts only; followup steps differ; reply handlers include unsubscribe; go/no-go critical gates block; scorecard aggregation + verdict)
- test_revenue_launch.py: 31 tests (offers correct prices, no_live_charge=True; segment-aware recommends; pipeline 8 stages + add/update/summarize + win rate; outreach v2 Arabic; intake fields; 24h plan 5 phases; invoice halalas correct; payment confirmation blocks premature delivery; proof pack 5 lines + 3 next-step paths)

Scripts (1 new)
- scripts/launch_readiness_check.py: runs 10 gates locally + optional --staging-url; pretty/JSON output; critical gates determine GO/NO-GO/FIX-THEN-GO verdict

Landing pages (2 new, RTL Arabic)
- list-intelligence.html — List Intelligence service detail (499–1,500 SAR)
- growth-os.html — Growth OS Monthly subscription page (2,999 SAR/month)

Docs (1 new + 1 updated)
- REVENUE_TODAY_PLAYBOOK.md (Arabic) — 12-section playbook: offers, segments, messages, demo, pipeline, 24h delivery, Moyasar manual flow, proof pack, daily targets, go/no-go, what-not-to-do, next-step
- DEALIX_100_PERCENT_LAUNCH_PLAN.md — added §40 Launch Ops + §41 Revenue Launch + §42 Service Tower extensions + §43 Scripts

Test results
- 56/56 new tests pass
- Full suite: 824 passed, 2 skipped (missing API keys, unrelated)
- 0 existing tests broken

Safety integration
- All offers: live_send_allowed=False, no_live_charge=True, approval_required=True
- 10-gate go/no-go BLOCKS launch if no_secrets/live_sends_disabled/staging_health fail
- Moyasar: invoice/payment-link manual only; NEVER calls live charge API
- Payment confirmation checklist blocks delivery before invoice paid status
- All outreach messages: drafts only, follow-ups capped at 3, opt-out honored immediately
- 6 verticals mapped to safe service stacks; LinkedIn always Lead Forms (never scraping)

Integration with previous layers
- Launch Ops uses platform_services tool_gateway, intelligence_layer command_feed, security_curator redaction
- Revenue Launch uses targeting_os contractability + service_tower offers + intelligence_layer simulator
- Pipeline tracker integrates with action_ledger for stage transitions
- Proof Pack template references intelligence_layer proof metrics + service_excellence ROI

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 17:28:08 +03:00

169 lines
6.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Vertical service map — which services to recommend per industry vertical."""
from __future__ import annotations
from typing import Any
# 6 verticals × recommended service stack.
VERTICALS_AR: dict[str, dict[str, Any]] = {
"b2b_saas": {
"label_ar": "B2B SaaS",
"primary_services": [
"first_10_opportunities_sprint",
"linkedin_lead_gen_setup",
"growth_os_monthly",
],
"supporting_services": [
"meeting_booking_sprint",
"executive_growth_brief",
],
"buyer_roles": ["founder_ceo", "head_of_sales", "growth_manager"],
"common_pains_ar": [
"Pipeline ضعيف عند الإطلاق",
"صعوبة الوصول لـ decision makers في المؤسسات",
"Cold outreach يضرّ سمعة الـ domain",
],
"winning_offer_ar": "Pilot 7 أيام يثبت Saudi Tone + LinkedIn Lead Forms.",
},
"agencies": {
"label_ar": "الوكالات (تسويق/مبيعات/CRM)",
"primary_services": [
"agency_partner_program",
"partner_sprint",
],
"supporting_services": [
"list_intelligence",
"first_10_opportunities_sprint",
],
"buyer_roles": ["agency_owner", "head_of_sales", "growth_manager"],
"common_pains_ar": [
"تسليم نتائج قابلة للقياس للعملاء",
"Proof Packs للعملاء بدون فريق نمو داخلي",
"خلق revenue stream متكرر",
],
"winning_offer_ar": "Agency Partner Program مع co-branded Proof Pack.",
},
"training_consulting": {
"label_ar": "التدريب والاستشارات",
"primary_services": [
"first_10_opportunities_sprint",
"list_intelligence",
"growth_os_monthly",
],
"supporting_services": [
"executive_growth_brief",
"meeting_booking_sprint",
],
"buyer_roles": ["founder_ceo", "head_of_sales", "hr_manager"],
"common_pains_ar": [
"اعتماد مفرط على العلاقات الشخصية",
"Pipeline متذبذب بين الفصول الدراسية/الـ quarters",
"صعوبة الوصول لمدراء HR في الشركات",
],
"winning_offer_ar": "First 10 Opportunities Sprint للوصول لـHR managers.",
},
"real_estate": {
"label_ar": "العقار",
"primary_services": [
"list_intelligence",
"whatsapp_compliance_setup",
"first_10_opportunities_sprint",
],
"supporting_services": [
"meeting_booking_sprint",
"growth_os_monthly",
],
"buyer_roles": ["founder_ceo", "head_of_sales", "branch_manager"],
"common_pains_ar": [
"قاعدة عملاء واتساب غير منظمة",
"خطر حظر رقم واتساب من الإفراط",
"leads تأتي بدون مصدر واضح",
],
"winning_offer_ar": "List Intelligence + WhatsApp Compliance Setup.",
},
"healthcare_local": {
"label_ar": "العيادات والخدمات المحلية",
"primary_services": [
"local_growth_os",
"whatsapp_compliance_setup",
"list_intelligence",
],
"supporting_services": [
"growth_os_monthly",
],
"buyer_roles": ["clinic_manager", "founder_ceo", "operations_manager"],
"common_pains_ar": [
"Reviews سلبية على Google Business",
"no-show عالي بدون متابعة",
"Reactivation للعملاء القدامى",
],
"winning_offer_ar": "Local Growth OS لإدارة Reviews + WhatsApp inbound.",
},
"retail_ecommerce": {
"label_ar": "التجزئة والـ E-commerce",
"primary_services": [
"list_intelligence",
"whatsapp_compliance_setup",
"local_growth_os",
],
"supporting_services": [
"growth_os_monthly",
"executive_growth_brief",
],
"buyer_roles": ["founder_ceo", "store_manager", "marketing_manager"],
"common_pains_ar": [
"Customer reactivation متعب يدوياً",
"Reviews + reputation متفرقة",
"Payment link sharing غير منظم",
],
"winning_offer_ar": "List Intelligence + Local Growth OS + Moyasar invoice flow.",
},
}
def list_verticals() -> dict[str, Any]:
"""Return all verticals with their full service stacks."""
return {
"total": len(VERTICALS_AR),
"verticals": [
{"id": vid, **vdata} for vid, vdata in VERTICALS_AR.items()
],
}
def recommend_services_for_vertical(vertical_id: str) -> dict[str, Any]:
"""Recommend the service stack for a given vertical."""
v = VERTICALS_AR.get(vertical_id)
if v is None:
return {
"error": f"unknown vertical: {vertical_id}",
"available_verticals": list(VERTICALS_AR.keys()),
}
return {
"vertical_id": vertical_id,
"label_ar": v["label_ar"],
"primary_services": list(v["primary_services"]),
"supporting_services": list(v["supporting_services"]),
"buyer_roles": list(v["buyer_roles"]),
"common_pains_ar": list(v["common_pains_ar"]),
"winning_offer_ar": v["winning_offer_ar"],
}
def map_industry_to_vertical(industry: str) -> str:
"""Best-effort mapping from a free-text industry → known vertical_id."""
s = (industry or "").lower().strip()
if any(k in s for k in ("saas", "software", "tech", "تقنية", "برمجيات")):
return "b2b_saas"
if any(k in s for k in ("agency", "وكالة", "marketing", "تسويق")):
return "agencies"
if any(k in s for k in ("training", "تدريب", "consult", "استشار")):
return "training_consulting"
if any(k in s for k in ("real estate", "عقار", "property", "broker")):
return "real_estate"
if any(k in s for k in ("clinic", "عيادة", "doctor", "health", "medical")):
return "healthcare_local"
if any(k in s for k in ("retail", "store", "متجر", "shop", "ecommerce", "تجزئة")):
return "retail_ecommerce"
return "b2b_saas" # safe default