---
project: kingdom-wife-blueprint
file: 05_automation_plan
tags: [kwb, automation, ops, php, stripe, email]
aliases: [KWB Automation Plan, Automation Map]
links:
  - "[[02_action_plan]]"
  - "[[04_system_architecture]]"
  - "[[03_sop_library]]"
related:
  - "[[../../../Icarus/ops-package/05_automation_plan]]"
  - "[[../../../Clients-Freedom_Road/ops-package/05_automation_plan]]"
---

# Kingdom Wife Blueprint — Automation Plan

> *What runs without Sandi · what stays manual · what's deferred. The principle: Sandi keeps the voice work; everything mechanical is automated.*

---

## Automation map

```mermaid
flowchart LR
    A[New Tier 2/3 purchase] -->|Stripe webhook| B(IONOS PHP handler)
    B --> C[(MySQL: kwb_purchases)]
    C --> D[Trigger Day 0 email]
    C --> E[Schedule Day 3,7,14,30 in queue]
    D --> F[Cron: every 6h email-sender.php]
    E --> F
    F --> G[Send via PHP mailer or ConvertKit]
    G --> H[(MySQL: kwb_email_log)]

    I[New cohort signup Tier 3] --> J[Calendly RSVP auto-link]
    J --> K[Cohort #N membership row]
    K --> L[Accountability partner pairing]

    M[Receipt drop in 2026_Receipts/] --> N(receipt-watcher-agent)
    N --> O{Auto-classify?}
    O -->|High confidence| P[Append journal row]
    O -->|Ambiguous| Q[Prompt Sandi]

    style A fill:#1F4D4A,stroke:#163A38,color:#fff
    style D fill:#B8893A,stroke:#8B5E3C,color:#fff
    style F fill:#6B7F6B,stroke:#3D7A4E,color:#fff
```

---

## What runs WITHOUT Sandi (full automation)

| Trigger | What happens | Tech |
|---|---|---|
| **Stripe webhook (Tier 2 / Tier 3 purchase)** | User row updated · purchase logged · Day 0 email queued | PHP webhook handler in `includes/stripe-webhook.php` |
| **Daily cron @ 6am** | Email queue check; sends due Day 3/7/14/30 emails | `cron-email.php` via IONOS cron |
| **Hourly cron** | Bounced-email cleanup · failed-payment retry | `cron-cleanup.php` |
| **Weekly cron @ Sunday 8pm** | Cohort attendance digest emailed to Sandi · accountability-pair non-engagement flags | `cron-cohort-digest.php` |
| **Monthly cron @ 1st of month 1am** | Receipt-watcher sweep · receipt journal stub generated for the new month | `cron-monthly.php` |
| **Quarterly cron @ Q1/Q2/Q3/Q4 first Monday** | KPI snapshot generated · emailed to Sandi for review | `cron-quarterly.php` |
| **Per-content-completion** | `kwb_content_progress` row inserted · downstream unlock check | inline in lesson-N.php |

---

## What stays MANUAL (Sandi keeps the voice)

| Task | Why manual | Cadence |
|---|---|---|
| Cohort call (90 min monthly) | Live presence is the product | Monthly |
| Personal check-ins to disengaged members | Trust-keeping work; can't be templated | As needed |
| Approving newly-drafted course content | Voice gate + theological accuracy | Per content batch |
| Quarterly business review | Strategic decisions live in her head | Quarterly |
| Beta-feedback consensus calls | Editorial judgment | Per book launch |
| Sabbath calls (calls she takes outside structured cohort) | Pastoral relationship | As needed |
| Anything that goes out under her name | Voice ownership | Always |

---

## What's DEFERRED (don't build until Phase 4)

| Feature | Defer until | Why |
|---|---|---|
| Mobile app (native) | After Y1 revenue ≥ $50K | Web-responsive is sufficient initially |
| Advanced analytics dashboard | After 100 paid members | KPI snapshot email is enough |
| AI-driven content recommendations | After course content complete | Premature personalization |
| Affiliate program | After Y1 testimonials proven | Need ambassadors first, not affiliates |
| Multi-language | After English audience saturates | Y3+ |
| Public REST API | Never (without specific reason) | Out of scope |

---

## Email automation sequence (the core flow)

```mermaid
sequenceDiagram
    participant U as User
    participant S as Stripe
    participant P as PHP webhook
    participant DB as MySQL
    participant Q as Email queue
    participant M as Mailer (cron)

    U->>S: Pays $197 (Tier 2)
    S->>P: webhook payment_intent.succeeded
    P->>DB: INSERT kwb_purchases (succeeded)
    P->>DB: UPDATE kwb_users SET current_tier=2
    P->>Q: INSERT email_queue (day-0-welcome, NOW)
    P->>Q: INSERT email_queue (day-3-introduction, NOW+3d)
    P->>Q: INSERT email_queue (day-7-reflection, NOW+7d)
    P->>Q: INSERT email_queue (day-14-deeper, NOW+14d)
    P->>Q: INSERT email_queue (day-30-celebrate, NOW+30d)

    Note over M: cron every 6h
    M->>Q: SELECT pending WHERE scheduled_for <= NOW
    M->>M: Render template + send
    M->>DB: INSERT email_log (sent)
```

---

## Manual-override controls

Every automation has a manual-override toggle in `/admin/`:
- Pause email queue for specific user (e.g., she emails back asking to slow down)
- Manually advance a user to next tier (refund · gift · beta access)
- Suspend cohort attendance counter (member on medical leave)
- Re-send last email (user reports they didn't receive)
- Trigger out-of-cycle email (announcement · quarterly newsletter)

These overrides write to an audit log table for traceability.

---

## Failure modes & alerts

| Failure | Detection | Alert |
|---|---|---|
| Stripe webhook signature mismatch | webhook handler returns 401, logs to `kwb_webhook_errors` | Email to valuetovictory@gmail.com immediately |
| Email send rate > 100/hr (suggests stuck queue) | cron checks queue depth | Email + dashboard banner |
| Failed payment 3x in 24h | webhook handler counter | Email + admin dashboard flag |
| MySQL connection refused | bootstrap.php health check | Email + 500 page with status |
| Disk usage > 80% on IONOS | weekly cron `df -h` check | Email |

---

## Cross-references

- [[04_system_architecture]] — schema + folder structure that this automation depends on
- [[03_sop_library]] — manual SOPs that complement these automations
- [[06_gap_analysis]] — what's not yet automated and why
- [[../../../../sandi-system-engine/_skills/email-sequence-builder/SKILL.md|email-sequence-builder skill]]
- [[../../../../sandi-system-engine/_agents/receipt-watcher-agent/AGENT.md|receipt-watcher-agent]]
