# Sperry Warmup — Phase 2: Zap Builder (Unattended via Browser Automation)

> **RUN MODE: UNATTENDED**
> **Prerequisite:** Phase 1 (Kit + Pipedrive build) must already be complete. The tags, sequences, and Pipedrive automations should be live before these Zaps fire.
> **Job:** Build the 4 Zaps that wire TidyCal ↔ Kit ↔ Pipedrive together. Use the Claude in Chrome MCP to drive the Zapier web UI. Do not ask Armen to confirm anything. Only stop and message him on a hard blocker.

---

## How to use this spec — UNATTENDED EXECUTION

You are Claude inside an Armen-owned Cowork session. He pasted a one-line prompt with this spec's URL and walked away. Build all 4 Zaps end-to-end via browser automation.

**Hard rules:**

1. **Use the Claude in Chrome MCP** (`mcp__Claude_in_Chrome__*` tools) — DOM-aware, much faster and more reliable than computer use for web apps. If the Chrome extension isn't connected, that's a hard blocker — see Preflight section.
2. **Do not ask Armen to confirm anything.** Just build. He's not watching.
3. **Verify after each Zap.** Once a Zap is built, navigate to the Zaps list and confirm it shows as "On" with the right name. If verification fails, retry once. If still failing, log it and move on.
4. **Send one final report at the end.** What's live, what's flagged, anything skipped.
5. **Idempotent.** Before building any Zap, check the Zaps list for an existing Zap with the same name. If one exists, skip the create.

---

## PREFLIGHT — Run silently before building

### Check 1: Claude in Chrome MCP (HARD BLOCKER if missing)

Look for tools prefixed `mcp__Claude_in_Chrome__*` (navigate, find, form_input, get_page_text, etc.).

- **Found** → continue.
- **Missing** → STOP. Send Armen this message verbatim:

  > **Hi Armen — I can't build the Zaps because the Claude in Chrome extension isn't connected to this Cowork session.**
  >
  > Here's the fix (~3 minutes):
  > 1. Install the Claude in Chrome extension: https://claude.com/chrome
  > 2. Sign in with whatever Google account you normally use
  > 3. Pin the extension to your Chrome toolbar
  > 4. Once installed, open Chrome and navigate to https://zapier.com — make sure you're logged in to your own Zapier account (the one where you built the original TidyCal → Kit Zap earlier today)
  > 5. Come back here and say "go" — I'll pick it up from where I left off.

### Check 2: Zapier session active (verify by navigation)

Use Chrome MCP to navigate to https://zapier.com/app/zaps and check the page text.

- If the page shows a list of Zaps → Armen is logged in. Continue.
- If the page shows a login screen → STOP. Send Armen:

  > **Hi Armen — I can navigate to Zapier but you're logged out.**
  >
  > Open https://zapier.com in Chrome, log in to your own Zapier account (the same one where you built the TidyCal → Kit Zap earlier), then say "go" here and I'll continue.

### Check 3: Connected accounts in Zapier (TidyCal, Kit, Pipedrive)

Navigate to https://zapier.com/app/connections and check that TidyCal, Kit (or ConvertKit), and Pipedrive are all connected.

- All three connected → continue.
- Any missing → log which ones, and proceed with whatever Zaps you can build. For Zaps that require a missing connection, document them in the final report and tell Armen to add the connection in Zapier first.

---

## Zap 1 — Verify / extend the existing TidyCal → Kit Zap

Armen built a basic version of this Zap earlier today (TidyCal booking → tag `booked-calls` in Kit). Verify it exists and extend it with the missing steps.

### What to find

Navigate to the Zaps list. Look for a Zap named something like "TidyCal booking" or that uses TidyCal as the trigger. Open it.

### What to verify (and add if missing)

The complete Zap should look like this:

| Step | Type | Action |
|---|---|---|
| 1 | Trigger | TidyCal — New Booking |
| 2 | Action | Kit — Find or Create Subscriber (match by email) |
| 3 | Action | Kit — Update Subscriber Custom Fields → set `booked_call_datetime`, `booked_call_link`, `meeting_duration_minutes`, `booked_call_timezone` |
| 4 | Action | Kit — Add Tag to Subscriber → tag: `booked-call` (note: singular, NOT `booked-calls`) |
| 5 | Action | Pipedrive — Find or Create Deal in NCA Pipeline (match by person email) |
| 6 | Action | Pipedrive — Update Deal Stage → `Discovery Booked` |

