diff --git a/pledge-now-pay-later/src/app/dashboard/automations/page.tsx b/pledge-now-pay-later/src/app/dashboard/automations/page.tsx
index 8a1db38..1fbbc9b 100644
--- a/pledge-now-pay-later/src/app/dashboard/automations/page.tsx
+++ b/pledge-now-pay-later/src/app/dashboard/automations/page.tsx
@@ -1,6 +1,7 @@
"use client"
import { useState, useEffect, useCallback, useRef } from "react"
+import Image from "next/image"
import {
Loader2, Check, Send, Sparkles, Trophy, CheckCheck,
ChevronDown, Clock, MessageCircle
@@ -11,23 +12,16 @@ import { resolvePreview, STEP_META } from "@/lib/templates"
/**
* /dashboard/automations
*
- * AI DOES THE WORK.
+ * AI DOES THE WORK. PHOTOGRAPHY SETS THE CONTEXT.
*
- * The page has three states:
+ * The AI hero uses the same image-panel + dark-panel split from
+ * the landing page. The image is `digital-03-notification-smile` β
+ * a young man at a bus stop smiling at his phone. It IS the product
+ * working. The moment a WhatsApp reminder lands and someone thinks
+ * "oh right, I need to do that."
*
- * 1. NOT STARTED β big hero: "Let AI improve your messages"
- * One button. AI generates challengers for all 4 steps.
- *
- * 2. TESTING β "AI is testing 4 experiments"
- * Each message shows your version vs AI's version with live stats.
- * Progress bar toward verdict.
- *
- * 3. WINNERS β "AI improved your messages by 47%"
- * Messages marked with π badges showing the lift.
- * "Run another round" to keep improving.
- *
- * Aaisha never writes a message. She never picks a winner.
- * She just sees: "AI is making your messages better."
+ * Once AI is running, the hero compacts down β the image served its
+ * purpose (motivation to start). Now the data takes over.
*/
interface Template {
@@ -81,18 +75,14 @@ export default function AutomationsPage() {
templates.find(t => t.step === step && t.channel === "whatsapp" && t.variant === variant)
|| templates.find(t => t.step === step && t.variant === variant)
- // ββ Derived state ββββββββββββββββββββββ
const testsRunning = STEP_META.filter((_, i) => !!tpl(i, "B")).length
const stepsWithoutTest = STEP_META.filter((_, i) => !tpl(i, "B")).length
const neverOptimised = testsRunning === 0 && templates.every(t => t.variant === "A")
- // ββ Actions ββββββββββββββββββββββββββββ
-
const optimiseAll = async () => {
setAiWorking(true)
- // Generate challengers for all steps that don't have one
for (let step = 0; step < 4; step++) {
- if (tpl(step, "B")) continue // already has a test
+ if (tpl(step, "B")) continue
try {
await fetch("/api/automations/ai", {
method: "POST", headers: { "Content-Type": "application/json" },
@@ -153,46 +143,71 @@ export default function AutomationsPage() {
const delays = [0, config?.step1Delay || 2, config?.step2Delay || 7, config?.step3Delay || 14]
return (
-
+
- {/* Header */}
+ {/* ββ Header ββ */}
-
What your donors receive
-
4 messages over {delays[3]} days. Click any to edit.
+
+
Automations
+
+
+ What your donors receive
+
+
+ 4 messages over {delays[3]} days. Click any to edit.
+
- {/* WhatsApp status */}
+ {/* ββ WhatsApp status ββ */}
{!waConnected && (
-
-
WhatsApp not connected. Messages start sending once you connect WhatsApp.
+
+
WhatsApp not connected. Messages start once you connect WhatsApp.
)}
- {/* ββ AI HERO β the main CTA ββ */}
+ {/* ββ AI HERO βββββββββββββββββββββββββββββββββββββββββββββ
+ Same image-panel + dark-panel split from the landing page.
+ The photo is the PRODUCT WORKING β a real person receiving
+ a WhatsApp reminder and acting on it.
+ Once AI is running, the hero compacts. The image did its job.
+ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */}
{neverOptimised ? (
- /* State 1: Never optimised */
-
-
-
-
-
Let AI improve your messages
-
- AI writes a different version of each message and tests both with real donors.
- After enough responses, the better version wins automatically.
- Your messages get better over time β without you doing anything.
-
-
+
+ {/* Photo β the moment a reminder lands */}
+
+
+
+ {/* Dark panel β CTA */}
+
+
+
+
AI optimisation
+
+
+ Let AI improve your messages
+
+
+ AI writes a different version of each message and tests both with real donors.
+ The better version wins automatically. Your messages get better over time β without you doing anything.
+
+
+
Uses GPT-4.1 nano Β· Costs less than 1p per message
- {stats && stats.total > 0
- ? `${stats.total} sent this week Β· ${stats.deliveryRate}% delivered`
- : "Winning versions are live. Run another round to keep improving."
- }
+
+ {stats && stats.total > 0 ? `${stats.total} sent this week Β· ${stats.deliveryRate}% delivered` : "Winning versions are live."}
)}
- {/* ββ THE CONVERSATION ββ */}
-
+ {/* ββ THE CONVERSATION ββββββββββββββββββββββββββββββββββββ
+ The WhatsApp mockup uses rounded corners because it IS a
+ phone. Everything else follows brand rules (sharp edges).
+ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */}
+