mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2026-06-17 23:09:35 +00:00
Builds the full Saudi Autonomous Revenue OS surface as 10 deterministic
modules + a 16-endpoint router under /api/v1/growth-operator/.
Approval-first: every outbound is draft. No live send / charge / calendar
insert from this layer.
MODULES (auto_client_acquisition/growth_operator/)
1. client_profile.py — ClientGrowthProfile + Saudi-default approval
+ compliance rules (no cold WhatsApp, blocked keywords, weekly cap,
quiet_hours_riyadh)
2. contact_importer.py — normalize_phone (Saudi E.164),
dedupe_contacts (richer-record-wins), classify_contact_source
(existing/inbound/event/referral/old_lead/cold/unknown), detect_opt_out
(Arabic + English markers), summarize_import (dashboard report)
3. contactability.py — score_contactability returns
safe/needs_review/blocked with Arabic reasons; default policy:
no cold WhatsApp without lawful basis (PDPL Art.5)
4. targeting.py — segment_contacts, rank_targets (filters unsafe),
recommend_top_10, why_now_stub (deterministic, sector-aware)
5. message_planner.py — draft_arabic_message (Saudi tone, 4-sector
opener bank, no overhyped phrases, always pending_approval),
draft_followup (4 outcome modes), draft_objection_response
(6 indexed Saudi B2B objections with score_delta + next_action)
6. partnership_planner.py — 6 partner types catalog
(agency / consultant / integrator / crm / community / influencer)
+ suggest_partner_types (size/sector aware) + draft_partner_outreach
+ partner_scorecard (platinum/gold/silver/bronze)
7. meeting_planner.py — build_meeting_agenda (15/20-30/45+ min slot
plans), build_calendar_draft (Google Calendar shape, live_inserted=False,
conferenceData for Meet, Asia/Riyadh timezone), build_post_meeting_followup
8. payment_offer.py — sar_to_halalas, build_moyasar_payment_link_draft
(full payload + in-chat message + 4-plan catalog, live_charged=False)
9. proof_pack.py — build_weekly_proof_pack with grade A+/A/B/C/D,
activity/money/quality/best-of sections, dynamic next_week_plan_ar,
markdown export
10. mission_planner.py — 6 GROWTH_MISSIONS (first_10_opportunities ⭐
kill feature, recover_stalled_deals, partnership_sprint,
safe_whatsapp_campaign, meeting_booking_sprint, list_cleanup);
list_missions() + run_mission()
ROUTER (api/routers/growth_operator.py) — 16 endpoints
POST /contacts/import-preview · POST /contactability/score
POST /targets/top-10 · POST /messages/draft · POST /messages/followup
POST /messages/objection-response · POST /partners/suggest
POST /partners/outreach · POST /partners/scorecard
POST /meetings/draft · POST /meetings/post-followup
POST /payment-offer/draft · GET /missions · POST /missions/{id}/run
GET /proof-pack/demo · POST /profile
WIRING: api/main.py adds growth_operator import + router include
(positioned after personal_operator, before public).
DOCS
- docs/ARABIC_GROWTH_OPERATOR_FULL_SPEC.md (NEW): 20-section vision +
customer-type table + upload flow + contactability rules +
WhatsApp/Gmail/Calendar/Moyasar drafts + 6 missions + 16-endpoint
catalog + competitive comparison + beta readiness checklist
TESTS — 50 passing on Python 3.10 venv
tests/unit/test_growth_operator.py covers:
- Phone normalization across 5 input formats including invalid
- Dedupe richer-record invariant
- Source classification (existing/inbound/event/cold/unknown)
- Opt-out detection (Arabic + English notes + status)
- Import summary aggregation
- Contactability: opt-out blocked, cold WhatsApp blocked,
unknown→needs_review, existing→safe, inbound→safe
- Bulk contactability summary
- Top-10 filtering (unsafe excluded), max-cap enforcement
- Segment buckets
- Arabic message: pending_approval invariant + Arabic content
+ no overhyped phrases (banned list)
- Followup approval invariant
- Objection response: known + unknown→diagnostic
- Partner suggestions size-aware (SMB→agency/consultant/community)
- Partner outreach approval invariant
- Partner unknown type returns error
- Partner scorecard tier ordering
- Meeting agenda + calendar draft (live_inserted=False) +
Asia/Riyadh timezone + post-followup pending
- Payment: halalas conversion (1 SAR=100), negative raises,
draft NEVER charges (live_charged=False), unknown plan→error
- Proof pack: grade range + structure + markdown export
- Missions: first_10_opportunities present + kill feature ID
+ run mission known/unknown
- Profile: demo specialized + partial not specialized
+ default compliance blocks 'ضمان 100' + no_cold_whatsapp_without_lawful_basis
VERIFICATION
- 527 unit tests pass (was 477; +50 growth_operator)
- 2 skipped (provider smoke needs API keys)
- AST green on all 13 new files
- Approval invariant holds across every drafting function
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
163 lines
5.7 KiB
Python
163 lines
5.7 KiB
Python
"""
|
||
Weekly Proof Pack — evidence the customer can show their CEO/board.
|
||
|
||
Tracks: opportunities discovered, messages approved, replies, meetings,
|
||
deals, pipeline, blocked risks (PDPL gates that fired), revenue leaks
|
||
recovered, next week plan.
|
||
|
||
Pure function. No I/O.
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from datetime import datetime, timezone
|
||
from typing import Any
|
||
|
||
|
||
def _grade_week(*, pipeline_sar: float, plan_cost_sar: float, deals_won: int) -> str:
|
||
"""Quick A+/A/B/C/D grade for the week."""
|
||
if plan_cost_sar <= 0:
|
||
return "B"
|
||
multiple = pipeline_sar / plan_cost_sar
|
||
if multiple >= 5 and deals_won >= 1:
|
||
return "A+"
|
||
if multiple >= 3:
|
||
return "A"
|
||
if multiple >= 1.5:
|
||
return "B"
|
||
if multiple >= 0.5:
|
||
return "C"
|
||
return "D"
|
||
|
||
|
||
def build_weekly_proof_pack(
|
||
*,
|
||
customer_id: str,
|
||
customer_name: str,
|
||
week_label: str,
|
||
plan_cost_weekly_sar: float = 750,
|
||
# Activity
|
||
opportunities_discovered: int = 0,
|
||
messages_drafted: int = 0,
|
||
messages_approved: int = 0,
|
||
messages_sent: int = 0,
|
||
replies_received: int = 0,
|
||
positive_replies: int = 0,
|
||
meetings_booked: int = 0,
|
||
meetings_held: int = 0,
|
||
proposals_sent: int = 0,
|
||
deals_won: int = 0,
|
||
# Money
|
||
pipeline_added_sar: float = 0.0,
|
||
revenue_won_sar: float = 0.0,
|
||
# Risk / quality
|
||
risky_drafts_blocked: int = 0,
|
||
revenue_leaks_recovered: int = 0,
|
||
avg_response_minutes: int = 0,
|
||
# Best of
|
||
best_message_subject: str | None = None,
|
||
best_message_reply_rate: float | None = None,
|
||
) -> dict[str, Any]:
|
||
"""Build the weekly proof pack (Markdown + structured)."""
|
||
approve_rate = (
|
||
round(messages_approved / messages_drafted, 4) if messages_drafted else 0.0
|
||
)
|
||
reply_rate = (
|
||
round(replies_received / messages_sent, 4) if messages_sent else 0.0
|
||
)
|
||
grade = _grade_week(
|
||
pipeline_sar=pipeline_added_sar,
|
||
plan_cost_sar=plan_cost_weekly_sar,
|
||
deals_won=deals_won,
|
||
)
|
||
multiple = round(pipeline_added_sar / plan_cost_weekly_sar, 2) if plan_cost_weekly_sar else 0.0
|
||
headline_ar = (
|
||
f"{pipeline_added_sar:,.0f} ريال pipeline + "
|
||
f"{meetings_booked} اجتماع + {risky_drafts_blocked} مخاطرة محبوطة "
|
||
f"خلال {week_label}"
|
||
)
|
||
|
||
activity = {
|
||
"فرص مكتشفة": opportunities_discovered,
|
||
"مسودات": messages_drafted,
|
||
f"موافقات ({approve_rate*100:.0f}%)": messages_approved,
|
||
"مُرسلة": messages_sent,
|
||
f"ردود ({reply_rate*100:.1f}%)": replies_received,
|
||
"ردود إيجابية": positive_replies,
|
||
"اجتماعات محجوزة": meetings_booked,
|
||
"اجتماعات منعقدة": meetings_held,
|
||
"عروض مرسلة": proposals_sent,
|
||
"صفقات مكسوبة": deals_won,
|
||
}
|
||
money = {
|
||
"Pipeline مضاف": f"{pipeline_added_sar:,.0f} ريال",
|
||
"إيراد محسوم": f"{revenue_won_sar:,.0f} ريال",
|
||
"Multiple على تكلفة الأسبوع": f"{multiple}×",
|
||
}
|
||
quality = {
|
||
"drafts خطرة محبوطة (PDPL gates)": risky_drafts_blocked,
|
||
"تسريبات إيراد منقذة": revenue_leaks_recovered,
|
||
"متوسط زمن الرد (دقيقة)": avg_response_minutes,
|
||
}
|
||
|
||
next_week_plan_ar = []
|
||
if reply_rate < 0.05:
|
||
next_week_plan_ar.append("اختبر صياغة مختلفة للسطر الأول — معدل الرد منخفض.")
|
||
if avg_response_minutes > 60:
|
||
next_week_plan_ar.append(f"قلل زمن الرد من {avg_response_minutes} إلى أقل من 60 دقيقة.")
|
||
if meetings_booked == 0 and replies_received >= 5:
|
||
next_week_plan_ar.append("ركّز على qualifying — ردود كثيرة بدون اجتماع.")
|
||
if deals_won == 0 and proposals_sent >= 2:
|
||
next_week_plan_ar.append("مراجعة العروض المرسلة + جلسة Deal Coach.")
|
||
if not next_week_plan_ar:
|
||
next_week_plan_ar.append("ركّز على الـ scale — زد عدد الـ leads بنسبة 30%.")
|
||
|
||
md_lines = [
|
||
f"# Dealix Proof Pack — {customer_name}",
|
||
f"**الفترة:** {week_label}",
|
||
f"**التقييم:** {grade}",
|
||
"",
|
||
"## TL;DR",
|
||
headline_ar,
|
||
"",
|
||
"## النشاط",
|
||
*(f"- {k}: {v}" for k, v in activity.items()),
|
||
"",
|
||
"## المال",
|
||
*(f"- {k}: {v}" for k, v in money.items()),
|
||
"",
|
||
"## الجودة + الأمان",
|
||
*(f"- {k}: {v}" for k, v in quality.items()),
|
||
"",
|
||
"## أفضل أداء",
|
||
f"- subject الأنجح: {best_message_subject or '—'}",
|
||
f"- معدل ردها: {(best_message_reply_rate or 0)*100:.1f}%",
|
||
"",
|
||
"## خطة الأسبوع القادم",
|
||
*(f"- {x}" for x in next_week_plan_ar),
|
||
"",
|
||
f"_Generated by Dealix at {datetime.now(timezone.utc).isoformat()}_",
|
||
]
|
||
|
||
return {
|
||
"customer_id": customer_id,
|
||
"customer_name": customer_name,
|
||
"week_label": week_label,
|
||
"grade": grade,
|
||
"headline_ar": headline_ar,
|
||
"activity": activity,
|
||
"money": money,
|
||
"quality": quality,
|
||
"best_message": {
|
||
"subject": best_message_subject,
|
||
"reply_rate": best_message_reply_rate,
|
||
},
|
||
"next_week_plan_ar": next_week_plan_ar,
|
||
"markdown_export": "\n".join(md_lines),
|
||
"approval_required": False,
|
||
"compliance_note_ar": (
|
||
"هذا تقرير قراءة فقط — يُولَّد من سجلات حقيقية ولا يحوي أي PII "
|
||
"خارج هوية الشركة المشتركة."
|
||
),
|
||
}
|