If the existing Zap only has steps 1, 2, 4 (Armen's original build), add steps 3, 5, 6.

If the tag in step 4 is `booked-calls` (plural), change it to `booked-call` (singular) to match the Phase 1 Kit automations. Apply the rename consistently — also update the Kit automation to listen for `booked-call`.

Turn the Zap ON if it isn't already.

---

## Zap 2 — No-show detection (the most critical one)

This is what fires the No-Show Recovery sequence. Without it, the recovery emails never send.

### Build steps (Chrome MCP)

1. Navigate to https://zapier.com/app/zaps and click "Create Zap" (or the equivalent button).
2. Name the Zap: `Sperry Warmup — No-show detection`

3. **Trigger:** Schedule by Zapier — Every Hour (we'll filter inside the Zap to find calls that just ended)

   Alternative if Schedule by Zapier feels heavy: build this as an additional path inside Zap 1 with a "Delay Until" step set to `booked_call_datetime + meeting_duration_minutes + 2 hours`, then continue with the steps below. The Delay Until path is cleaner — use that if available.

4. **Step (if using Schedule trigger):** Kit — Find Subscribers with custom field `booked_call_datetime` between (now - 3 hours) and (now - 2 hours). This finds anyone whose call ended 2–3 hours ago.

5. **Filter:** Continue only if subscriber does NOT have tag `attended-yes` AND does NOT have tag `cancelled-call` AND does NOT have tag `no-show` (so we don't re-tag people who already got marked).

6. **Action:** Kit — Add Tag to Subscriber → tag: `no-show`

7. Turn the Zap ON. Verify it shows in the Zaps list.

---

## Zap 3 — Reschedule sync

So reminder emails re-anchor when prospects move the call.

1. Create new Zap. Name: `Sperry Warmup — Reschedule sync`
2. **Trigger:** TidyCal — Booking Rescheduled (verify TidyCal's reschedule webhook is enabled — see verification step below)
3. **Action:** Kit — Update Subscriber Custom Field → set `booked_call_datetime` to the new booking start time
4. **Action:** Kit — Update Subscriber Custom Field → set `booked_call_link` to the new meeting URL (in case it changed)
5. **Action:** Pipedrive — Update Deal → push expected close date / activity due date to the new time
6. Turn Zap ON.

---

## Zap 4 — Cancellation handling

1. Create new Zap. Name: `Sperry Warmup — Cancellation`
2. **Trigger:** TidyCal — Booking Cancelled
3. **Action:** Kit — Add Tag to Subscriber → tag: `cancelled-call`
4. Turn Zap ON.

(The `cancelled-call` tag triggers the Kit + Pipedrive automations from Phase 1 — exits the Pre-Call Warmup, moves the deal to `Cancelled - Pre-Call`.)

---

## Optional: Zap 5 — Kit-to-Pipedrive bridge

**Build only if Phase 1 reported that the Pipedrive MCP was missing and the deal-stage automations weren't built natively in Pipedrive.** Otherwise skip.

If needed:

1. Create new Zap. Name: `Sperry Warmup — Kit tag → Pipedrive deal stage`
2. **Trigger:** Kit — New Tag Added to Subscriber
3. **Filter / Paths:** Branch on tag name. Use 6 paths:
   - `attended-yes` → Pipedrive: update deal stage to `Discovery Held` + create activity "Discovery follow-up"
   - `no-show` → Pipedrive: update deal stage to `No-Show` + create activity "No-show outreach check"
   - `cancelled-call` → Pipedrive: update deal stage to `Cancelled - Pre-Call`
   - `nurture-long-term` → Pipedrive: mark deal Lost (reason: Long-term nurture)
   - `do-not-contact` → Pipedrive: mark deal Lost (reason: Opted out)
   - (booked-call already handled in Zap 1)
4. Turn Zap ON.

---

## TidyCal verification (Chrome MCP — open TidyCal and check)

After all Zaps are built, navigate to TidyCal and verify these settings on the booking type used for `bosstorque.ai/call`:

1. Navigate to https://tidycal.com/dashboard/booking-types
2. Open the booking type used for the call
3. Check Webhooks settings:
   - Reschedule webhook → must be ON
   - Cancellation webhook → must be ON
4. Check Email settings:
   - Confirmation email → ON (keep — fires immediately after booking)
   - Reminder emails → OFF (Kit handles all reminders now to avoid double-sending)

If any of these are wrong, attempt to flip them via Chrome MCP. If the UI blocks (e.g., admin permission required), document them in the final report.

---

## Final report — what to send Armen when done

Use this exact format. Plain English. Armen-friendly.

```
Hey Armen — Phase 2 done. The Zaps are wired.

WHAT'S LIVE IN ZAPIER
✓ Zap 1: TidyCal booking → Kit + Pipedrive (verified/extended)
✓ Zap 2: No-show detection (this is the critical one — no-show recovery now fires automatically)
✓ Zap 3: Reschedule sync
✓ Zap 4: Cancellation handling
[✓ or ⚠ Zap 5: Kit→Pipedrive bridge — built only if Phase 1 needed it]

[paste Zapier Zap URLs for spot-checking]

TIDYCAL VERIFIED
✓ Reschedule webhook ON
✓ Cancellation webhook ON
✓ Reminder emails OFF
✓ Confirmation email ON

ANYTHING FLAGGED
[list anything that didn't build cleanly + what to do about it]

The full warmup system is now end-to-end automated:
- Booking lands → confirmation + 5-email warmup runs in Kit + deal moves to Discovery Booked in Pipedrive
- Attended → you tag attended-yes in Kit (5 seconds), automation handles the rest
- No-show → Zap 2 auto-tags 2 hours after call end, recovery sequence + No-Show stage move fire automatically
- Cancellation → Zap 4 catches it, exits sequence, deal moves to Cancelled
- Reschedule → Zap 3 syncs new time, reminders re-anchor

Only manual touch left: applying "attended-yes" in Kit after each call. 5 seconds. Once we're past 5+ calls a week, we wire a Zoom webhook and remove that step too.

Ping Jason if anything looks off.
```

---

**End of Phase 2 spec. Run preflight → build the 4 Zaps via Chrome MCP → verify TidyCal settings → send the final report. No mid-process status updates. No confirmation gates.**
