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>
|
||
|---|---|---|
| .. | ||
| .cursor/rules | ||
| .github | ||
| api | ||
| auto_client_acquisition | ||
| autonomous_growth | ||
| core | ||
| dashboard | ||
| db | ||
| dealix | ||
| docs | ||
| evals | ||
| integrations | ||
| landing | ||
| scripts | ||
| supabase/migrations | ||
| tests | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.example | ||
| .env.staging.example | ||
| .gitignore | ||
| .gitleaks.toml | ||
| .pre-commit-config.yaml | ||
| .secrets.baseline | ||
| CHANGELOG.md | ||
| cli.py | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| DEALIX_COMPANY_OPERATIONAL_STATE.md | ||
| DEPLOYMENT.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| Makefile | ||
| Procfile | ||
| pyproject.toml | ||
| QUICK_START.md | ||
| railway.json | ||
| railway.toml | ||
| README.ar.md | ||
| README.md | ||
| requirements-dev.txt | ||
| requirements.txt | ||
| SECURITY.md | ||
| v3_app.py | ||
🏢 Dealix — AI Company Saudi
Sovereign, policy-governed Growth & Execution OS for Saudi enterprises
نظام نمو وتنفيذ سيادي محكوم بالسياسات، للشركات السعودية
العربية · English
🚀 Deploy Now · 📦 .env Template · 🎯 Landing · 🗺️ API Map · 🏢 Day 1 Plan
🎯 What's in this repo
Backend — FastAPI + SQLAlchemy 2.0 async + Postgres. 13 routers / 102 endpoints. See API_MAP.md.
Lead Machine — Provider adapter chains for Search / Maps / Crawler / Tech / EmailIntel that fall back gracefully when env keys are missing. See PROVIDER_ADAPTERS.md.
Data Lake + Lead Graph — 7-table compliant ingestion: raw_lead_imports → raw_lead_rows → accounts → contacts → signals → lead_scores → data_suppression_list. PDPL-aware (allowed_use, consent_status, opt_out, risk_level mandatory per row). See DATA_LAKE_PLAYBOOK.md.
Frontend — Static landing on GitHub Pages + interactive dashboard with live Saudi Lead Engine demo. See landing/.
Day-1 Operating Kit — 287 outreach-ready Saudi B2B accounts pre-built across 7 segments (real-estate / construction / hospitality / events / food / logistics / SaaS / agency). Pricing ladder + Pilot offer + Partner model + Channel templates. See docs/business/.
⚡ Quick Deploy
Any Docker-capable platform works. See DEPLOYMENT.md for Railway, Render, Fly.io, Heroku, DigitalOcean, AWS, self-hosted.
# Local
docker build -t dealix .
cp .env.example .env # edit with real values
docker run -p 8000:8000 --env-file .env dealix
curl localhost:8000/health
Public endpoints (no auth): /health, /api/v1/public/demo-request, /api/v1/pricing/plans, /api/v1/checkout, /api/v1/webhooks/moyasar
🌟 One-line definition
Dealix is a sovereign, policy-governed Growth & Execution OS for Saudi enterprises. It combines agentic intelligence, deterministic execution, approval controls, and executive observability to drive revenue, partnerships, expansion, and strategic operations with enterprise-grade trust.
It is not a CRM, not a chatbot, not a sales automation tool.
🧭 The Prime Operating Rule
AI explores, analyzes, and recommends. Deterministic workflows execute. Humans approve critical moves.
No agent makes an external commitment on its own. No critical output leaves the system without being structured, evidence-backed, policy-evaluated, and (where required) human-approved.
🧱 The six OS tracks
- Revenue OS — lead to close, pipeline, forecasting
- Partnership OS — partner discovery, joint pursuits, co-sell
- Corporate Development / M&A OS — sourcing, diligence, integration
- Expansion OS — new-market entry, localization
- PMI / Strategic PMO OS — post-merger integration, cross-BU initiatives
- Trust, Policy & Executive Governance OS — controls, approvals, risk, audit
🏗️ Five mandatory planes
Every feature lives in exactly one plane. Crossing planes happens via contracts, never via shared memory or direct calls.
| Plane | Responsibility | Module |
|---|---|---|
| Decision | Agents: reasoning, synthesis, recommendation, evidence assembly | auto_client_acquisition/, autonomous_growth/, core/agents/ |
| Execution | Durable workflows, retries, compensation, external commitments | auto_client_acquisition/pipeline.py, dealix/execution/ |
| Trust | Policy, approval, audit, tool verification, evidence packs | dealix/trust/ |
| Data | Operational source of truth, semantic metrics, lineage | db/, integrations/ |
| Operating | Repo governance, CI/CD, releases, SDLC security | .github/, Dockerfile, Makefile |
🛡️ What makes this Tier-1
1. Structured outputs with classifications
Every critical agent output is a validated DecisionOutput (Pydantic + JSON Schema) carrying:
- Approval class (A0–A3): who must approve
- Reversibility class (R0–R3): how hard to undo
- Sensitivity class (S0–S3): data/impact risk
2. Trust Plane as a non-bypassable overlay
Every NextAction runs through a PolicyEvaluator that returns ALLOW / DENY / ESCALATE. Escalations create ApprovalRequests with TTL + multi-approver support. Every step is audited.
3. Never-auto-execute list
Hardcoded in dealix/classifications/NEVER_AUTO_EXECUTE: pricing commits, contract changes, NDAs, payment terms, regulator comms, sensitive data exports — these cannot bypass human approval, regardless of other signals.
4. Evidence packs on high-stakes decisions
A2+/R3/S3 decisions cannot be constructed without evidence — Pydantic validator enforces it. Every pack ships with sources, tool calls (intended vs actual), prompts used, model versions, and a bilingual AR/EN board-grade memo.
5. No-overclaim register
Every public product claim is tracked in dealix/registers/no_overclaim.yaml with status (Production / Partial / Pilot / Planned) and evidence paths.
6. Saudi-native from day one
Not localization — Gulf business register Arabic, SAR pricing tiers, Riyadh timezone awareness, PDPL lawful-basis enforcement via policy rules, NCA ECC/DCC/CCC mapping in dealix/registers/compliance_saudi.yaml.
✨ Core technical features
- 🧠 Multi-LLM routing with fallback — Claude, Gemini, Groq, DeepSeek, GLM, OpenAI. Task → best provider → auto-fallback on failure. Per-provider usage tracking.
- 🤖 15+ production agents — typed I/O, structured logging, graceful degradation, 63 tests.
- 🌍 First-class bilingual AR/EN — detection, routing (Arabic → GLM), content generation, sales scripts, docs.
- 🔒 Security-first —
.env-only config,SecretStreverywhere, gitleaks + detect-secrets + trufflehog + bandit in pre-commit AND CI, webhook HMAC verification, non-root Docker, ToS-safe LinkedIn. - 🐳 Cloud-ready — multi-stage Dockerfile, docker-compose stack (Postgres + Redis + Mongo), GitHub Actions CI/CD, GHCR image push on release tags.
- 📊 Observable — structlog JSON logs in prod, request IDs, per-provider LLM usage metrics, optional Langfuse integration.
🏗️ Architecture
graph TB
subgraph Clients
W[Website Forms]
WA[WhatsApp Business]
E[Email]
end
subgraph Gateway["FastAPI Gateway"]
R[6 routers + middleware]
end
subgraph Decision["Decision Plane — agents"]
I[Intake] --> P[Pain Extract]
P --> IC[ICP Match]
IC --> Q[Qualification]
end
subgraph Trust["Trust Plane — NON-BYPASSABLE"]
POL[Policy Evaluator]
APR[Approval Center]
AUD[Audit Sink]
TV[Tool Verification Ledger]
end
subgraph Execution["Execution Plane — deterministic"]
CRM[HubSpot sync]
BK[Booking]
PS[Proposal send]
end
subgraph LLM["LLM Router — fallback"]
CL[Claude]
GM[Gemini]
GQ[Groq]
DS[DeepSeek]
GL[GLM]
end
Clients --> Gateway
Gateway --> Decision
Decision --> Trust
Trust -->|ALLOW| Execution
Trust -->|ESCALATE| HUMAN[Human approver]
HUMAN --> Execution
Decision --> LLM
Trust --> AUD
Full blueprint: docs/blueprint/master-architecture.md.
🚀 Quick start
git clone https://github.com/YOUR-ORG/ai-company-saudi.git
cd ai-company-saudi
make setup
# edit .env, then:
make run
# → http://localhost:8000/docs
Full stack (app + Postgres + Redis + Mongo):
make docker-up
Try the governed pipeline
curl -X POST http://localhost:8000/api/v1/leads \
-H "Content-Type: application/json" \
-d '{
"company": "شركة التقنية المتقدمة",
"name": "أحمد محمد",
"email": "ahmed@example.sa",
"phone": "+966501234567",
"sector": "technology",
"region": "Saudi Arabia",
"budget": 50000,
"message": "نحتاج نظام AI لإدارة المبيعات"
}'
Use the GovernedPipeline directly (shows the governance layer)
import asyncio
from dealix.execution import GovernedPipeline
async def main():
gp = GovernedPipeline()
result = await gp.run(payload={
"company": "...",
"name": "...",
"message": "..."
})
print(f"Decisions: {len(result.decisions)}")
print(f"Policy results: {len(result.policy_results)}")
print(f"Approval requests: {len(result.approval_requests)}")
print(f"Audit trail: {len(result.audit_trail)} entries")
asyncio.run(main())
📚 The twelve Master Documents
All under dealix/masters/ and dealix/registers/:
- Master Architecture Blueprint — canonical source of truth
- AI Operating Constitution — binding rules
- Trust Fabric Specification
- Execution Fabric Specification
- Repo Operating Pack
- 90-Day Execution Matrix
- Saudi Compliance Register — PDPL + NCA + AI governance
- Technology Radar
- Incident & Rollback Runbook
- Release Readiness Checklist
- No-Overclaim Register — every public claim tracked
- Evidence Pack Specification
🧪 Testing
make test # 63 tests, all passing
Tests include: intake, ICP matcher, pain extractor, model router, API endpoints, full Phase 8 pipeline, Dealix contracts (with high-stakes validation), Trust Plane (policy + approval + audit + tool verification), Governed pipeline end-to-end.
🧰 Tech stack
| Layer | Choice | Status |
|---|---|---|
| Language | Python 3.11 / 3.12 | ADOPT |
| Framework | FastAPI 0.115 + Uvicorn | ADOPT |
| Validation | Pydantic v2 + pydantic-settings | ADOPT |
| Contracts | JSON Schema + CloudEvents 1.0 | ADOPT |
| DB | PostgreSQL 16 + pgvector | ADOPT |
| LLM | Claude, Gemini, Groq, DeepSeek, GLM, OpenAI fallback | ADOPT |
| Execution | In-process → LangGraph → Temporal spike | TRIAL→ADOPT |
| Trust — Policy | In-process → OPA/Rego | TRIAL |
| Trust — AuthZ | In-process → OpenFGA | TRIAL |
| Trust — Identity | local → Keycloak | TRIAL |
| Trust — Secrets | .env + SecretStr → Vault |
TRIAL |
| Observability | structlog → OpenTelemetry | TRIAL |
| CI/CD | GitHub Actions + rulesets + OIDC | ADOPT |
Full radar: dealix/registers/technology_radar.yaml.
📊 Phase 8 — Acquisition agents
All 9 agents + pipeline. Every output lifts to a DecisionOutput via dealix.contracts.builders.
| Agent | Classification | Role |
|---|---|---|
| Intake | A0/R0/S2 | Multi-source lead capture, normalization, dedup |
| ICP Matcher | A0/R0/S1 | 5-dim weighted Fit scoring with tier A/B/C/D |
| Pain Extractor | A0/R0/S1 | Hybrid keyword + LLM pain extraction (AR+EN) |
| Qualification | A0/R0/S1 | BANT questions, status advancement |
| Booking | A1/R1/S2 | Calendly → Google Calendar → manual (requires approval) |
| CRM | A0→A1/R1/S2 | HubSpot contact upsert (A0) + deal create (A1) |
| Proposal draft | A0/R0/S2 | Claude-authored, region-aware pricing |
| Proposal send | A2/R2/S2 | Gated — requires manager + legal approval |
| Outreach | A1/R2/S2 | Bilingual cold openers — gated |
| Follow-up | A1/R2/S2 | Cadence-based — gated |
📈 Phase 9 — Growth agents
| Agent | Role |
|---|---|
| Sector Intel | 12 Saudi sectors with curated market size, growth, AI readiness |
| Content Creator | Bilingual articles, LinkedIn, case studies, newsletters |
| Distribution | Multi-channel scheduling (Riyadh timezone) |
| Enrichment | Domain + LLM-based lead enrichment |
| Competitor Monitor | Positioning, pricing hints, counter-moves |
| Market Research | Gemini-powered research with bullet findings |
🔒 Security
.env-only config viapydantic-settings;SecretStron every sensitive value- Pre-commit:
gitleaks,detect-secrets,bandit,hadolint - CI: re-runs the above +
trufflehogon every push and PR - Webhook HMAC verification (WhatsApp)
- Non-root Docker container with healthcheck
- LinkedIn integration disabled by default (ToS compliance)
- See SECURITY.md for reporting vulnerabilities
🇸🇦 Saudi compliance
Designed from inception for:
- PDPL — lawful-basis register, retention schedule, breach response, DPO assessment, cross-border transfer posture
- NCA ECC 2-2024 — Essential Cybersecurity Controls
- NCA DCC-1:2022 — Data Cybersecurity Controls
- NCA CCC 2:2024 — Cloud Cybersecurity Controls
- NIST AI RMF 1.0 + OWASP Top 10 for LLM Applications
Full register: dealix/registers/compliance_saudi.yaml.
🤝 Contributing
See CONTRIBUTING.md and Repo Operating Pack. By participating you agree to the Code of Conduct.
📜 License
MIT — see LICENSE.