Copy the one-line prompt below. Paste into a new Cowork session. Walk away. Claude builds the entire warmup system in Kit + Pipedrive and sends you a final report when it's done.
Just a fresh chat. No prep needed. Make sure your Kit MCP is connected (Pipedrive MCP optional — fallback handled).
Claude reads the spec, runs preflight checks, builds everything, and sends you a single report when done. You'll only hear from it during the build if there's a hard blocker (e.g., Kit MCP isn't connected).
# Sperry Case Study Campaign — Booked Call Warmup Build Spec (Kit + Pipedrive + Zapier)
> **RUN MODE: UNATTENDED**
> **For:** Claude inside an Armen-owned Cowork session, triggered by Armen pasting the spec URL.
> **Job:** Read this spec, run preflight, then build everything end-to-end across Kit, Pipedrive, and Zapier. Do not ask Armen for confirmation. Only stop and message him if a hard blocker prevents you from continuing.
---
## How to use this spec — UNATTENDED EXECUTION
**Armen does not need to confirm anything.** He pasted a URL into Cowork and walked away. Run the entire build start-to-finish without asking him to approve, confirm, choose between options, or read back the plan.
**The only times you may stop and write a message to Armen:**
1. **Hard blocker** — a required MCP/connector is missing AND there is no fallback that lets you complete that section. Tell him exactly what to do in plain English, then stop and wait.
2. **Authentication failure** — a tool is connected but credentials are bad. Tell him exactly which tool to re-authenticate.
3. **Final report** — when the build is fully complete (or fully blocked), post one summary message with what's live, what's pending, and any manual steps he owes.
**Everything else: just do it.** Skip duplicates. Make reasonable assumptions and note them in the final report. Don't drip status updates while you work — silence is fine until the final report.
**Execution rules:**
1. **Run the Preflight section FIRST** (silently — log results to your own scratch, do not message Armen with the preflight outcome unless there's a hard blocker).
2. **Idempotent build.** Before creating any tag, sequence, or Pipedrive automation, list existing ones. If a same-named one exists, skip the create and reuse it. Never duplicate.
3. **Try the fallback before giving up.** If a Pipedrive MCP is missing, document the Pipedrive automations as Zap recipes in the final report — don't halt. If a Kit MCP is missing, that IS a hard blocker — halt with the Armen-friendly message in the Preflight section.
4. **One write at a time, with verification.** After each email/tag/automation is created, verify it exists with the right config before moving to the next.
5. **On API errors:** retry once. If the second attempt fails, log the failure, skip that item, and continue. Include skipped items in the final report.
6. **Final report only.** Summary: what's live in Kit, what's live in Pipedrive, what manual Zapier work Armen still owes, anything skipped, and any blockers — all in one message at the end. Armen-friendly language, no technical jargon.
---
## PREFLIGHT — Run silently before building
Walk through these checks in your own scratch reasoning. **Do not message Armen with preflight results unless you hit a HARD BLOCKER.** If everything passes or only soft gaps are found, proceed to the build immediately. Note any soft gaps in your scratch — they go in the final report.
### Check 1: Kit MCP (HARD BLOCKER if missing)
Look for tools prefixed `mcp__kit__*`, `mcp__convertkit__*`, or anything with "kit" in the name that lets you create subscribers, tags, sequences, or broadcasts.
- **Found** → log the tool names and continue.
- **Missing** → STOP. Send Armen this message verbatim and wait for him to come back:
> **Hi Armen — I can't finish the warmup build because Kit isn't connected to this Cowork session yet.**
>
> Here's how to fix it (takes ~2 minutes):
> 1. In Cowork, open your sidebar and look for "Connectors" or "MCP Servers"
> 2. Search for "Kit" or "ConvertKit" and click Install
> 3. When it asks for an API key: open Kit → click your profile (top-right) → Account Settings → Advanced → API → V4 API Key → copy it → paste it into Cowork
> 4. Once it shows as connected, just say "go" in this chat and I'll pick up where I left off.
>
> Everything else (Pipedrive sync, Zapier setup) I can handle once Kit is wired up.
### Check 2: Pipedrive MCP (SOFT GAP — fallback available)
Look for tools prefixed `mcp__pipedrive__*` or anything that lets you update deal stages, create deals, or create activities.
- **Found** → log tool names. Use the MCP to verify the NCA Pipeline exists with the required stages (Discovery Booked, Discovery Held, No-Show, Cancelled - Pre-Call, Lost). If any stage is missing, note it for the final report and use the closest match (don't halt).
- **Missing** → log it, fall back to building the Pipedrive automations as Zapier recipes in the final report. Do not halt. Do not message Armen yet — you'll explain in the final report.
### Check 3: NCA Pipeline existence (HARD BLOCKER if missing AND Pipedrive MCP present)
Only relevant if Pipedrive MCP is connected.
- **NCA Pipeline exists** → continue.
- **Doesn't exist** → STOP. Send Armen:
> **Hi Armen — I'm ready to build the warmup, but the NCA Pipeline in Pipedrive doesn't exist yet.**
>
> That pipeline was specced out in March (file: `BOSSTORQUE_Pipedrive_Build_Spec_Audience_Growth_v1_0.docx`) but hasn't been built. The warmup deals would have nowhere to live.
>
> Two options:
> a) Tell Jason it needs to be built first — he has the spec
> b) Reply "skip Pipedrive" and I'll build only the Kit + Zapier pieces — you can hand-update Pipedrive later
>
> Which one?
### Check 4: TidyCal config (SOFT GAP — instructions in final report)
You can't directly verify TidyCal settings from Cowork. Assume the following may need user action and include verification steps in the final report:
- TidyCal reschedule webhook enabled
- TidyCal cancellation webhook enabled
- TidyCal reminder emails turned OFF (Kit handles these)
- TidyCal confirmation email kept ON
Don't halt — build everything else and tell Armen what to flip in TidyCal at the end.
### Check 5: Zapier (SOFT GAP — recipes in final report)
There is no Zapier MCP. Build everything you can in Kit and Pipedrive, then provide Zap recipes (Zap 1 verify/extend, Zap 2 no-show detection, Zap 3 reschedule sync, Zap 4 cancellation) in the final report for Armen or Jason to build manually.
### Check 6: Slack MCP (OPTIONAL — skip if missing)
If `mcp__slack__*` tools exist, optionally post a build-complete message to #tree-care-campaign at the end. If not, skip silently.
### Preflight outcome routing
- All hard checks pass → proceed to build silently
- Hard blocker hit → send the Armen-friendly message above and wait
- Only soft gaps → proceed to build, note gaps for final report
---
## Tags to create (Kit)
If a tag with the same name already exists in the account, skip the create.
| Tag name | Purpose |
|---|---|
| `booked-call` | Applied by Zapier when a TidyCal booking lands. Triggers entry to the Pre-Call Warmup sequence + Pipedrive deal stage move to "Discovery Booked". |
| `attended-yes` | Applied (manually by rep or via future Zoom webhook) after a confirmed attended call. Removes them from Pre-Call Warmup + moves Pipedrive deal to "Discovery Held". |
| `no-show` | Applied by Zapier 2 hours after call end if `attended-yes` is not set. Triggers No-Show Recovery sequence + moves Pipedrive deal to "No-Show". |
| `cancelled-call` | Applied by Zapier when prospect cancels the booking via TidyCal (different from no-show). Exits Pre-Call Warmup + moves Pipedrive deal to "Cancelled - Pre-Call". |
| `nurture-long-term` | Applied if a no-show prospect explicitly asks to slow-track. Exits active sequences, moves to monthly nurture + marks Pipedrive deal Lost (reason: "Long-term nurture"). |
| `do-not-contact` | Applied on explicit opt-out. Suppresses all future sends + marks Pipedrive deal Lost (reason: "Opted out"). |
## Custom fields to verify or create (Kit)
| Field name | Type | Source | Used in |
|---|---|---|---|
| `first_name` | Text | Standard Kit field | All emails |
| `booked_call_datetime` | Datetime | Populated by Zap from TidyCal `booking.starts_at` | Email 4, Email 5, Zap timing math |
| `booked_call_link` | URL | Populated by Zap from TidyCal `booking.meeting_url` | Email 4, Email 5 |
| `meeting_duration_minutes` | Number | Populated by Zap from TidyCal `booking.duration` (default 30 if absent) | No-show detection Zap timing |
| `booked_call_timezone` | Text | Populated by Zap from TidyCal `booking.timezone` | Email 4 friendly display |
If any of these don't exist or aren't being populated by the Zap, flag to the user before proceeding — call-anchored emails will misfire without them.
---
## Sequence 1 — Booked Call - Pre-Call Warmup
**Sequence name:** `Booked Call - Pre-Call Warmup`
**Trigger entry:** tag `booked-call` applied
**Exit triggers:** tag `attended-yes` applied OR tag `no-show` applied OR tag `do-not-contact` applied
**Anchoring:** Emails 1 and 2 are anchored to the date the contact entered the sequence (= booking date). Emails 3, 4, and 5 are anchored to the booked call date (use the contact custom field `booked_call_datetime` populated by the Zap from TidyCal).
### Email 1
- **Send timing:** 10 minutes after sequence entry (NOT immediately — TidyCal sends its own confirmation in seconds, this avoids two simultaneous emails)
- **From:** `Jason at BOSSTORQUE <jason@bosstorque.ai>` (verify sender authentication is set up in Kit before publishing)
- **Subject:** `You're on the calendar — and here's what we'll actually do`
- **Preview text:** `Not a pitch. Not a demo. Here's what to expect.`
- **Body (HTML or rich text):**
```
Hey {{ subscriber.first_name }},
Got your booking — looking forward to it.
Quick heads-up so we make the most of the time: this isn't a pitch call and it isn't a demo. It's 30 minutes where we look at your business, find where the leaks are, and figure out if there's a fit worth exploring further.
For Rob at Sperry Tree Care, that 30 minutes turned into a sub-$1,000 Power Leak assessment that he now projects at $300–500K in returns this year. Could be that for you. Could not be. We'll know in 30 minutes.
Three things to know before we talk:
1. No prep needed. Just show up.
2. Bring one specific problem you'd like a second set of eyes on.
3. Camera on if you can — it's a working session, not a webinar.
Your call link is in the TidyCal confirmation. I'll send a reminder the day before.
Talk soon,
Jason
P.S. If something comes up and you need to reschedule, just hit reply or use the link in the TidyCal email. No problem.
```
### Email 2
- **Send timing:** 1 day after Email 1 (24 hours)
- **From:** `Jason at BOSSTORQUE <jason@bosstorque.ai>`
- **Subject:** `$1,000 in. $300–500K projected out.`
- **Preview text:** `Rob Miron's exact words — and what he meant by them.`
- **Body:**
```
{{ subscriber.first_name }},
Quick story while you've got a couple minutes.
Rob Miron runs Sperry Tree Care — second-generation, 25 years in the business, 20-ish crew, family operation in Eugene. He's the guy on camera saying this:
"This year, we spent less than $1,000 to get our Power Leak assessment — and I honestly believe the $30 to $50,000 we'll invest this year could turn into three to $500,000."
That's not me projecting it. That's him projecting it. And the reason he's confident enough to say that on camera is because we already proved it once — the re-engagement campaign we ran for his customer database pulled hundreds of thousands of dollars out of a list he'd been sitting on for 20 years.
His exact line on that one: "Wildly successful."
Our call later this week is the same Power Leak conversation that started Rob's. No commitment, no pressure. Just an honest look at where your business has revenue leaking out the side and whether we can plug it.
See you then.
Jason
```
### Email 3
- **Send timing:** 2 days before the booked call (anchored to `booked_call_datetime` field, send at booked_call_datetime - 2 days, 9am subscriber local time if available, otherwise 9am Pacific)
- **From:** `Jason at BOSSTORQUE <jason@bosstorque.ai>`
- **Subject:** `Two questions to sit with before we talk`
- **Preview text:** `No homework — just two prompts that'll make our 30 minutes 3x more useful.`
- **Body:**
```
Hey {{ subscriber.first_name }},
Couple days out from our call. No prep required — but if you have five minutes, two questions worth sitting with:
1. If you had a system that brought in 30–50% more revenue from work you're already doing — same customers, same crew — what would you do with that money? Pay yourself more? Hire? Buy equipment? Take an actual vacation?
2. Where in your business does it feel like money is sitting on the table you're not picking up? Not a guess — gut answer. Could be the customer database. Could be a service line you stopped marketing. Could be reviews. Could be a referral channel you never built.
You don't need to send me answers. Just sit with them. When we get on the call, we'll start from wherever those two questions take you.
This is the same starting point Rob used. His gut answer on question 2 was: "Hundreds of thousands of dollars... not communicating with them." That was the database he hadn't touched in 20 years. The first campaign we ran on it was the one that ended up "wildly successful."
Your version is probably different. But there's almost always one.
Talk soon,
Jason
```
### Email 4
- **Send timing:** 1 day before the booked call (anchored to `booked_call_datetime` - 1 day, 9am subscriber local time)
- **From:** `Jason at BOSSTORQUE <jason@bosstorque.ai>`
- **Subject:** `We're on for tomorrow`
- **Preview text:** `Quick reminder + your link. No prep needed.`
- **Body:**
```
{{ subscriber.first_name }},
Just a heads-up — we're on for tomorrow.
Your call link: {{ subscriber.booked_call_link }}
Time: {{ subscriber.booked_call_datetime }} ({{ subscriber.booked_call_timezone }})
(If the link or time field is empty for any reason, your TidyCal confirmation email has the same info.)
What to expect:
- 30 minutes, camera on if you can
- I'll ask about your business, what's working, what's not
- We'll identify 1–3 specific revenue leaks I think we can plug
- If there's a fit, I'll explain what working together looks like. If there isn't, you'll leave with a usable list anyway.
Nothing to prepare. Just show up.
If something blew up your schedule, the reschedule link is in your original TidyCal confirmation, or just hit reply.
See you tomorrow,
Jason
```
### Email 5
- **Send timing:** 2 hours before the booked call (anchored to `booked_call_datetime` - 2 hours)
- **From:** `Jason at BOSSTORQUE <jason@bosstorque.ai>`
- **Subject:** `See you in a couple hours`
- **Preview text:** `Link's below. No prep. Just show up.`
- **Body:**
```
{{ subscriber.first_name }},
About to head into our call together.
Link: {{ subscriber.booked_call_link }}
If anything's blown up on your end, just hit reply — I'd rather reschedule than have you show up stressed. Otherwise, see you in two hours.
— Jason
```
---
## Sequence 2 — Booked Call - No-Show Recovery
**Sequence name:** `Booked Call - No-Show Recovery`
**Trigger entry:** tag `no-show` applied
**Exit triggers:** tag `booked-call` re-applied (rebook) OR tag `nurture-long-term` applied OR tag `do-not-contact` applied OR sequence completes
**Anchoring:** All emails anchored to the date the contact entered this sequence (= no-show timestamp).
### Email 1
- **Send timing:** 1 hour after entry
- **From:** `Jason at BOSSTORQUE <jason@bosstorque.ai>`
- **Subject:** `Didn't see you — all good?`
- **Body:**
```
Hey {{ subscriber.first_name }},
Didn't catch you at our scheduled time — no problem at all, that happens.
If you still want to grab another slot, here's the link: https://bosstorque.ai/call
If life got in the way and the timing isn't right anymore, just hit reply and let me know. Either way, no hard feelings.
— Jason
```
### Email 2
- **Send timing:** 2 days after entry
- **From:** `Jason at BOSSTORQUE <jason@bosstorque.ai>`
- **Subject:** `One thing I wanted to mention`
- **Body:**
```
{{ subscriber.first_name }},
Quick note while you're on my mind.
When Rob Miron and I first talked, he told me the most useful thing about the assessment wasn't even the result — it was the realization. His exact quote, on camera:
"It really shined light on the potential investment that I could make in the company and how much it could benefit the company. It got my wheels turning — wow, this could be extremely cost effective in helping me scale."
That's the part that doesn't happen if we don't have the conversation. The other 90% of value — the campaigns, the systems, the ROI — comes later. But the wheels-turning moment is the cheap one, and it's the one most owners never get.
If you want to grab that 30 minutes, the link's still open: https://bosstorque.ai/call
— Jason
```
### Email 3
- **Send timing:** 5 days after entry
- **From:** `Jason at BOSSTORQUE <jason@bosstorque.ai>`
- **Subject:** `Last call — should I close your file?`
- **Body:**
```
{{ subscriber.first_name }},
I'm not going to keep nudging if the timing's off — I'd rather hear that than keep filling your inbox.
Three options:
1. You still want to talk, just got buried — rebook here: https://bosstorque.ai/call
2. Timing's wrong but you want to stay on the list for later — hit reply with "later" and I'll move you to the slow track.
3. Not interested — hit reply with "no thanks" and I'll close it out. No hard feelings.
Whichever fits, takes 5 seconds.
— Jason
```
### Email 4
- **Send timing:** 10 days after entry
- **From:** `Jason at BOSSTORQUE <jason@bosstorque.ai>`
- **Subject:** `Going quiet — but you're on the list`
- **Body:**
```
{{ subscriber.first_name }},
Not going to ping you again on the call. Sounds like the timing's not right, and that's fine.
Couple of things on the way out:
- You'll still get the occasional case study or insight from me — once a week, sometimes less, never spam.
- If anything changes and you want to talk, just hit reply. I keep my inbox open.
- The Sperry case study and the rest of the work is on bosstorque.ai if you want to dig through.
Appreciate you giving it a look in the first place.
— Jason
```
---
## Automations to wire (inside Kit)
If Kit's automation engine supports it, create the following rules. If the same automation already exists, skip.
1. **WHEN** tag `booked-call` is applied
**THEN** subscribe to sequence `Booked Call - Pre-Call Warmup`
**AND** unsubscribe from any active cold sequences (Track A, Track B, or anything tagged as a top-of-funnel campaign)
2. **WHEN** tag `attended-yes` is applied
**THEN** unsubscribe from `Booked Call - Pre-Call Warmup`
**AND** remove tag `no-show` if present (handles the late-attendance / false-positive case where the no-show Zap already fired)
**AND** unsubscribe from `Booked Call - No-Show Recovery` if present
3. **WHEN** tag `no-show` is applied
**THEN** unsubscribe from `Booked Call - Pre-Call Warmup`
**AND** subscribe to `Booked Call - No-Show Recovery`
4. **WHEN** tag `booked-call` is applied AND subscriber is currently in `Booked Call - No-Show Recovery`
**THEN** unsubscribe from `Booked Call - No-Show Recovery`
**AND** remove tag `no-show`
**AND** subscribe to `Booked Call - Pre-Call Warmup`
5. **WHEN** tag `cancelled-call` is applied
**THEN** unsubscribe from `Booked Call - Pre-Call Warmup`
**AND** unsubscribe from `Booked Call - No-Show Recovery` if present
(No automatic recovery sequence — cancellations are handled case-by-case by the rep. Optional: build a 1-touch "we're here whenever" follow-up later.)
6. **WHEN** tag `do-not-contact` is applied
**THEN** unsubscribe from all sequences
**AND** suppress all future broadcasts
---
## Pipedrive integration (cross-system mirror)
Kit handles email; Pipedrive holds the deal record. Tag changes in Kit must mirror to deal-stage moves in Pipedrive so the rep always sees ground truth in one place. The NCA Pipeline (per `BOSSTORQUE_Pipedrive_Build_Spec_Audience_Growth_v1_0.docx`) already exists — this spec assumes it does. If it doesn't, stop and flag the user.
### Pipedrive stages this spec touches (in NCA Pipeline)
Verify these stage names exist in NCA Pipeline before building automations. If the stage names differ in the user's account, ask them to confirm the mapping rather than assuming.
| Stage name | When the deal sits here |
|---|---|
| `Discovery Booked` | Booking landed via TidyCal. Pre-Call Warmup is firing in Kit. |
| `Discovery Held` | Call attended. Sales rep takes ownership. Email automation goes silent. |
| `No-Show` | Call slot passed without attendance. No-Show Recovery sequence is firing in Kit. |
| `Cancelled - Pre-Call` | Prospect cancelled before the call. No active automation. |
| `Lost` | Final exit. Reason field tells the story (Long-term nurture / Opted out / Recovery exhausted). |
### Pipedrive automations to wire
Use Pipedrive's native automations engine (Settings → Automations) OR build via the Pipedrive MCP if available. If neither is feasible, document each as a manual operation the rep does.
1. **WHEN** Kit tag `booked-call` applied → **Pipedrive**: find deal by contact email in NCA Pipeline; if found, move to stage `Discovery Booked`; if not found, create new deal in NCA Pipeline at `Discovery Booked` stage with the contact's name, email, and `booked_call_datetime` as the deal's expected close date proxy.
2. **WHEN** Kit tag `attended-yes` applied → **Pipedrive**: move deal to stage `Discovery Held` + create activity "Discovery follow-up" due 1 day after call, assigned to the deal owner (Jason for now).
3. **WHEN** Kit tag `no-show` applied → **Pipedrive**: move deal to stage `No-Show` + create activity "No-show outreach check" due 3 days out (so the rep verifies the recovery sequence is doing its job and decides whether to add a personal touch).
4. **WHEN** Kit tag `cancelled-call` applied → **Pipedrive**: move deal to stage `Cancelled - Pre-Call` + create activity "Cancellation follow-up — should we rebook or close?" due 2 days out.
5. **WHEN** Kit tag `nurture-long-term` applied → **Pipedrive**: mark deal `Lost` with reason `Long-term nurture` + apply person label `nurture-active`.
6. **WHEN** Kit tag `do-not-contact` applied → **Pipedrive**: mark deal `Lost` with reason `Opted out` + apply person label `do-not-contact` + clear future activities on the deal.
7. **WHEN** No-Show Recovery sequence completes (Email 4 sent, no rebook) → **Pipedrive**: mark deal `Lost` with reason `Recovery exhausted - no rebook` + leave person on the list (they can re-enter via a new cold sequence later).
### Build logic — Kit-to-Pipedrive bridge
If a Pipedrive MCP exists in the Cowork session, you (Claude) wire automations 1–7 directly using Pipedrive's automation API (or update_deal tool calls in Zaps if the MCP only supports basic operations).
If no Pipedrive MCP, the bridge is built in Zapier:
- Zap trigger: Kit "Tag added to subscriber"
- Zap filter: tag name matches one of `booked-call`, `attended-yes`, `no-show`, `cancelled-call`, `nurture-long-term`, `do-not-contact`
- Zap action: Pipedrive "Update deal" / "Create activity" / "Mark deal lost" depending on which tag fired
Document each Zap as a recipe in the final report so the user can build them manually if needed.
---
---
## Zaps to build (manual — Zapier, outside Cowork)
There is no Zapier MCP that creates Zaps from inside Cowork. Document each Zap below as a recipe in the final report. The user (Armen or Jason) must build these manually in Zapier. **Without these Zaps, the warmup system will not function end-to-end.**
### Zap 1 — TidyCal booking → Kit + Pipedrive (the entry point)
**Status:** Already partially built per Armen's setup today (TidyCal booking → Kit tag `booked-calls`). Verify and extend.
**Trigger:** TidyCal — New Booking
**Steps:**
1. Find/Create Subscriber in Kit (by email)
2. Update Kit subscriber custom fields: `booked_call_datetime`, `booked_call_link`, `meeting_duration_minutes`, `booked_call_timezone`
3. Apply Kit tag: `booked-call`
4. Find/Create Deal in Pipedrive NCA Pipeline (by contact email)
5. Set Pipedrive deal stage: `Discovery Booked`
6. Continue to Zap 2 (no-show detection delay) within the same Zap, OR fire a separate scheduled Zap.
### Zap 2 — No-show detection (the most critical gap to close)
**Status:** Does not exist. Without this, the No-Show Recovery sequence and the Pipedrive No-Show stage move never fire.
**Trigger:** Delay Until — `booked_call_datetime + meeting_duration_minutes + 2 hours`
**Steps:**
1. Find Subscriber in Kit by email
2. Filter: subscriber does NOT have tag `attended-yes` AND does NOT have tag `cancelled-call`
3. Apply Kit tag `no-show` (this triggers the rest via Kit + Pipedrive automations)
### Zap 3 — TidyCal reschedule → Kit field update
**Status:** Does not exist. Required so reminder emails re-anchor correctly when prospects reschedule.
**Trigger:** TidyCal — Booking Rescheduled (requires reschedule webhook to be enabled in TidyCal)
**Steps:**
1. Update Kit subscriber custom field `booked_call_datetime` to the new booking time
2. Update Kit subscriber custom field `booked_call_link` if changed
3. Update Pipedrive deal — push expected close date / activity due date to new booking time
### Zap 4 — TidyCal cancellation → Kit + Pipedrive
**Status:** Does not exist.
**Trigger:** TidyCal — Booking Cancelled
**Steps:**
1. Apply Kit tag `cancelled-call` (this triggers the rest via Kit + Pipedrive automations)
### Zap 5 — Kit tag → Pipedrive bridge (only if no Pipedrive MCP)
**Status:** Build only if Pipedrive automations cannot be built natively or via MCP.
**Trigger:** Kit — Subscriber tagged
**Steps:** Filter on tag name → take corresponding Pipedrive action per the Pipedrive automations table above.
---
## Manual override workflow (the rep's job)
The system is designed so the rep does ONE thing after every call: apply the right tag in Kit.
| What happened on the call | Rep's action (in Kit) | What fires automatically |
|---|---|---|
| Attended, conversation went forward | Apply tag `attended-yes` | Pre-Call exits, deal moves to Discovery Held in Pipedrive, follow-up activity created |
| Attended late, but the no-show Zap already fired | Apply tag `attended-yes` | Removes `no-show` tag, exits Recovery sequence, moves deal back to Discovery Held |
| No-show, no contact | Do nothing — Zap fires automatically 2 hours after call end | Recovery sequence starts, deal moves to No-Show in Pipedrive |
| Prospect explicitly cancelled before call | Confirm `cancelled-call` was applied by Zap 4 (or apply manually) | Pre-Call exits, deal moves to Cancelled in Pipedrive |
| Prospect asked to slow-track during recovery | Apply tag `nurture-long-term` | Exits sequences, deal Lost (Long-term nurture) |
| Prospect explicitly opted out | Apply tag `do-not-contact` | All sequences suppressed, deal Lost (Opted out) |
Tagging in Kit is a 5-second action. Once volume justifies it, automate via Zoom webhook (auto-`attended-yes` based on attendee email match).
---
## Validation checklist (report back at the end)
### Kit
- [ ] All 6 tags exist (`booked-call`, `attended-yes`, `no-show`, `cancelled-call`, `nurture-long-term`, `do-not-contact`)
- [ ] All 5 custom fields exist (`first_name`, `booked_call_datetime`, `booked_call_link`, `meeting_duration_minutes`, `booked_call_timezone`)
- [ ] Sequence `Booked Call - Pre-Call Warmup` exists with 5 emails, correct subjects, correct timing (Email 1 delayed 10 min, Emails 3–5 anchored to call date)
- [ ] Sequence `Booked Call - No-Show Recovery` exists with 4 emails, correct subjects, correct timing
- [ ] All 6 in-Kit automations wired (entry, attended-yes with no-show clear, no-show, rebook re-entry, cancelled, do-not-contact)
- [ ] Sender authentication verified in Kit for `jason@bosstorque.ai`
- [ ] No duplicates created
### Pipedrive
- [ ] NCA Pipeline confirmed to exist
- [ ] Required stages present: Discovery Booked, Discovery Held, No-Show, Cancelled - Pre-Call, Lost (with reason field)
- [ ] All 7 Pipedrive automations wired (or documented as manual Zap recipes if Pipedrive MCP unavailable)
### Zapier (manual — flag to user)
- [ ] **Zap 1** (TidyCal booking → Kit + Pipedrive entry) — verified or built. This is the entry point. Without it, nothing happens.
- [ ] **Zap 2** (No-show detection — delay 2hrs after call end, apply `no-show` if `attended-yes` not present) — built. **Without this Zap, the entire no-show recovery system is dead.** Highest priority to confirm.
- [ ] **Zap 3** (TidyCal reschedule → Kit field update) — built. Reschedules will misfire reminder emails without it.
- [ ] **Zap 4** (TidyCal cancellation → `cancelled-call` tag) — built.
- [ ] **Zap 5** (Kit tag → Pipedrive bridge) — built only if no Pipedrive MCP.
### TidyCal
- [ ] Reschedule webhook enabled
- [ ] Cancellation webhook enabled
- [ ] Reminder emails turned OFF (Kit handles all pre-call reminders to avoid double-sending)
- [ ] Confirmation email kept ON (for the immediate-after-booking touch — Kit Email 1 fires 10 min later)
### Final report — what to send Armen when the build is done
Use this exact format. Plain English, no jargon, no internal validation language. Armen is a content strategist, not an engineer — write like you're handing off to a smart colleague who knows marketing but doesn't care about API call signatures.
```
Hey Armen — warmup is built. Here's what's live and what's still on you.
WHAT'S LIVE IN KIT
✓ 6 tags created (or already existed)
✓ 5 custom fields verified
✓ Pre-Call Warmup sequence — 5 emails ready to send
✓ No-Show Recovery sequence — 4 emails ready to send
✓ All in-Kit automations wired (entry, attended, no-show, rebook, cancellation, opt-out)
[paste any URLs to spot-check]
WHAT'S LIVE IN PIPEDRIVE
[either: ✓ all 7 deal-stage automations wired in NCA Pipeline]
[OR: ⚠ Pipedrive MCP wasn't connected, so I documented these as Zap recipes below — see "What you owe me" section]
WHAT YOU OWE ME (manual setup, ~30 minutes total)
1. Build Zap 2 in Zapier — this is the most important one. Without it, the no-show recovery sequence will never fire.
Recipe:
- Trigger: Delay Until — booked_call_datetime + meeting_duration + 2 hours
- Filter: subscriber doesn't have tag "attended-yes" AND doesn't have tag "cancelled-call"
- Action: Apply Kit tag "no-show"
2. Build Zap 3 in Zapier — reschedule sync (so reminder emails update when prospects move the call):
- Trigger: TidyCal — Booking Rescheduled
- Action: Update Kit subscriber custom field "booked_call_datetime"
3. Build Zap 4 in Zapier — cancellation handling:
- Trigger: TidyCal — Booking Cancelled
- Action: Apply Kit tag "cancelled-call"
4. Flip these in TidyCal (Settings → your booking type):
- Reschedule webhook: ON
- Cancellation webhook: ON
- Reminder emails: OFF (Kit handles all reminders now)
- Confirmation email: keep ON
- Tone of confirmation email: edit to match the peer voice in Kit Email 1 (currently transactional)
5. Verify sender authentication for jason@bosstorque.ai in Kit (Account → Email Settings → Sender Authentication). If not set up, deliverability will tank.
6. Spot-check 1–2 emails in Kit to confirm formatting, links, and merge tags render correctly.
ANYTHING SKIPPED OR FLAGGED
[list anything that didn't build cleanly + what action it needs]
That's it. Once those Zaps are built, the system runs end-to-end with no manual work except applying the "attended-yes" tag in Kit after each call (5 seconds per call).
Ping Jason if anything looks off.
```
---
**End of spec. Run preflight silently → build everything → send the single final report. No mid-process status updates. No confirmation gates. No questions unless a hard blocker forces it.**