Recruiting Appointment Setter

Status
active
Tier
Tier 1 — Operating business
Owner
Ryan Colston
Started
2026-04-15

One-line description. Build a recruiting funnel where an SDR works the 7,902-agent High/Moderate slice of the Courted database inside the MM Ops FUB instance, booking calls for Ry.

Why

The old Recruiting-Coordinator onboarding SOP described a workflow production couldn't support. Hand-written outreach_log CRM-in-BQ. Fabricated schema. 2-month-stale pipeline. No Indeed automation anywhere. Patching the SOP wouldn't fix the underlying design.

So I redesigned. FUB is the CRM. The SDR lives in FUB. BigQuery is just the data source. Goal: 50 hires (stretch 100) from the Courted pool.

Current state

Active. Plan C locked 2026-05-06 — Ry's MM FUB role is Agent / isAdmin: false, so FUB-native Automations + Action Plans aren't usable. Cadence runs externally via a Cloud Run service. Tag-based workflow, no new FUB stages.

Architecture — Plan C

Layer Where Built by
Tags + Smart Lists + Custom Field FUB UI (Agent role) Ry
Bulk import (7,902 records, one-shot) Local Python Script TBD
Cadence engine (Day 1/3/7/14/30 task creation, Day 31 nurture flip) Cloud Run + Cloud Scheduler (15 min poll) ~/platform/services/pos-fub-cadence/ TBD
State tracking Notes-as-state on each FUB profile Self-healing, no external DB

The motion (5 stages)

  1. SDR dial — Mulrenin Circle Prospecting structure → scripts/setter-dial-script.md
  2. Appointment A — Ry's 15-min qualifying call → scripts/appointment-a-ry-call.md
  3. Appointment B — Hormozi value equation pitched in full (TBD)
  4. Offer extended — terms + paperwork + derisking confirmed (TBD)
  5. Onboarding — first 30 days at Listing Legends (TBD)

Hormozi offer payload

Three offers, ranked by research (43% of agents stay for culture/leadership; only 13% for pay):

  1. Leadership / Effort lever — Market Manager who knows your name, runs CMAs in 24-48 hr
  2. Time + Risk lever — 90/10 split on first 5 deals; "we don't make a dollar off you until deal 6"
  3. Likelihood lever — Avg Orchard agent does 6 deals/year, median at their shop does 3, same DFW

Pitched in full only on Appointment B. SDR and Appointment A surface gaps via Mulrenin questions; never name the offer.

Next 3 actions

  1. Build the 4 FUB smart lists in the UI (Courted — To Call, Needs Follow-Up, Meetings Booked, Nurture).
  2. Write scripts/import_courted_to_mm_fub.py. Dry-run 10 records, verify, full import for 7,902.
  3. Spec + build the ~/platform/services/pos-fub-cadence/ Cloud Run service (Plan C cadence engine).

Decisions log

Open issues

Script work: - [ ] Field-test the SDR script on 5 calls - [ ] Draft Appointment B (consult) script - [ ] Draft the "rundown" doc (Ry bio + 3-bullet team overview) - [ ] Draft post-Appointment-B flow (offer extended → onboarding)

FUB UI (Plan C, Agent-role buildable): - [ ] Build 4 smart lists with tag filters - [ ] Confirm Previous Brokerage custom field editable

Bulk import: - [ ] Write scripts/import_courted_to_mm_fub.py - [ ] Dry-run 10 records → verify → delete → full run (7,902)

Cadence service (Plan C): - [ ] Write design spec → docs/plans/2026-05-06-plan-c-cadence.md - [ ] State-tracking method: default to notes-as-state (vs. BigQuery state table) - [ ] Cadence days: default Day 1/3/7/14/30 + Day 31 nurture flip - [ ] Meeting-scheduled notification mechanism (FUB note + @mention only?) - [ ] Build + deploy + stage-roll on 5 test records

Hire: - [ ] Hire the SDR (paused project still has the OLJ pipeline)

Locked scope (no rework): - One-time bulk import. No delta sync. - Tag-based workflow. No new FUB stages. (Plan C) - Tag courted only at import. No tier tags. Plus bad-phone for phone hygiene flagging. - Hard-skip records with invalid email format. Net import: 7,876 of 7,902 (26 skipped to rejected.csv). - All contacts assigned to Ry (FUB user ID 13) in stage "Lead". - Courted metadata in first Note on each profile. - Cadence runs externally via Cloud Run, not FUB Automations. (Plan C)

References