mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2026-06-17 23:09:35 +00:00
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>
156 lines
5.0 KiB
Python
156 lines
5.0 KiB
Python
"""Deterministic pipeline tracker — schema, add, update, summarize."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
PIPELINE_STAGES: tuple[str, ...] = (
|
|
"identified",
|
|
"contacted",
|
|
"replied",
|
|
"demo_booked",
|
|
"diagnostic_sent",
|
|
"pilot_offered",
|
|
"paid",
|
|
"lost",
|
|
)
|
|
|
|
# Default Sheet/CSV columns the pipeline tracker emits.
|
|
PIPELINE_COLUMNS: tuple[str, ...] = (
|
|
"company", "person", "segment", "source", "channel",
|
|
"message_sent_at", "reply_status", "stage",
|
|
"demo_booked", "service_offered", "price_sar",
|
|
"paid", "next_step", "notes",
|
|
)
|
|
|
|
|
|
def build_pipeline_schema() -> dict[str, Any]:
|
|
"""Return the canonical pipeline schema (deterministic)."""
|
|
return {
|
|
"stages": list(PIPELINE_STAGES),
|
|
"columns": list(PIPELINE_COLUMNS),
|
|
"stage_progression": [
|
|
{"from": "identified", "to": "contacted", "trigger": "outreach_sent"},
|
|
{"from": "contacted", "to": "replied", "trigger": "reply_received"},
|
|
{"from": "replied", "to": "demo_booked", "trigger": "demo_scheduled"},
|
|
{"from": "demo_booked", "to": "diagnostic_sent", "trigger": "diagnostic_delivered"},
|
|
{"from": "diagnostic_sent", "to": "pilot_offered", "trigger": "offer_sent"},
|
|
{"from": "pilot_offered", "to": "paid", "trigger": "moyasar_invoice_paid"},
|
|
],
|
|
"loss_reasons_ar": [
|
|
"السعر",
|
|
"التوقيت",
|
|
"بديل قائم",
|
|
"صانع القرار غير متاح",
|
|
"PDPL/أمان",
|
|
"لا حاجة الآن",
|
|
],
|
|
"notes_ar": (
|
|
"هذا المخطط deterministic. كل صفقة تتقدم بـ trigger صريح فقط، "
|
|
"ولا يحدث تغيير stage بدون event موثّق."
|
|
),
|
|
}
|
|
|
|
|
|
def add_prospect(
|
|
*,
|
|
pipeline: list[dict[str, Any]] | None = None,
|
|
company: str,
|
|
person: str = "",
|
|
segment: str = "",
|
|
source: str = "manual",
|
|
channel: str = "email",
|
|
notes: str = "",
|
|
) -> dict[str, Any]:
|
|
"""Add a new prospect to the in-memory pipeline. Stage starts at identified."""
|
|
entry: dict[str, Any] = {
|
|
"company": company,
|
|
"person": person,
|
|
"segment": segment,
|
|
"source": source,
|
|
"channel": channel,
|
|
"message_sent_at": None,
|
|
"reply_status": "none",
|
|
"stage": "identified",
|
|
"demo_booked": False,
|
|
"service_offered": "",
|
|
"price_sar": 0,
|
|
"paid": False,
|
|
"next_step": "send_first_outreach",
|
|
"notes": notes[:300],
|
|
}
|
|
if pipeline is not None:
|
|
pipeline.append(entry)
|
|
return entry
|
|
|
|
|
|
def update_stage(
|
|
*,
|
|
prospect: dict[str, Any],
|
|
new_stage: str,
|
|
notes: str = "",
|
|
) -> dict[str, Any]:
|
|
"""Move a prospect to a new stage. Validates the new stage is known."""
|
|
if new_stage not in PIPELINE_STAGES:
|
|
raise ValueError(
|
|
f"Unknown stage: {new_stage}. "
|
|
f"Valid: {', '.join(PIPELINE_STAGES)}"
|
|
)
|
|
prospect["stage"] = new_stage
|
|
if notes:
|
|
existing = str(prospect.get("notes", ""))
|
|
sep = " | " if existing else ""
|
|
prospect["notes"] = (existing + sep + notes)[:300]
|
|
if new_stage == "paid":
|
|
prospect["paid"] = True
|
|
prospect["next_step"] = "deliver_24h"
|
|
elif new_stage == "lost":
|
|
prospect["next_step"] = "archive"
|
|
return prospect
|
|
|
|
|
|
def summarize_pipeline(
|
|
pipeline: list[dict[str, Any]] | None,
|
|
) -> dict[str, Any]:
|
|
"""Aggregate pipeline counts + revenue."""
|
|
pipeline = pipeline or []
|
|
by_stage: dict[str, int] = {s: 0 for s in PIPELINE_STAGES}
|
|
by_segment: dict[str, int] = {}
|
|
revenue_paid_sar = 0.0
|
|
revenue_offered_sar = 0.0
|
|
|
|
for p in pipeline:
|
|
stage = str(p.get("stage", "identified"))
|
|
if stage in by_stage:
|
|
by_stage[stage] += 1
|
|
seg = str(p.get("segment", "unknown"))
|
|
by_segment[seg] = by_segment.get(seg, 0) + 1
|
|
price = float(p.get("price_sar", 0) or 0)
|
|
if p.get("paid"):
|
|
revenue_paid_sar += price
|
|
if stage in ("pilot_offered", "paid"):
|
|
revenue_offered_sar += price
|
|
|
|
total = len(pipeline)
|
|
won = by_stage["paid"]
|
|
lost = by_stage["lost"]
|
|
closed = won + lost
|
|
win_rate = round(won / closed, 3) if closed else 0.0
|
|
|
|
return {
|
|
"total_prospects": total,
|
|
"by_stage": by_stage,
|
|
"by_segment": by_segment,
|
|
"revenue_paid_sar": round(revenue_paid_sar, 2),
|
|
"revenue_offered_sar": round(revenue_offered_sar, 2),
|
|
"win_rate": win_rate,
|
|
"summary_ar": [
|
|
f"إجمالي الـ prospects: {total}",
|
|
f"اتصالات: {by_stage['contacted']} | ردود: {by_stage['replied']}",
|
|
f"ديموهات: {by_stage['demo_booked']} | عروض: {by_stage['pilot_offered']}",
|
|
f"مدفوعة: {by_stage['paid']} | خسرت: {by_stage['lost']}",
|
|
f"إيراد محصّل: {revenue_paid_sar:.0f} ريال",
|
|
f"win rate: {win_rate * 100:.1f}%",
|
|
],
|
|
}
|