Internal SOP. Not for client distribution.

Sales process and
system SOP

One unified process for both offers. DFY and AC routed through the same application, the same lead-facing calendars, the same closing process, the same pipeline, and the same speed-to-lead and follow-up discipline. This document is the single source of truth for how we sell at Acquisition Network.

At a glance

Read first

30-second punchline

This is a proposed sales process rebuild for review. End-to-end: two offers, one unified application with a capital fork, two lead-facing calendars, a 2-call default close with NDA + $5K deposit micro-commitments, defined pipeline stage criteria, enforced lost reasons, daily and weekly cadences, and a KPI dashboard spec built on a proven internal architecture. Most sections are drafted spec waiting for team or owner review. Four items need explicit leadership decisions today. Two sections are still entirely TBD.

Status board · every section, one screen

22 sections in the SOP. Every section is a proposal until leadership approves it. The table below groups by current status. Section numbers map to anchor links in the left nav. Click to jump.

📋 Designed and ready for implementation (12)

These sections have a complete v0.1 design. No further open questions inside the section itself. Ready to implement on leadership approval. Each row describes what the section actually proposes.

Section What it proposes
02 Two offers Done For You (DFY): we acquire a profitable business on the client's behalf with their funds, full-service. Acquisition Consultant (AC): we train the lead to become a paid acquisition consultant earning commissions on deals they help close for clients. Either offer can be the upsell or the downsell, decided live on the consult by the closer reading both DFY and AC scores from the application.
03 Lead sources Four sources, two live and two future. Live: Meta paid ads to DFY VSL funnel, and inbound job platforms (LinkedIn etc.) reframed as the AC opportunity. Future: web/app self-serve and an AC webinar funnel. All four route through the same unified application (Section 04) into the same lead-facing calendars (Section 06). Brendan's platform rebuild consolidates today's two parallel application forms within 30 days.
05 Routing model Three routing lanes based on dual-score thresholds from Section 04. Either score ≥ 70 routes the lead directly to a Universal Consult with a closer (60 min). Both scores 40 to 69 (or data incomplete) routes to Universal Discovery with a setter (30 min). Both scores below 40 with no capital and no time goes straight to Disqualified, no calendar booking, lost reason logged. Cross-sell is the default mode on every consult.
06 Calendar architecture Four calendars total, split into two roles. Lead-facing: Universal Discovery (setter, generic reminders) and Universal Consult (closer, generic reminders). Internal-only: DFY Follow Up Consult and AC Follow Up Consult, booked by closer ONLY after Consult 1 when the offer path is known from a real call. Setters never make an offer-specific calendar choice. Leads never see the FU calendar names. Cognitive load split is the win.
07 Closing process 2-call default close with a DFY-only 3-call exception. Consult 1 is path-finding only: no pricing, no contract talk, ends with NDA signature ask for DFY leads (unlocks deeper client results feed). Consult 2 is full pitch + price reveal + objection handling + lite contract review + $5K deposit ask for DFY, which triggers a Pre-Onboarding experience while the closer chases signed contract and balance wire. Consult 3 only fires when Consult 2 doesn't close on a DFY deal: live contract walkthrough, signature on the call.
08 Speed to lead Every new lead is on a phone call attempt within 5 minutes of arrival. Single mechanism: GHL Power Dialer manual action queue. The setter opens the dialer and burns the queue top to bottom. No competing mechanisms, no Sheets fallback, no other tools. New lead notifications interrupt anything except a live call.
09 Dialer cadence GHL only. Wave Power Dialer is deprecated. One workflow drives the entire call cadence, triggered by new contact or by Total Outbound Call custom field increment. Cadence ladder: 0 = immediate, 1 = +3 hours (same-day double tap), 2 = +1 day, 3 to 6 = +1 day each, 7 to 9 = +3 days each, 10 to 11 = +7 days each, 12 = stop and disqualify.
10 Call dispositions + note-taking Five mutually-exclusive GHL dispositions (No Answer/VM, Bad Contact, Connected-Set, Connected-No-Set, Connected-Disqualified). Sixth slot intentionally reserved. Granular loss reasons live on a separate lost_reason custom field (Section 13), not on disposition. Note required within 15 min of every call except pure No Answer. EOD audit flags reps whose note count is more than 2 below their Connected disposition count.
11 Pipeline stages All 15 GHL pipeline stages with written entrance criteria, exit criteria, required task, and owner. Reps move stages immediately when the criterion fires, not at end of day. The pipeline view becomes the live state of every lead. Closed-Lost and Disqualified require lost_reason custom field set before the move (workflow-enforced). Section 07 journey milestone custom fields populate within stages to show micro-commitments (NDA signed, deposit paid, contract sent, wire received).
12 Never-lose-a-lead rule Every open opportunity must be in a power dialer queue OR have a future-dated task. No third state allowed. Long Term Follow Up is the only legal limbo, and requires a future-dated task with a written reason. No-show recovery is automated via setter/closer custom fields: closer marks no-show in GHL within 5 min, workflow reassigns the lead back to the original setter, creates a high-priority recovery task, fires an auto-SMS to the lead.
13 Lost reason taxonomy Ten lost reasons (Do Not Contact, Never Opted-In, Went With Competitor, Bad Contact Info, Never Answered, Bad Timing, Insufficient Funds, Not Interested, Abandoned/Ghosted, Proof of Concept Objection). The lost_reason custom field is REQUIRED before any Disqualified or Closed-Lost move; GHL workflow blocks otherwise. Per-loss-reason automations trigger off this field (not on disposition), so granular workflows still fire even though we only have 5 disposition slots.
18 KPI dashboard and reporting Custom dashboard built in the existing AN dashboard sub-project. Eight tabs: KPIs (funnel economics), Funnel (stage drop-offs), Velocity (cycle times), Show rate, Leaderboard, Bookings, Closes, Ingest (warehouse health). Four integrations: GHL, Hyros (multi-touch attribution), Meta Marketing API (ad spend), Brendan's application platform (webhook). Cloudflare D1 data warehouse with KV-cached payloads. Reps don't double-enter anything that GHL captures structurally; manual input only for plan/blockers/notes.
19 Sales ops cadences Daily 8:05a standup (15 min: wins opener, yesterday's KPIs, today's plan, week-to-date pacing check, blockers signoff). Monday 9:30a client wins recap + sales training (45 min). Wednesday 3p call review / coaching cycle (1 hr, 2 reps reviewed in rotation). Friday 4:30p sales ops audit. Quarterly taxonomy review. Client wins library (every Closed-Won opp gets a win_story field within 24 hrs) feeds all of them.

🟡 Drafted, needs team or owner review (8)

These sections have a v0.1 draft but the design needs walkthrough with the named reviewer before going live. Walking through and locking these is the immediate post-presentation work.

Section What it proposes Reviewer
01 Why we are rebuilding Names the 16 specific things broken in today's funnel (no formal scoring, dual dialer systems, leads in limbo, sales ops broken, no daily reporting accuracy, no daily KPI meeting, no call coaching, no client wins library, lost reasons not tracked, etc.) and the 8 guarantees the rebuilt SOP delivers. Leadership review for accuracy and completeness. Leadership
04 Application + scoring Capital-fork on Page 1 (the honest qualifier, not preference-based) splits the form into DFY and AC branches with tailored questions per branch. Universal questions on both branches feed two scoring rubrics: DFY score (max 100) and AC score (max 100). Routing decision uses either score ≥ 70 as the qualified threshold. Weights, thresholds, and exact question copy are all v0.1 proposals that need Chris's calibration before Brendan's form build hits production. Chris
14 Setter day Hour-by-hour routine: 8:00a clock in, 8:05a standup, 8:20a morning audit (zero open opps without tasks), 8:30a New Leads dialer queue, 9:30a No Answer queue, 10:30a Universal Discovery calls, 12:00p lunch, afternoon repeats with mid-day queue refresh, 4:30p closing audit, 5:00p submit EOD. Daily targets are placeholder estimates (100 dials, 5 sets, 4 shows) that need calibration with real data. Hard rules locked. Setter team
15 Closer day Hour-by-hour routine: 8:30a clock in, 8:45a standup, 9:00a pre-call prep block (read both scores on every Consult 1 lead), 9:45a morning audit, 10:00a Contract Negotiations block, 10:30a consult block 1, lunch, afternoon FU Consults block + tasks + consult block 2, 4:30p closing audit, 5:00p submit EOD. Daily targets (4-6 consults, 2+ contracts sent, 1+ close) are placeholders needing real-data calibration. Hard rules locked. Closer team
16 Follow-up system Half-defined. Calendar-driven FU (DFY FU Consult, AC FU Consult per Section 06) and post-call nurture (driven by service_dfy and service_ac stage transitions) are designed. What remains undefined: non-call FU mechanics between consults (SMS / email / voicemail cadence, FU1/FU2/FU3 templates per channel, exit criteria for when FU stops and lead moves to Long Term Follow Up or Closed-Lost, coordination with auto-nurture to avoid double-touching). Sales ops
20 Rep onboarding Existing rep onboarding SOP lives in a separate document outside this site. Needs two actions: (1) optimize it against the v0.5+ sales process described here (especially call dispositions, note-taking, daily routines, closing process), (2) port it into this SOP site as the canonical Section 20 content. Owner of that work not decided. Sketch of week-1-through-4 onboarding included as a placeholder. Sales ops
22 Compliance Flags the topics that need real legal review before scaling outbound: TCPA (telephone consumer protection), SMS opt-in consent language on the application form, Do Not Call registry compliance, call recording disclosure (state-by-state all-party vs one-party rules), privacy policy, CAN-SPAM for email marketing. The SOP does NOT draft policy; it lists the conversations that need to happen with legal counsel. Legal / external counsel

⚠ Needs explicit leadership decision (4)

Decision Recommendation Where
Personalization layer on calendarsOption B (Hybrid): universal calendars + per-offer reminders/videos via service_dfy + service_ac fields.Section 06
Consult 2 call sequencingLock the order: pitch → price → objections → lite contract review → price drop → close + deposit ask. Closer team confirms.Section 07
AC parallel mechanicsDefine AC equivalents to DFY NDA + $5K deposit + Pre-Onboarding. Probably no NDA, smaller deposit or full payment, lighter Pre-Onboarding.Section 07
Pre-approved price drop listDefine the 2-3 structured incentives closers can offer (waive setup, payment plan, etc.). No freelance discounting.Section 07

🔴 Still TBD (2)

Section What needs to be built Blocker
17 Contracts + paymentsPlatform, automation, tracking view, payment processor, NDA + deposit mechanics, refund policy, per-offer templates, onboarding handoff.Owner unassigned
21 Rep offboarding + reassignmentProcess for handling open opps, FU tasks, in-flight contracts, SMS threads when a rep leaves.Owner unassigned

Next steps

  1. Lock the 4 leadership decisions today so Brendan can wire personalization, closers can train on the locked sequencing, and the price-drop list circulates.
  2. Chris reviews Section 04 within the week so scoring is locked before Brendan's form build hits production.
  3. Port the rep onboarding SOP into Section 20. Assign owner.
  4. Brendan's platform target live within 30 days. Transitional state on Femi + GHL until then.
  5. Staff the sales ops lead role or explicitly assign founder to fill in until staffed.
  6. AN dashboard sub-project: port from the proven internal dashboard pattern, configure AN-specific custom fields, ship to its own Cloudflare Pages project.

Canonical naming (one thing, three names)

The same calendar, pipeline stage, and call sometimes go by different names depending on context. Reference table for anyone reading the deeper sections:

Calendar (Section 06) Pipeline stage (Section 11) Call number (Section 07)
Universal DiscoveryDiscovery Call(setter touchpoint, pre-Consult 1)
Universal ConsultFree ConsultationConsult 1
DFY FU Consult / AC FU ConsultFollow Up ConsultsConsult 2 (and 3 if DFY)
01

Why we are rebuilding the process

Draft

Two offers + four lead sources + no defined process today = a leaky funnel. This section names what is broken and what we are guaranteeing instead.

We have two offers and (soon) four lead sources but no single, documented sales process that ties them together. The funnel leaks in predictable places. Reps don't follow the systems that already exist. Leadership is not holding the operating discipline. The new SOP fixes the leaks AND makes the day-to-day execution boringly repeatable.

What is broken today

  • No formal lead scoring. An application exists but qualified vs unvetted is not codified, so routing is inconsistent.
  • Speed to lead is inconsistent. The 5 minute target is a goal, not a system. New leads can sit unworked.
  • Leads slip into limbo. Open opportunities can exist without a task, without a dialer queue, and without an owner watching them.
  • Two dialer systems in parallel. Reps currently dial from both Wave Power Dialer and Go High Level. We are transitioning to GHL only so there is one source of truth for dial activity, cadence, and reporting.
  • Pipeline stages have no enforced entrance or exit criteria. The stages exist but reps don't follow them consistently. We need to write them down AND get the team to actually follow them.
  • Follow up is ad hoc. FU1, FU2, FU3 are not tracked as a system. Per-offer call structure (one-call-close vs two-call-close, what happens on call one vs call two) is not defined.
  • Contracts and payments are not centrally visible. No single view of who has a contract out, who signed, who paid.
  • Sales reps are not following the existing infrastructure. Root cause: sales ops leadership is broken. Process exists in places; enforcement does not.
  • Daily reporting is not accurate. Closed-won documentation is not accurate. Reps are not held accountable to update either daily reporting or closed-won records.
  • Show / no-show rates are not updated in GHL. Reps skip the appointment status step, which corrupts every downstream conversion metric.
  • Too many calendars. Current calendar sprawl is creating routing confusion. Resolved in Section 06.
  • No clear KPI dashboard. No single view of conversion rates, drop-off points, or per-rep performance against targets. Belongs to the AN dashboard sub-project.
  • Lost reasons are not consistently tracked. The lost-reason custom field exists in GHL with 10 options, but reps don't update it when moving leads to Disqualified or Closed - Lost. Taxonomy and enforcement defined in Section 13.
  • No daily sales meeting / KPI review. No standing forum to review yesterday's numbers, today's plan, blockers.
  • No client wins or sales training in cadence. No structured time on the calendar for skill-building.
  • No call reviews or coaching. Setters and closers are not reviewed or coached on thinking and approach during sales calls.

What this SOP guarantees

  • Every lead is touched within 5 minutes of arrival.
  • Every open opportunity is either in a power dialer queue or has a future-dated task. No exceptions.
  • Every pipeline stage has a written entrance and exit rule.
  • Every rep starts and ends the day with the same checklist.
  • Every contract has a tracked status all the way through to paid and onboarded.
  • One dialer system: GHL. Wave Power Dialer is deprecated.
  • A defined closing process. 2-call default, 3-call DFY exception. (Section 07.)
  • Sales ops accountability rituals. Daily KPI review, weekly client wins / training, weekly call coaching cycle. (Section 19.)
  • Every lost lead has a written reason from the lost-reason taxonomy. (Section 13.)
02

The two offers

Defined

DFY (we acquire on the client's behalf) and AC (we train them to broker deals). Either is the upsell or the downsell, decided live on the consult call.

Every lead is either a fit for one of these two offers, both, or neither. The sales process is built so either offer can be the upsell or the downsell depending on what the lead can afford and what they want to do with their time.

Offer A

Done For You (DFY)

We acquire a profitable business on the client's behalf using their funds. Full-service: find, vet, negotiate, close.

Sells as: the upsell when the lead has capital and wants the outcome without the work. Closes via the 2-call (sometimes 3-call) closing process in Section 07.
Offer B

Acquisition Consultant Program (AC)

We train the lead to become an acquisition consultant. They earn commissions by finding, vetting, and helping clients close deals.

Sells as: the downsell when the lead does not have DFY-level capital but wants to build income from acquisitions. Closes via the 2-call closing process in Section 07. AC is 2-call max.
Operating principle. No lead leaves a consult without being offered one of these two paths, unless they fail both qualifications. We do not lose a lead to "neither offer fits" without a documented reason. Cross-sell is the default mode at every consult, not a fallback.
03

Lead sources

Draft

Four sources, all routed through the same unified application into the same lead-facing calendars. No per-source rules.

Four lead sources, two live and two coming. All four route through the same unified application (Section 04) into the same lead-facing calendars (Section 06). No special-case routing per source. Source attribution is captured as a custom field for reporting only.

1. Meta paid ads → DFY VSL funnel

Live

Cold traffic from Meta paid ads runs to a VSL pitching the DFY angle. Viewers click through to the unified application. Most arrivals from this source self-identify on Page 1 as DFY-track, but the application still computes both DFY and AC scores so cross-sell is structural.

2. Job platforms → AC reframe

Live

Inbound from LinkedIn and other job-application sites. Applicants think they are applying to a job; we reframe the opportunity as a paid acquisition-consultant path. They land on the unified application and most self-identify as AC-track on Page 1. If a high-capital outlier shows up here, the dual-score catches it and routes appropriately.

3. Web / app self-serve

Coming soon

Future. Visitors to the main marketing site (and the AN app once live) can apply directly. Same unified application, same routing. Source attribution = "web" or "app".

4. AC webinar funnel

Coming soon

Future. AC-focused webinar drives registration → application. Webinar attendance signal is captured but does not skip the application; we want the dual scores on every lead so cross-sell stays structural.

Migration note. Today there are two parallel application platforms: Femi's software (handles AC-side job applicants) and a GHL form (handles DFY applications). Both are getting consolidated into the rebuilt main-website funnel that Brendan is currently building. Target: live within 30 days. Once live, the SOP describes the future state. GHL stays as the CRM, dialer, and communications layer; Brendan's platform owns the funnel (application form + marketing pages).
04

Application and lead scoring

Draft v0.2

One application with a capital-fork on Page 1. Every submission produces both a DFY and an AC score. Score thresholds determine routing (Section 05).

⚠ Owner needed: Chris. The application questions, scoring weights, and routing thresholds in this section are a proposed v0.2 starting point. Chris owns finalizing them. Lock the rubric with him before Brendan's platform build hits the form-design step. Specifically needed: (1) final list of universal questions, (2) final list of branch-specific questions per path, (3) per-question scoring weights, (4) qualified vs unvetted thresholds, (5) capital floor for the Page 1 fork ($100k? $150k?), (6) treatment of the free-text motivation score (human-judged or drop?).
Architecture: one unified application with a capital-based fork on Page 1. Every lead from every source lands here. Two scores compute on every submission. Routing decision is a single field on the contact record.

Page 1. The capital fork (the honest qualifier)

Page 1 asks one question. It splits the form into two branches with tailored downstream questions, AND it serves as the first honest qualifier. We chose capital over preference because asking "do you want DFY or AC?" is aspirational (everyone says DFY); asking "do you have the capital?" is the truthful axis.

Page 1

Do you have $100k+ liquid capital available to deploy toward acquiring a business in the next 6 months?

  • (A) Yes. → DFY branch (Page 2+ asks about capital structure, target industries, hands-off vs involved preference, prior business experience).
  • (B) No, less than $100k. I am looking to build wealth first by becoming an acquisition consultant who finds and brokers deals for clients. → AC branch (Page 2+ asks about prior sales experience, current income, weekly time available, network strength).

Universal questions (asked of EVERYONE regardless of branch)

These are the inputs to BOTH scoring rubrics. Asked on both the DFY branch and the AC branch.

  • Full name, email, phone, city/state (not scored)
  • Declared liquid capital amount (range select, finer-grained than the Page 1 yes/no) (scored: feeds DFY Capital)
  • Current annual income (range select) (scored: feeds DFY Income AND AC Cash Runway)
  • Timeline (when do you want to acquire / start earning?) (scored: feeds DFY Timeline)
  • Prior experience (single select: business owner / sales pro / operator-exec / investor only / none) (scored: feeds DFY Experience AND AC Sales/business experience with different weights)
  • Hours per week available to commit (scored: feeds AC Time Available)
  • One sentence: why do you want to do this? (scored: feeds AC Motivation Quality, judged by closer)
  • Page 1 fork answer (DFY or AC) (scored: feeds both rubrics, opposite weights)
  • Source attribution (auto, hidden, not scored, used for reporting)

Branch-specific questions (asked on ONE branch only)

These do NOT feed the scores. They serve two purposes only: (1) tailored UX so each ICP's form feels custom-built, (2) qualitative context for the closer's pre-call prep on Consult 1.

  • DFY branch only: capital structure (cash vs SBA-eligible), target industries, hands-off vs involved preference
  • AC branch only: network strength (existing professional network), self-described comfort with cold outreach, prior commission-based work

How dual scoring works (the mechanic)

One submission produces TWO scores: a DFY score and an AC score, both 0–100. Both are computed from the same universal questions. Each universal question gets weighted differently per rubric. Same answer, two different scores. The higher score determines primary routing; both scores are stored on the contact record so the closer can see them pre-call and run cross-sell as the default mode (Section 05 / Section 07).

Example: a lead answering "Prior business owner" on the experience question scores 20 pts on the DFY rubric (operator background = strong DFY fit) AND 25 pts on the AC rubric (operator background also makes a strong consultant). Same answer, both rubrics rewarded it. By contrast, a lead answering "Sales pro" scores low on DFY (sales doesn't equal capital readiness) but maxes AC.

Why this beats the obvious alternatives

  • Two separate applications (one DFY, one AC) loses the cross-sell signal. An AC applicant with $300k who never gets asked the capital question is a missed DFY booking.
  • One unified app with no fork means everyone answers all 10+ questions. Worse UX, less ICP fit, and no signal for branding the form.
  • One unified app with capital fork gives each branch tailored questions (feels custom-built per lead) AND keeps the universal questions for dual scoring.

Edge case handled

Lead lies on Page 1 (says yes to $100k+ but later declared-capital amount is <$100k). The contradiction shows up in the universal questions. DFY score lands low, lead routes to Universal Discovery (Section 06) where the setter probes and pivots to AC if appropriate.

Scoring rubric (proposed weights)

Two scores compute on every submission. Both scores are computed from the universal questions above. Branch-specific questions do not contribute. The higher score determines primary routing; both scores are stored on the contact record so the closer can see them pre-call.

DFY score (max 100)

Factor Tiers and points
Capital (declared amount) $250k+ = 35. $100k–249k = 20. $50k–99k = 10. <$50k = 0
Timeline <30 days = 20. 30–90 days = 12. 90–180 days = 6. >180 days = 0
Experience Prior business owner = 20. Operator/exec = 12. Investor only = 8. None = 0
Income $200k+ = 15. $100k–199k = 10. $50k–99k = 5. <$50k = 0
Page 1 fork answer Picked DFY (option A) = 10. Picked AC (option B) = 0

AC score (max 100)

Factor Tiers and points
Sales / business experience Owner or sales pro = 25. Operator/exec = 18. Some experience = 10. None = 5
Time available 20+ hrs/wk = 25. 10–19 hrs = 15. 5–9 hrs = 8. <5 = 0
Cash runway Stable income $75k+ = 20. $40–74k = 12. <$40k or unstable = 5
Motivation quality (free text) Closer judgement on the why-question free text. Strong/specific = 20. Generic = 10. Vague/red flag = 0
Page 1 fork answer Picked AC (option B) = 10. Picked DFY (option A) = 0

Routing thresholds

  • Qualified (either offer). Either DFY score ≥ 70 OR AC score ≥ 70. Routes to Universal Consult (closer, 60 min, Consult 1 in Section 07). Closer sees both scores pre-call and pitches the better-fit offer.
  • Unvetted. Both scores between 40 and 69, OR application data is incomplete. Routes to Universal Discovery (setter, 30 min). Setter confirms path and either upgrades to consult or pivots offers.
  • Disqualified. Both scores below 40 AND capital <$50k AND time <5 hrs/wk. Goes straight to Disqualified pipeline stage with the lost reason logged. No calendar booking.

Where it lives

Future state (within 30 days): the application form lives on Brendan's rebuilt main website. Form submission triggers a webhook that writes both scores AND the routing decision (Disqualified / Discovery / Consult) into the GHL contact record as custom fields. A GHL workflow then assigns the right calendar invite and pipeline stage automatically.

Today (transitional): two parallel forms exist (Femi's software for AC-side job applicants, GHL form for DFY). Both will be deprecated when Brendan's unified form ships.

05

Routing model

Defined

Three lanes: Disqualified / Universal Discovery / Universal Consult. Decided by the scores from Section 04. Cross-sell is the default mode at every consult.

Three lanes, decided by the application scores from Section 04. No 2x2 matrix, no per-source rules, no per-offer calendars at the lead-facing layer. Simplest version that still respects qualification.

Score outcome Route Pipeline entry
Either score ≥ 70 Universal Consult (Consult 1)
Closer, 60 min
New Leads → Free Consultation (after booking)
Both scores 40–69 OR data incomplete Universal Discovery
Setter, 30 min
New Leads → Discovery Call (after booking)
Both scores < 40, capital <$50k, time <5 hrs/wk Disqualified Disqualified (lost reason required)

Cross-sell is the default mode

On every Universal Consult, the closer reads BOTH the DFY score and the AC score before the call. The closer picks the primary pitch based on the higher-scoring offer, and keeps the other offer ready as the upsell or downsell during the conversation. Cross-sell is not a fallback for failed pitches; it is the structural default.

Setter pivot mechanic

On Universal Discovery, the setter qualifies the lead in real time. If new info changes the routing decision (lead claimed $100k+ on the application but real capital is $40k → pivot to AC consult; or vice versa), the setter books the appropriate consult on the spot. The setter is trained as a generalist on both offers.

Why the lead-facing layer stays universal. Cleaner reporting, simpler maintenance for Brendan's platform rebuild, structural cross-sell, and easier closer load-balancing. Per-offer specialization happens at the FOLLOW UP CONSULT layer (Section 06 + Section 07), where the path is known from a real call.
06

Calendar architecture

Defined

Four calendars total: 2 lead-facing universal + 2 internal-only offer-specific FU. Setters never pick offer-specific calendars; only closers do, only after a real call.

⚠ Open decision for leadership: the personalization layer. The 4-calendar architecture below is locked. But the reminder copy + thank-you page + pre-call video personalization layer on top of those calendars is NOT decided yet. This got swept up in the "simplify everything" call but it's a separable question. Three options below. Our recommendation after the comparison.

The three options

Option A

Generic for all

One reminder + thank-you + pre-call video sequence that introduces BOTH offers. Calendar invite says "your consult". No personalization.

Pros: Simplest to build. Cross-sell baked into the reminder content. Catches lied-on-application leads before no-show.

Cons: Generic under-performs personalized on show rate. Wastes the thank-you page as a conversion moment. Pre-call video has to be vague to cover both ICPs.

Option B · Recommended

Hybrid: universal calendars, personalized automations

Universal calendars stay. Reminders + thank-you page + pre-call video fire conditionally based on which offer the lead applied for, tracked via the existing service_dfy and service_ac custom fields (stage values like Interested / Qualified / Consult Booked / Purchased).

Pros: Show-rate lift without calendar sprawl. Same simple UX for leads. Content matches what the lead applied for. Cross-sell tracked as a first-class state on the second service field.

Cons: More automation logic to wire. Service fields must be kept clean by reps post-call (every call updates both fields).

Option C

Per-offer calendars

Re-split into 4 lead-facing calendars (DFY-Discovery, DFY-Consult, AC-Discovery, AC-Consult), each with its own automation chain.

Pros: Max personalization. Cleanest per-offer reporting. Closer specialization becomes possible.

Cons: Walks back the "simplify" call. Calendar sprawl returns (Section 01 named this as broken). Cross-sell becomes fallback, not structural. Most automation maintenance.

Our recommendation: Option B (Hybrid)

Option B captures the personalization upside (show-rate lift, conversion thank-you pages, ICP-tailored pre-call videos) without re-introducing the calendar sprawl that Section 01 explicitly named as broken. Universal calendars stay simple for leads and ops. Personalization fires off the existing service_dfy and service_ac custom fields. Cross-sell stays structural at the consult itself (closer reads both scores pre-call regardless).

Why not A: under-uses a real conversion lever (personalized reminders) for marginal simplicity gain.

Why not C: re-introduces the complexity we just removed. The personalization benefit can be captured without splitting calendars. Calendar count and reminder personalization are not coupled. Option C conflates them.

Decide before Brendan starts wiring the form → GHL → automation chain. Designing the automation layer with personalization from day one is much cheaper than bolting it on later.

How to implement Option B

The mechanic in five parts. Assumes leadership picks Option B.

1. Data model (uses existing GHL custom-field pattern)

Two parallel state-machine fields, one per offer. Already the team's standard pattern.

  • service_dfy (single-select): Interested / Qualified / Consult Booked / Contract Sent / Purchased / Not Interested
  • service_ac (single-select): same enum
  • dfy_score (number, 0–100) and ac_score (number, 0–100): from Section 04
  • source_attribution (single-select): meta-dfy / job-platform / web-app / ac-webinar

2. Content path is set by source + Page 1, NOT by score

This is the critical UX rule. Lead's content expectation is set by where they came from. Score determines calendar routing only.

Source At submission, set
Meta DFY adservice_dfy = "Interested"
Job platforms (LinkedIn, etc.)service_ac = "Interested"
Web / app self-serveUse Page 1 fork answer to set the matching service field
AC webinarservice_ac = "Interested"

Score is computed alongside this and stored, but score does NOT swap content paths. A DFY-source lead with low capital still gets DFY content pre-call. The setter or closer pivots them to AC on the call (human, contextual, not jarring) and updates service_ac = "Interested" at that point.

3. Thank-you page personalization

Brendan's form redirects to a dynamic thank-you URL based on which service field got set:

  • service_dfy = "Interested" only → redirect to /thanks/dfy
  • service_ac = "Interested" only → redirect to /thanks/ac
  • Edge case: both set or neither → /thanks/generic

Three thank-you-page variants on Brendan's platform. Each has a tailored video, expectations content for the respective consult type, and any pre-call prep instructions.

4. Reminder + pre-call video automation (GHL workflows)

One workflow per lead-facing calendar with a conditional branch on the service fields:

Trigger: Appointment booked on Universal Consult
  ├─ If service_dfy = "Interested" AND service_ac is empty
  │     → fire DFY reminder sequence (with DFY pre-call video link)
  ├─ Else if service_ac = "Interested" AND service_dfy is empty
  │     → fire AC reminder sequence (with AC pre-call video link)
  └─ Else (both or neither)
        → fire generic reminder sequence

Same pattern for Universal Discovery (lighter personalization OK there since the call itself is path-finding).

5. Post-call updates (driven by reps, not automation)

After every call, the rep updates one or both service fields to reflect what was discussed:

  • Lead is interested in the offer they came in for → set/upgrade that service field's stage (e.g., service_dfy = "Consult Booked")
  • Cross-sell happened on the call (closer pitched the OTHER offer too) → set the second service field (e.g., service_ac = "Interested")
  • Lead said no to a specific offer → that service field gets "Not Interested"

From this point forward, the longer-term nurture drips and follow-up sequences fire off the service field stages. The same fields that drove the pre-call content. One data model, full lifecycle.

6. What Brendan needs from us to build the form

  • Final scoring rubric (Chris owns; Section 04). Locks the math the form runs.
  • Exact GHL custom field names: service_dfy, service_ac, dfy_score, ac_score, source_attribution (and confirm exact case + spelling matches GHL).
  • Exact enum values for the service fields (Interested / Qualified / Consult Booked / Contract Sent / Purchased / Not Interested). Brendan's writes must match GHL's existing options exactly or they silently fail.
  • GHL webhook endpoint and auth method for posting the application payload.
  • Thank-you URL pattern: /thanks/dfy, /thanks/ac, /thanks/generic.
  • Three thank-you videos + three pre-call videos (DFY, AC, generic). Content team owns production.

Technical risk: if scoring math runs in client-side JS, savvy applicants can game it via browser dev tools. Two mitigations: (a) run the scoring server-side in a small endpoint, or (b) send raw answers to GHL and let a GHL workflow compute the scores. (b) is simpler.

Locked architecture (assumes Option B)

Four calendars total: 2 lead-facing universal + 2 internal-only follow-up consults (offer-specific). Setters never make a calendar choice. Only closers pick the offer-specific FU calendar after a real call.

Lead-facing calendars (universal, generic reminders)

Calendar 1 · lead-facing

Universal Discovery

Setter, 30 min, outbound when possible. For unvetted leads (Section 05).

  • Lead self-books from the application or setter books on outbound
  • Generic reminder sequence: "your discovery call tomorrow at X"
  • Setter qualifies + pivots offers in real time
Calendar 2 · lead-facing

Universal Consult

Closer, 60 min. For qualified leads (Section 05). This is Consult 1 in the closing process (Section 07).

  • Lead self-books from the application or rep books after a discovery
  • Generic reminder sequence: "your consult tomorrow at X"
  • Closer reads BOTH DFY and AC scores pre-call
  • Cross-sell is the default mode, not a fallback

Internal-only calendars (offer-specific, closer books after a call)

Calendar 3 · internal

DFY Follow Up Consult

Closer, 60 min. Consult 2 for DFY-track leads. Optional Consult 3 for DFY contract review (book another slot on the same calendar).

  • Booked by the closer, not the lead
  • DFY-flavored reminders (pre-call SMS, email, day-of)
  • Triggers DFY nurture drip after the call
Calendar 4 · internal

AC Follow Up Consult

Closer, 60 min. Consult 2 for AC-track leads. AC is 2-call max. No Consult 3.

  • Booked by the closer, not the lead
  • AC-flavored reminders
  • Triggers AC nurture drip after the call

Why the front-end stays universal

Lead-facing reminders ("your call", "your consult") stay generic. The lead's offer fit is finalized in the call, not before. Generic front-end copy lets the closer pivot framing in Consult 1 without contradicting earlier reminder language. By the time we book a Follow Up Consult, the path is KNOWN from a real call. That is the right moment to switch on offer-specific automation.

Per-offer nurture is post-call, custom-field driven

In addition to the FU calendar's offer-specific reminders, the rep updates the service_dfy and service_ac custom fields at the end of every call to reflect what was discussed and the lead's interest level for each offer. Stage transitions on these fields trigger the appropriate longer-term nurture sequence:

  • service_dfy moves to Interested or higher → DFY nurture drip (case studies, capital deployment content, deal flow updates)
  • service_ac moves to Interested or higher → AC nurture drip (consultant earnings stories, training modules, networking events)
  • Both fields active → mixed nurture, cross-sell positioning
  • Both fields set to Not Interested → re-engagement drip, then disqualified after N touchpoints with no reply

Cognitive load split

  • Setters only ever interact with Universal Discovery. They do not pick offer-specific calendars.
  • Closers are the only role that books the offer-specific FU calendars, and only after a call where the path is known.
  • Leads only see lead-facing calendars. They never see the FU calendar names.

Calendar deprecation (legacy sprawl)

Today's sprawl includes separate DFY-Discovery, DFY-Consult, AC-Discovery, AC-Consult calendars (and possibly duplicates from prior experiments). On v0.3 ship:

  • Migrate any future-dated lead bookings on old calendars to the new Universal Discovery / Universal Consult
  • Replace old offer-specific FU calendars with the new DFY FU Consult / AC FU Consult
  • Disable retired calendars (do not delete; archive for historical reporting)
  • Update GHL routing workflows to use only the four new calendars
  • Update reminder automations
07

Closing process

Defined

Two-call default close. Consult 1 = path-finding (no pricing). Consult 2 = full pitch + close + contract. DFY-only Consult 3 = live contract review when needed. AC is 2-call max.

2-call default close. 3-call exception for DFY only. Universal Consult is Call 1 (path-finding). Follow Up Consult is Call 2 (full pitch + close). For DFY where Call 2 doesn't close, optional Call 3 is the live contract review.

The shape

Call Calendar Applies to Goal
Consult 1 Universal Consult Both offers Discovery + recommend a path + book FU Consult
Consult 2 DFY FU Consult or AC FU Consult Both offers (offer-specific calendar) Full pitch + full price + close + send contract
Consult 3 (exception) DFY FU Consult (book another slot) DFY only Live contract review + final yes/no

Consult 1 · Universal Consult

60 min. Closer. Lead-facing calendar. The path-finding call.

  • Pre-call: closer reads BOTH DFY and AC scores from the application (Section 04). Writes a one-line "primary pitch + likely upsell/downsell" note.
  • Open: rapport + permission to dig.
  • Discover: validate the application data on capital, capability, timeline. Probe for the pain and vision.
  • Diagnose: pick the right path (DFY or AC) based on what came up in the call, not just the score.
  • Recommend: clearly state the recommended path and why.
  • Close to next call: book the offer-specific FU Consult on the spot.
  • For DFY leads, ask for NDA signature. Micro-commitment. Sub-section below.
  • Update service_dfy and service_ac stages before leaving the contact record. These fields drive every downstream automation.
  • What does NOT happen on Consult 1: no full-offer pitch, no price reveal, no contract talk. Discipline matters here. Premature pricing kills momentum.

Outcome paths from Consult 1:

  • Consult 2 booked + NDA sent → pipeline moves to Follow Up Consults stage
  • Need more time before re-engaging → Follow Up stage with future-dated task
  • Hard no → Closed - Lost (lost reason from Section 13 taxonomy)
  • Path unclear → soft hand back to setter (rare)

DFY NDA · micro-commitment at end of Consult 1

For DFY-track leads, end of Consult 1 includes a small ask: sign our NDA. Deliberate micro-commitment. Does two things: (1) gauges seriousness by surfacing leads who balk at signing anything (a real low-intent signal), and (2) unlocks access to a deeper client results feed (case studies, deal outcomes, anonymized client journeys) we don't share publicly. NDA is short, standard, frictionless. Intent isn't to lock anyone down. It's the psychological commitment.

  • What gets sent: standard NDA from a templated link (e.g. PandaDoc or DocuSign).
  • When: closer sends it during the last 5 min of Consult 1 with a verbal "going to send you this real quick, takes 60 seconds to sign." Lead signs on the call if possible.
  • What unlocks on signature: automated email from GHL with access to the client results feed.
  • Tracking: nda_sent_at and nda_signed_at custom fields. Both date-stamped automatically via the contract platform's webhook to GHL.
  • If not signed within 24 hrs: automated reminder fires. After 72 hrs without signature, closer flagged with FU task.
  • If lead refuses NDA: not automatically a deal-killer, but a real signal. Closer notes the refusal and reason. May still proceed to Consult 2 but with calibrated expectations.

Consult 2 · DFY or AC Follow Up Consult

60 min. Closer. Internal-only calendar (closer picks DFY or AC at booking time). The close attempt.

  • Pre-call: closer reviews Consult 1 notes, NDA-signed status, the lead's stated path, and confirms pitch deck.
  • Open: recap the path agreed on Consult 1. Get verbal alignment on what we are solving for.
  • Demonstrate: the offer in detail, customized to the lead's stated goals.
  • Pitch: full offer + full price. Price is revealed here for the first time.
  • Handle: objections via the standard playbook.
  • Lite contract review: walk the lead through the key terms (deliverables, timeline, fee structure, refund policy). NOT page-by-page (that's Consult 3). The intent is they know the gist of what they're committing to before the deposit ask.
  • Price drop (if needed): ONLY pre-approved structured incentives. No freelance discounting. Drops tied to specific behaviors ("if you commit today" / "if you pay in full"), not just for asking.
  • Close + deposit ask: ask for the $5K deposit (DFY) or equivalent (AC, see below). The deposit is the real commitment. See sub-section below for the mechanic and why this works.
  • If deposit paid: Pre-Onboarding experience triggers automatically. Closer chases signed contract + wire of balance in parallel.
  • If yes verbal but no deposit: contract sent during the call OR within 30 min after, but acknowledge this is weaker commitment than deposit-paid.

Outcome paths from Consult 2:

  • Deposit paid → Contract Negotiations stage + Pre-Onboarding starts. Closer chases signed contract + balance wire.
  • Verbal yes but no deposit + contract sent → Contract Negotiations stage. Weaker commitment, more risk of fade.
  • Need to think / contract review needed (DFY only) → book Consult 3 on DFY FU Consult calendar
  • Hard no → Closed - Lost (lost reason)
  • Soft no with future timing → Long Term Follow Up with future-dated task and reason

DFY deposit mechanic ($5K end of Consult 2)

The $5K deposit is the real commitment moment, not the contract signature. Asking for a deposit at end of Consult 2 does three things:

  • Surfaces true objections. A lead who said yes verbally but balks at the deposit reveals what's actually holding them back. That's the real objection to handle, not the surface one.
  • Anchors the buying decision in action. Money moved means commitment. Verbal yes + no money = polite no in disguise.
  • Unlocks the Pre-Onboarding experience. Once deposit is paid, the lead enters Pre-Onboarding (see below) while the closer chases signed contract + remaining balance wire. Two parallel tracks that compound momentum.

The ask: closer frames the deposit as "the way we start. The deposit secures your spot on our pipeline and triggers Pre-Onboarding so we can move on day one once the contract is signed. Refundable if we mutually decide the deal isn't a fit." (Confirm refund language with legal in Section 22.)

Tracking: deposit_amount, deposit_paid_at, pre_onboarding_started_at custom fields. Date-stamped automatically when payment lands.

Pre-Onboarding experience (triggers on deposit paid)

The window between "deposit paid" and "signed contract + balance wired" is the highest-trust moment in the entire sales process. The lead just put money down. They want to feel like they made the right call. Pre-Onboarding is what makes them feel that, while the closer finishes the contract paperwork in parallel.

  • Welcome packet sent automatically: branded PDF or page with "what happens next", the team, the timeline, the first 30 days.
  • Intro to the delivery team: short video or email from whoever runs delivery, introducing themselves and the kickoff process.
  • Onboarding checklist preview: what we need from the client (financials, target industries, etc.) so they can start gathering.
  • Calendar invite for the kickoff meeting (held after contract signed + balance wired, but the invite goes out now so it's on their calendar).

Pre-Onboarding runs in parallel with closer's contract chase. The closer is still the deal owner during this window. Handoff to onboarding doesn't fully happen until Closed - Won (contract signed + full payment received).

AC parallel · still being defined

⚠ AC equivalent mechanics need to be finalized. Decisions to make:
  • Is there an AC NDA? Probably no (less proprietary content to protect at AC's offer level), but confirm.
  • Is there an AC deposit? If AC is in the $5–10K range, full payment on Consult 2 may make more sense than a deposit/balance structure. Or maybe a $500–1K deposit as a commitment device.
  • Does AC have a Pre-Onboarding experience? Lighter version likely, but should still exist (training schedule preview, first cohort intro, etc.).
  • Where in Consult 2 (AC) do we do lite contract review and payment ask? Probably condensed since the offer is simpler and the price point doesn't require the same hand-holding.

Consult 3 · DFY Contract Review (exception)

45 min. Closer. Books another slot on DFY FU Consult calendar. DFY only. Never for AC.

  • Trigger: Consult 2 didn't close but lead is still active and engaged.
  • Walk: page-by-page through the contract live.
  • Reaffirm: the value, the outcomes, the timeline.
  • Address: any final objections (often signature anxiety on a large commitment).
  • Close: signature on the call. Payment confirmed during or immediately after.

Outcome paths from Consult 3:

  • Signed + paid → Closed - Won (handoff to onboarding)
  • Hard no → Closed - Lost (lost reason)

For AC: 2-call max

AC offer is at a price point where Consult 2 should close. If it doesn't close on Consult 2, the lead either gets an FU task (Section 16) or moves to Closed - Lost. We do not run a Consult 3 for AC. Adding a third touch at the AC price point destroys economics.

Where things happen (cheat sheet)

Event Where it happens
Path recommendation (DFY vs AC)End of Consult 1
NDA sent + signature ask (DFY)End of Consult 1
Client results feed access unlockedWhen NDA signed (auto via webhook)
Full offer pitchConsult 2
Full price revealConsult 2
Pre-approved price dropConsult 2 (after objection handling)
Lite contract reviewConsult 2 (gist, not page-by-page)
$5K deposit ask (DFY)End of Consult 2
Pre-Onboarding experience triggersAuto on deposit_paid_at
Contract sent for signatureEnd of Consult 2 (or Consult 3 for late-DFY edge case)
Full live contract walkthroughConsult 3 (DFY only, exception)
Signature ceremonyConsult 3 for DFY; async after Consult 2 otherwise
Balance wire confirmedAfter signed contract; triggers Closed - Won move + onboarding handoff

Full contract send and payment mechanics are defined in Section 17. This section defines when; Section 17 will define how.

Open decision · call sequencing for pricing, objections, lite contract, deposit

⚠ Lock the order with the closer team before training. The current draft sequencing for Consult 2 is:
  1. Recap + verbal alignment
  2. Demonstrate offer in detail
  3. Full pitch + full price reveal
  4. Objection handling (round 1)
  5. Lite contract review (gist, not page-by-page)
  6. Price drop (only if needed, pre-approved incentives)
  7. Close + deposit ask ($5K DFY)
  8. If deposit paid: Pre-Onboarding triggers + send contract for signature

Open questions for the closer team:

  • Does the lite contract review come before or after the close + deposit ask? Pre-deposit is more transparent; post-deposit reduces friction at the commitment moment.
  • Should the price drop ever happen before objection handling? (Probably no, but confirm.)
  • What's the upper bound of "lite" contract review (how many minutes, which terms)? Need a closer-facing checklist of "always cover these 5 terms".
  • If a lead asks for the contract before they commit to the deposit, what's the policy? Send it (transparency) or hold (commitment device)?

Journey milestones (custom fields, not pipeline stages)

The pipeline stages (Section 11) capture the SALES STAGE the lead is in (Free Consultation, Follow Up Consults, Contract Negotiations, etc.). The journey milestones below are custom fields with date stamps that track the micro-commitments within those stages. Lets you build clean progress views in the dashboard without exploding the 15-stage pipeline.

Custom field Set when
nda_sent_atCloser sends NDA at end of Consult 1 (DFY)
nda_signed_atLead signs NDA (auto via contract platform webhook)
deposit_amountDeposit ask accepted; amount captured
deposit_paid_atDeposit payment lands (auto via payment processor webhook)
pre_onboarding_started_atAutomatically fires on deposit_paid_at
contract_sent_atContract platform send
contract_signed_atContract platform signature webhook
wire_received_atBalance wire confirmed (payment processor webhook)
final_payment_received_atFull payment confirmed → triggers Closed - Won move + onboarding handoff

These fields drive the end-of-pipeline progress tracker. Anyone looking at a contact can see exactly where they are in the journey at a glance. Section 11 (Pipeline stages) gives the sales stage; these fields give the within-stage position.

Hard rules

  • Never let 3-call become the default. Consult 3 is a DFY exception, not a step in the standard process.
  • No pricing on Consult 1. Premature price reveal kills momentum and removes the deep-dive moment.
  • No freelance discounting. Only pre-approved structured incentives. Closers cannot negotiate price freely.
  • FU Consult booked at Consult 1 close. Don't let the lead leave Consult 1 without a calendar invite for Consult 2 in their inbox.
  • NDA sent at end of Consult 1 (DFY). Signature within 24 hrs unlocks client results feed.
  • Deposit ask at end of Consult 2 (DFY $5K). Deposit-paid is the real commitment, not verbal yes.
  • Contract sent within 30 min of Consult 2 close. Hot is not later than that.
  • Pre-Onboarding auto-triggers on deposit_paid_at. Closer doesn't manually fire it.

Tracking signals

  • Consult 1 → Consult 2 conversion rate, broken out by offer (DFY vs AC).
  • NDA send rate (% of DFY Consult 1s where NDA was sent).
  • NDA signature rate (% of NDAs sent that got signed within 72 hrs).
  • Consult 2 → deposit paid conversion, DFY only (the real commitment metric).
  • Consult 2 → contract sent conversion rate, per offer.
  • Deposit paid → final payment received conversion (deposit-to-close lift).
  • Consult 3 frequency relative to DFY Consult 2: if > 30%, the 2-call default isn't holding. Either fix Consult 2 mechanics or formally officialize 3-call.
  • Avg days from Consult 1 to contract sent, per offer.
  • Avg days from deposit paid to contract signed.
  • Avg days from contract signed to final payment received.
08

Speed to lead protocol

Defined

Every new lead on a phone call within 5 minutes. Single mechanism: GHL Power Dialer manual action queue.

Target: every new lead is on a phone call attempt within 5 minutes of arrival.

Notification path

  • New contact created in GHL → SMS notification fires to assigned setter
  • App push notification fires to setter device
  • Lead is added to the New Leads pipeline stage AND to the GHL Power Dialer manual action queue

The single mechanism: GHL Power Dialer manual action

New leads enter the dialer via a manual action queue. The setter opens the GHL Power Dialer and burns the queue top to bottom. This is the ONLY mechanism for new-lead intake. No smart lists, no parallel task lists, no Wave Power Dialer.

Why we picked this over the alternatives. The Power Dialer manual action gives setters one screen to live in. It solves ordering better than tasks (FIFO from creation time). It is already built and already enforced by the workflow logic in Section 09. Pick one mechanism, document it, enforce it.

Hard rules

  • 5 minute target is non-negotiable. Tracked on the dashboard. Violations are coached.
  • Any new lead notification interrupts whatever the setter is doing, except a live call.
  • If the setter is unavailable, the routing workflow reassigns to the on-call setter within 5 minutes.
09

Dialer cadence

Defined

GHL only (Wave deprecated). Workflow-driven cadence: 0 / +3hr / +1d / +1d each / +3d each / +7d each / stop at attempt 12.

One dialer: GHL. Wave Power Dialer is deprecated. All outbound activity, all cadence triggers, all reporting comes from GHL only.

One workflow drives the whole call cadence. Trigger: contact is new or the Total Outbound Call custom field updates. Workflow checks pipeline stage (must be New Leads or No Answer) then routes by call number:

Total outbound calls Wait Behavior
0 Immediate New lead. Manual action added on entry. Setter calls within 5 minutes.
1 + 3 hours Same-day double tap. Catches leads who missed the first ring.
2 + 1 day Move to daily cadence.
3 to 6 + 1 day each Daily attempts through call attempt 6.
7 to 9 + 3 days each Cooling cadence. Lead is colder, less aggressive.
10 to 11 + 7 days each Final stretch. Weekly attempts only.
12 Stop Disqualify. Move to Closed - Lost or Long Term Follow Up.

Why same-day double tap

Hours 0 and +3 catch leads in the same emotional window they were in when they applied. Every additional day is a measurable drop in pickup rate. We pay for the lead. We earn the right to call them twice in their first day.

Re-entry

Each outbound call increments Total Outbound Call, which re-enters the lead into this workflow. The workflow is therefore self-driving: rep just keeps working the dialer queue and the cadence rebuilds itself.

Ordering caveat

GHL Power Dialer does not let us sort the manual action queue. It plays from oldest to newest. To prioritize New Leads ahead of No Answer, we run two workflows that drop into two different manual actions. Setter dials the New Leads action first, then the No Answer action.

10

Call dispositions and note-taking

Draft v0.1

Five GHL dispositions cover every call outcome (sixth slot reserved for future). Every disposition that isn't No Answer requires a note on the contact within 15 min. The contact record is the source of truth, not the rep's head.

⚠ Flag for review with the team. The 5 dispositions and the note-taking rules below are a v0.1 lock from the Ryan + Claude design pass. Walk through with both setters and closers before pushing to GHL config and enforcing in EOD audit. Adjust any disposition or rule that doesn't fit how the team actually works.

The 5 call dispositions

GHL allows up to 6 active disposition slots per Power Dialer. We use 5. The 6th is intentionally reserved for future expansion. Dispositions are mutually exclusive (one per call attempt) and drive cadence, automation, and reporting.

# Disposition When to use it What it triggers
1 No Answer / VM Phone rang, no pickup, no voicemail box reached. OR voicemail reached and message left. (Merged because both behave the same operationally.) Cadence increments per the Section 09 ladder.
2 Bad Contact Wrong number, disconnected, contact info wrong. Auto-DQ workflow. lost_reason auto-set to "Bad Contact Info". Opp moves to Disqualified.
3 Connected. Set Talked to lead, booked an appointment. Opp moves to appropriate pipeline stage based on calendar booked (Discovery Call, Free Consultation, or Follow Up Consults).
4 Connected. No Set Talked to lead, didn't book. Includes callback requests (rep adds future-dated task). Rep adds follow-up task with reason. Opp moves to Answered (Not Scheduled) or stays in current stage.
5 Connected. Disqualified Talked to lead, ruled them out for both offers. DQ workflow. Requires rep to set lost_reason from Section 13 taxonomy within X minutes. Opp moves to Disqualified. EOD audit blocks entries without lost_reason.
The 6th slot is intentionally reserved. Resist the urge to fill it just because it's there. Adding a 6th disposition has to clear the bar of "this outcome drives different cadence, automation, or reporting than the existing five." Most don't.

Why this design vs the Wave-era setup

On Wave Power Dialer (now deprecated, see Section 01), the team had ~17 dispositions including separate slots per lost reason (Lost - Insufficient Funds, Lost - Bad Timing, Lost - Went With Competitor, etc.). GHL caps at 6.

We don't lose the granular loss tracking. We separate concerns:

  • Disposition (this section, 5 slots) tracks the call outcome. Drives cadence + per-call reporting.
  • lost_reason custom field (Section 13, 10 enum values) tracks WHY a lead was lost. Drives loss analytics + per-loss-reason automations.

Per-loss-reason automations that previously triggered off Wave dispositions now trigger off the lost_reason custom field. Same end behavior, different trigger source.

Note-taking SOP

The contact record is the source of truth, not the rep's head. Anyone (manager, other rep, customer service, founder) should be able to open a contact, scroll the notes, and immediately know what's happening, what's been said, and why.

When a note is required

  • After every phone call where disposition was anything except No Answer / VM (so all Connected outcomes + Bad Contact)
  • After every Zoom / Google Meet (every discovery, every consult, every contract review)
  • After every "meaningful" SMS thread. Definition: any exchange where the lead provides new info (capital, timeline, objection, life event, intent shift) OR the rep made a commitment or pitch. NOT required for scheduling logistics, simple "thanks!" replies, or automated reminder responses.
  • After every email exchange that materially advances or changes the deal

When it must be added

  • Within 15 minutes of the call or meeting ending. Matches Section 14 / 15 post-call rules.
  • For SMS / email threads: end of day at minimum, immediately if material.

Where it lives

On the contact record in GHL. Not in personal docs, not in Slack DMs, not in head.

Standard note template

[Type] · [Disposition or Outcome]

What we discussed:
- (1 to 3 bullets, key facts learned)

Lead's response / state:
- (where their head is at, objections, signals of interest)

My read / next move:
- (rep's thinking: why doing what they're doing next)

Next step: [Committed action] by [date]

Five-line skeleton, 1-3 bullets each. About 3 minutes to write post-call. Keeps the structure consistent across reps so anyone reading later can scan quickly.

Hard rules

  • No call without a note. Disposition + note are paired. Voicemail Left, all Connected outcomes, and Bad Contact all require a note. Only "No Answer / VM" (when it's pure no-answer with no VM left) skips the note requirement.
  • Notes are append-only in spirit. Edit your own note within the same day for typos or additions. Never delete a previous note. The history is the value.
  • Any rep can write a note on any contact. Customer service rep gets pulled in? Writes a note. Manager listens to a recorded call and has feedback? Writes a note (clearly tagged as manager observation).
  • Notes use first person ("I asked about capital, lead said they have $80k SBA-eligible") so the reader can hear the rep's voice and reasoning.

EOD audit metric

Add to the EOD audit query: any rep with a Connected-disposition count more than 2 above their note count flags for review. Dialing without note-taking is a fireable pattern. Note count should match Connected dispositions + Bad Contact dispositions (each requires a note).

11

Pipeline stages. Entrance and exit criteria

Defined

All 15 GHL pipeline stages with written entrance, exit, required task, and owner rules. The pipeline is the live state of every lead, all the time.

All 15 GHL pipeline stages with the rules for moving in and out. Stages are listed in lifecycle order (front of funnel down to closed), then the side-stages (Long Term Follow Up, Re-Assigned, Disqualified) below. Entrance criteria are checked by the rep before moving the opportunity. Exit criteria tell the rep where the opportunity is allowed to go next.

Operating principle. The rep moves the stage immediately when the criterion fires. Not at end of day. Not at end of call. Immediately. The pipeline view is the live state of every lead, all the time.

New Leads

Enters when

Contact created from any source (regardless of grade or routing decision).

Exits when

First outbound call attempt placed → moves to No Answer, Answered (Not Scheduled), Discovery Call, or Free Consultation depending on outcome.

Required task

Power dialer manual action (call within 5 minutes of arrival).

Owner

Assigned setter

No Answer

Enters when

Outbound call placed, no answer, no booking. Workflow re-enters here on every subsequent unanswered attempt.

Exits when

Lead answers → Answered (Not Scheduled). Lead books → Discovery Call or Free Consultation. Attempt 12 reached → Closed - Lost or Long Term Follow Up.

Required task

Power dialer manual action per cadence ladder (Section 09).

Owner

Assigned setter

Answered (Not Scheduled)

Enters when

Lead answered the phone but did not book a call.

Exits when

Booked → Discovery Call or Free Consultation. Explicit "no" → Closed - Lost or Long Term Follow Up.

Required task

Follow-up call/SMS within 24 hours.

Owner

Assigned setter

Discovery Call

Enters when

Discovery call booked AND lead showed up. Universal Discovery calendar.

Exits when

Setter qualifies up → Free Consultation (Consult 1). Needs more time → Follow Up. Disqualifies → Closed - Lost.

Required task

Post-call within 15 min: book Universal Consult OR set FU task with reason. Update service_dfy and service_ac stage to reflect call outcome and any cross-sell interest captured.

Owner

Assigned setter

Discovery Call (No Show)

Enters when

Scheduled Universal Discovery, lead did not show. Setter marks no-show in GHL within 5 min, which fires the recovery workflow (Section 12): high-priority recovery task auto-created.

Exits when

Rebook → Discovery Call. Or moved to Follow Up. Or 3 no-shows → Closed - Lost.

Required task

AUTO-CREATED on setter: "No-show recovery: call + SMS within 5 min, attempt to rebook." High priority, top of setter queue.

Owner

Original setter (already owner at this stage). Auto-SMS to lead also fires from setter's number.

Free Consultation

Enters when

Universal Consult booked AND lead showed up. This is Consult 1 in the closing process (Section 07).

Exits when

Closer recommends path + books FU Consult → Follow Up Consults stage. Soft no → Long Term Follow Up. Hard no → Closed - Lost.

Required task

Post-call within 15 min: book DFY FU Consult OR AC FU Consult OR set FU task with reason. Update service_dfy and service_ac stages.

Owner

Assigned closer

Free Consultation (No Show)

Enters when

Scheduled Universal Consult, lead did not show. Closer marks no-show in GHL within 5 min, which fires the recovery workflow (Section 12): ownership reassigns to original setter, setter gets notified, recovery task auto-created on setter.

Exits when

Setter rebooks → Free Consultation. Or 3 no-shows → Closed - Lost.

Required task

AUTO-CREATED on setter (not closer): "No-show recovery: call + SMS within 5 min, attempt to rebook." High priority, top of setter queue.

Owner

Reassigned to original setter (assigned_setter custom field). Closer ownership ends at the no-show mark.

Follow Up

Enters when

Setter or closer set lead aside without scheduling another consult (e.g. waiting on capital, spousal conversation, info request).

Exits when

Re-engages → back to Discovery Call or Free Consultation. Becomes unreachable → cadence then Closed - Lost. Long-dated → Long Term Follow Up.

Required task

Future-dated FU task with reason and FU number (FU1, FU2, FU3).

Owner

Original rep

Follow Up Consults

Enters when

Closer booked Consult 2 (DFY FU Consult or AC FU Consult) OR Consult 3 (DFY contract review). See Section 07.

Exits when

Verbal yes + contract sent → Contract Negotiations. Soft no → Follow Up or Long Term Follow Up. Hard no → Closed - Lost.

Required task

Post-call: send contract OR book another FU consult (DFY only) OR move stage with reason.

Owner

Assigned closer

Contract Negotiations

Enters when

Closer sent contract or has verbal commit.

Exits when

Contract signed AND payment received → Closed - Won. Contract dies (lead goes silent past cadence, or hard no) → Closed - Lost or Long Term Follow Up.

Required task

Daily contract follow-up task until signed. Ops adds tracking task in parallel.

Owner

Assigned closer (sales) + Ops (contract status tracking)

Long Term Follow Up

Enters when

Lead said "not now" with specific future timing OR rep judgement that they will be ready later.

Exits when

Future-dated task fires → moves back to Follow Up or directly to a booked call.

Required task

REQUIRED future-dated task with written reason. No task = not allowed in this stage.

Owner

Original closer or setter

Re-Assigned Leads

Enters when

Ops manually moves a lead from one rep to another (rep left, vacation, capacity, ownership change).

Exits when

New rep accepts → moves to whichever active stage the lead was in before reassignment.

Required task

Hand-off task assigned to new owner with context note.

Owner

Ops temporarily, then new rep

Disqualified

Enters when

Hard fail at application (Section 04 disqualification rule) OR rep decision after disco/consult that lead is structurally not a fit (e.g. fraud, geographic restriction, unfixable expectation gap).

Exits when

Only by manual re-qualification (rare).

Required task

REQUIRED lost-reason custom field updated (Section 13 taxonomy).

Owner

Ops

Closed - Lost

Enters when

Lead said no, contract died, hit attempt 12 with no answer, or 3 cumulative no-shows.

Exits when

Only if lead returns inbound and is re-qualified.

Required task

REQUIRED lost-reason custom field updated from the Section 13 taxonomy. EOD report rejects entries without it.

Owner

Original rep

Closed - Won

Enters when

Contract signed AND payment received.

Exits when

Handoff to onboarding completes → opportunity moves out of sales pipeline entirely.

Required task

Handoff task to onboarding (kickoff scheduled, welcome packet sent, intro call booked).

Owner

Closer → Ops/Onboarding

Operational checks.
  • Long Term Follow Up requires a future-dated task. No task means the opportunity is leaking. Daily audit catches it (Section 12).
  • Closed - Lost requires a lost-reason custom field update from the Section 13 taxonomy. EOD report rejects entries without it.
  • Contract Negotiations is owned by both sales (closer) and ops (contract tracking). Ops sees the same opps the closer does.
  • Show / no-show updates fire automatically from calendar status, but reps must verify on every call (currently a major gap, see Section 01).

Within-stage journey milestones (custom fields)

The 15 pipeline stages above capture the sales stage. The micro-commitments WITHIN those stages (NDA signed, deposit paid, contract signed, balance wired) are tracked on per-contact custom fields. This keeps the pipeline lean (15 stages) while still letting anyone see exactly where a contact is in their journey at a glance. Full list of fields and when they fire is in Section 07 under "Journey milestones".

  • Free Consultation stage: nda_sent_at and nda_signed_at get populated for DFY leads here.
  • Follow Up Consults stage: deposit_amount, deposit_paid_at, pre_onboarding_started_at populate when Consult 2 deposit lands.
  • Contract Negotiations stage: contract_sent_at, contract_signed_at, wire_received_at populate as the paper chase progresses.
  • Closed - Won stage: final_payment_received_at is the trigger for moving here AND for the onboarding handoff.

Dashboard view should surface these milestone fields prominently on every Contract Negotiations and Follow Up Consults opp so closer + ops can see status at a glance without opening the contact record.

12

The never-lose-a-lead rule

Defined

Every open opportunity is in a dialer queue OR has a future-dated task. Long Term Follow Up is the only legal limbo. No-show recovery auto-reassigns the lead via setter/closer custom fields.

Every open opportunity must be in a power dialer queue or have a future-dated task. There is no third state. An opportunity with neither is a leak.

The only legal limbo

Long Term Follow Up. A lead can sit there only if the rep has placed a future-dated task on them with a written reason (e.g. "Capital available in Q3, follow up 2026-08-15"). No future task = not allowed in Long Term Follow Up.

Daily audit

Every morning, the daily setter and closer routines (Sections 13 and 14) include a query: all open opportunities owned by me without an open task. That list must be zero by end of day. If it isn't, something is leaking and the rep stays late or pages ops.

No-show recovery and ownership reassignment

When a lead no-shows a Universal Consult (the closer's calendar), the lead does not just sit there. The closer marks the appointment as no-show in GHL within 5 minutes, which fires a workflow that re-engages the original setter.

The mechanic. Two custom fields on every contact: assigned_setter and assigned_closer. When a Universal Consult is booked, assigned_closer gets populated. On no-show, the workflow:
  1. Moves the opportunity to the Free Consultation (No Show) pipeline stage.
  2. Reassigns lead ownership back to assigned_setter (the original setter who booked the consult).
  3. Notifies that setter (SMS + app push).
  4. Creates a high-priority task on the setter: "No-show recovery: call within 5 min, attempt to rebook."
  5. Sends an automated SMS to the lead from the setter's number: "Hey, looks like we missed you on the call. When works to reschedule?"

Same mechanic works for Universal Discovery no-shows except assigned_setter stays on the contact (setter is already the owner there) and the recovery task is auto-created on that setter.

Hard rule for the closer: mark the no-show in GHL within 5 minutes of the missed slot. The whole recovery chain depends on that single action.

Hard rule for the setter: no-show recovery tasks are top of the queue, ahead of the New Leads dialer. Hot lead, recently disengaged, recoverable in the next 30 minutes if you move fast.

Disqualification is a positive action

We never let leads die through neglect. The only ways a lead exits active pipeline:

  • They tell us no (lost reason logged from Section 13 taxonomy)
  • They tell us they are not interested (lost reason logged)
  • We close them on an offer
  • We hit call attempt 12 with no answer (lost reason: Never Answered)
  • They are explicitly moved to Long Term Follow Up with a future-dated task and reason

Anything else is a process failure.

13

Lost reason taxonomy

Defined

Ten-option taxonomy. Every Disqualified or Closed - Lost move requires a written lost reason from this list. EOD report rejects entries without it.

Every lead that exits active pipeline gets a lost reason from this enum. No exceptions. The lost_reason custom field on the contact is REQUIRED before moving an opportunity to Disqualified or Closed - Lost. EOD reports reject entries without it.

The 10 reasons (current taxonomy)

Reason When to use it
Do Not Contact Lead explicitly opted out or asked not to be contacted.
Never Opted-In Lead did not consent to be contacted (data quality / source issue).
Went With Competitor Lead chose another acquisition broker, business-buying program, or training provider.
Bad Contact Info Phone disconnected, email bounced, no reachable channel.
Never Answered Hit cadence cap (12 outbound attempts) without ever connecting.
Bad Timing Real intent but circumstances misaligned (life event, business change). Often paired with Long Term Follow Up.
Insufficient Funds Lead does not have capital to deploy and is not a fit for AC.
Not Interested Lead engaged but explicitly declined the offer after a real conversation.
Abandoned / Ghosted Was engaged then went silent past full cadence. Different from Never Answered (we did connect at least once).
Proof of Concept Objection Lead wanted more proof, case studies, or guarantees than we can provide. Often a coaching/material gap to fix.

Enforcement

  • GHL workflow: opportunity cannot move to Disqualified or Closed - Lost without lost_reason set.
  • Daily audit (Section 14 / 14): query for any opps closed in the last 24 hours with no lost reason → must be zero.
  • Weekly sales ops audit (Section 19): pull lost-reason distribution and review with the team. Trends inform coaching topics.
  • Reps cannot edit a lost reason after EOD without ops approval (prevents revisionism).

This taxonomy is v0.1, open to revision

These 10 reasons are the current GHL options. We may consolidate (Abandoned/Ghosted vs Never Answered have overlap) or add new ones (e.g. "Not Decision Maker", "Lost to Internal Hire"). Revisions get reviewed quarterly in sales ops cadences (Section 19).

14

Daily workflow. Setter

Draft v0.2

Two jobs: burn the call queues and book qualified leads into closer consults. Single dialer (GHL), single discovery calendar. Never picks offer-specific calendars.

The setter's job is two things only: burn the call queues and book qualified leads into closer consults. Everything in this routine serves one of those two outcomes. Single dialer (GHL), single discovery calendar (Universal Discovery), single mission. Setters never make an offer-specific calendar choice.

Daily targets (provisional)

Dials
100+
Conversations
20+
Sets
5+
Shows
4+

The day, hour by hour

  1. 8:00a · Clock in. Open GHL (Conversations + Pipeline + Calendar tabs), the AN dashboard, and today's tracking sheet. Mute Slack except #sales-floor.
  2. 8:05a · Daily sales meeting (15 min). Section 19. Yesterday's numbers, today's plan, blockers.
  3. 8:20a · Morning audit (10 min). Pipeline filter: my opportunities · open · no open task. List must reach zero before 8:30a. For each: add a task with due date, or move to Long Term Follow Up with a written reason.
  4. 8:30a · New Leads queue (GHL Power Dialer). Burn until empty. Every answered call updates the stage immediately. Every no-answer increments cadence automatically.
  5. 9:30a · No Answer queue (GHL Power Dialer). Work the cadence-driven queue.
  6. 10:30a · Universal Discovery calls. Booked calls run on calendar slots. Post-call (within 15 min): update stage, write notes, set the next task, update service_dfy and service_ac stages, and either book the Universal Consult on the spot or set a follow-up task. Then back to dialer.
  7. 12:00p · Lunch (30 min).
  8. 12:30p · New Leads queue refresh. Pull anyone who applied during the morning. Speed-to-lead still applies even on the second wave.
  9. 1:00p · Tasks. Work due-today task list, top to bottom. Tasks that cannot close today get a new due date and a one-line reason in the note. Never a blank reschedule.
  10. 2:30p · No Answer queue (second pass).
  11. 3:00p · Universal Discovery calls (afternoon block).
  12. 4:30p · Closing audit (15 min). Re-run the morning's "no open task" filter. List must be zero. Update tracking sheet (dials, conversations, sets, shows, no-shows). Every Closed - Lost from today has a lost reason.
  13. 5:00p · Submit EOD. Post in #sales-eod: dials, conversations, sets, shows, no-shows, lost reasons logged, blockers, tomorrow's first action.

Hard rules

  • 5 minute rule. Any new lead notification interrupts whatever the setter is doing (except a live call). Within 5 min on the phone.
  • No-show recovery is TOP of queue. When a no-show recovery task auto-fires (lead missed a Universal Consult, ownership reassigned to you), it jumps ahead of the New Leads dialer. Hot lead, recently disengaged, recoverable in the next 30 min if you move fast. (Section 12)
  • Universal Discovery → Universal Consult only. Setter never books an offer-specific FU calendar. They book the Universal Consult and let the closer take the path call.
  • No-show rule. Discovery no-show triggers a call + SMS within 5 min of the missed slot.
  • Stage move = same minute. Stage gets moved during or immediately after the call, not at end of day.
  • Audit must be zero. Open opps without tasks is a fireable pattern, not a one-off. End-of-day = 0 every day.
  • Lost reason required. Every Disqualified or Closed - Lost move requires a Section 13 taxonomy entry.
  • Show / no-show update. Every appointment status updated in GHL within 5 min of the call.
15

Daily workflow. Closer

Draft v0.3

Run consults that end in a contract sent. Chase contracts to signed and paid. Cross-sell prep (read both scores) is mandatory before every Consult 1.

The closer's job: run consults that end in a contract sent, and chase contracts to signed and paid. Closer runs the full closing process from Section 07: Consult 1 (Universal Consult) → Consult 2 (offer-specific FU Consult) → optional Consult 3 (DFY contract review). Closer is the only role that picks an offer-specific calendar.

Daily targets (provisional)

Consults run
4 to 6
Contracts sent
2+
Contracts touched
100%
Closes
1+

The day, hour by hour

  1. 8:30a · Clock in. GHL (Calendar + Pipeline + Conversations), dashboard, tracking sheet.
  2. 8:45a · Daily sales meeting (15 min). Joins setter standup. Section 19.
  3. 9:00a · Pre-call prep block (45 min). For every consult on today's calendar: read the application, BOTH scores (DFY and AC), prior call notes. For Consult 1 leads, write a one-line "primary pitch + likely upsell/downsell" note. For Consult 2 leads, confirm the path locked on Consult 1 and load the offer-specific deck. Pre-prep beats winging it; cross-sell preparation is non-optional.
  4. 9:45a · Morning audit (15 min). Pipeline filter: my opportunities · open · no open task. Must reach zero before 10a. Special attention to Contract Negotiations: every contract older than 24 hours gets a touch today.
  5. 10:00a · Contract Negotiations block (30 min). Call/SMS every open contract. Update status note in opportunity. Trigger ops re-send on any contract that needs a fresh link.
  6. 10:30a · Consult block 1. Mix of Universal Consults (Consult 1) and FU Consults (Consult 2 / 3). Within 15 min after each call: stage move, notes, update service_dfy and service_ac stages, AND book the next call OR send the contract OR set FU task. For Consult 1, the next call is the appropriate FU Consult (DFY or AC). Book it during the call.
  7. 12:30p · Lunch (30 min).
  8. 1:00p · FU Consults block. Booked Consult 2s and any DFY Consult 3s run here.
  9. 2:30p · Tasks. Work due-today tasks, top to bottom. Reschedule uncompleted with reason.
  10. 3:30p · Consult block 2.
  11. 4:30p · Closing audit (15 min). Re-run the no-task filter. Zero. Update tracking sheet: consults run (broken out by Consult 1 / 2 / 3), shows, no-shows, contracts sent, contracts signed, dollars committed, dollars collected. Every Closed - Lost has a lost reason.
  12. 5:00p · Submit EOD. Post in #sales-eod: consults (1/2/3 split), shows, contracts out, contracts signed, $ committed, $ collected, blockers, tomorrow's biggest opp.

Hard rules

  • Cross-sell prep is mandatory on Consult 1. Closer reads BOTH scores before every Consult 1. No exceptions.
  • FU Consult booked at end of Consult 1. Don't let the lead leave without a Consult 2 calendar invite in their inbox. Pick the right calendar (DFY FU or AC FU) based on the recommended path.
  • No pricing on Consult 1. Full price reveal happens on Consult 2 only.
  • Consult 3 is the DFY exception, not the default. If you're booking Consult 3 on more than 30% of DFY Consult 2s, escalate to sales ops.
  • Stage move + post-call task within 15 min. Not at end of day. Not at end of block.
  • No-show mark within 5 min. When a Universal Consult no-shows, mark it in GHL within 5 min. This single click fires the recovery workflow that reassigns the lead to the original setter and creates their recovery task (Section 12). If you skip the mark, the recovery doesn't happen and the lead leaks.
  • Contract touch rule. Every open contract in Negotiations gets a touch every day.
  • Lost reason required. Every Closed - Lost move requires a Section 13 taxonomy entry.
  • Service field updates required. Every consult ends with service_dfy and service_ac stages updated. These fields drive every downstream automation, including the right nurture sequence.
  • Audit must be zero. Same as setter. End-of-day open opps without tasks = 0.
16

Follow up system

Draft v0.1

Half-defined. The calendar-driven and post-call nurture pieces are in Sections 06 and 07. The non-call FU mechanics (SMS / email / voicemail cadence between consults) are still TBD.

Half of the follow-up system is now defined. Section 06 covers per-offer reminder + nurture automation (FU calendar reminders + post-call service_dfy and service_ac nurture drips). Section 07 covers structured follow-up consults (Consult 2 and Consult 3). What remains TBD is the non-call FU mechanics for leads who are NOT in an active consult flow.

Defined (in other sections)

  • Calendar-driven FU. Section 06 defines DFY FU Consult and AC FU Consult calendars with offer-specific reminders.
  • Consult sequence. Section 07 defines Consult 1 → Consult 2 → optional Consult 3 (DFY only).
  • Post-call nurture. Section 06 defines how service_dfy and service_ac stage transitions fire the right longer-term nurture drips.
  • Pipeline-stage FU. Section 11's "Follow Up" stage requires a future-dated FU task with reason and FU number (FU1, FU2, FU3).

Still TBD

To define. The non-call FU mechanics for leads who go silent OR sit in Follow Up stage between consults.
  • FU1 / FU2 / FU3 cadence (days between attempts)
  • Channel mix per attempt: call vs SMS vs email vs voicemail drop
  • Templates per channel per FU number
  • Where rep sees "this lead is on FU2" at a glance (pipeline view? task name? custom field?)
  • Exit criteria: when does FU stop and move to Long Term Follow Up vs Closed - Lost
  • Coordination with Section 06 nurture: nurture drips run automatically; rep-driven FU is on top. Avoid double-touching the lead in the same window.
17

Contracts and payments

TBD

Entire section TBD. Section 07 defines WHEN the NDA, deposit, contract, and balance wire happen; this section will define HOW (platform, automation, tracking, payment routing, onboarding handoff).

To define. The full chain from "closer says yes on Consult 2" to "client is paid and onboarded". Section 07 defines when each commitment moment happens (NDA at end of Consult 1, deposit at end of Consult 2, contract send + balance wire after). This section needs to define how. Open questions:
  • NDA platform: PandaDoc, DocuSign, GHL native. Templated NDA per offer (probably DFY only initially).
  • Contract platform. Same or different from NDA platform.
  • Payment processor. Stripe? Direct wire? Both? How do deposits vs balance wires get tracked separately on the contact record.
  • Deposit refund policy. Section 07 deposit ask references refund language. Needs to clear legal review (Section 22).
  • Trigger automation: who fires the NDA, the contract, the payment link, the Pre-Onboarding sequence.
  • Tracking: single view of every NDA / contract out, signed, expired, voided. Plus deposit-paid status.
  • Pre-Onboarding owner. Sales rep stays the owner during this window per Section 07, but who owns the welcome packet, intro video, and onboarding-checklist preview content production.
  • Handoff to onboarding once final_payment_received_at is set (full payment received). Who runs the kickoff meeting, what gets handed over (notes, contract, NDA, deposit history).
  • Stage gating: which pipeline stage requires NDA signed vs deposit paid vs contract sent vs signed vs paid. (Probably mostly automated based on milestone custom fields from Section 07.)
  • Per-offer contract + NDA templates (DFY contract is materially different from AC; DFY NDA may have no AC equivalent).
18

KPI dashboard and reporting

Defined v0.1

Custom KPI dashboard, vibe-coded into the existing AN dashboard sub-project. Architecture proven by an internal dashboard pattern we have already shipped. Eight tabs, four integrations (GHL, Hyros, Meta Ads, application platform), data warehoused in Cloudflare D1 with KV caching. Reps double-enter nothing. Manual input only for things GHL cannot capture.

Reference architecture. We have an internal KPI dashboard pattern already shipped and battle-tested. AN dashboard sub-project clones the same pattern with AN-specific customizations (two ICPs DFY/AC, 15 pipeline stages from Section 11, lost reason taxonomy from Section 13, journey milestones from Section 07).

Architecture

  • Stack: Astro + TypeScript + Tailwind v4 on Cloudflare Pages (SSR via Workers adapter so GHL keys stay server-side).
  • Data warehouse: Cloudflare D1 (SQLite). Scheduled ingestion jobs pull from each source on cron tick. Dashboard queries D1, not the source APIs. This is the single most important architectural choice. Live API queries on every page load would be slow and would burn API quotas.
  • Cache: Cloudflare KV for computed payloads (5-minute TTL on the KPIs page). Multi-rep traffic hits cache instead of recomputing.
  • Filters that persist across tabs: date range, ICP (DFY / AC / all), source (Meta / non-Meta / all). Single nav component preserves filter context.
  • Period-over-period: every metric shows a previous-window delta with up/down/flat arrow + green/red color. Inverse metrics (CAC, CPL) get green-when-lower.
  • Sparklines: daily series for spend, leads, cash, consults, discovery rendered as inline SVG polylines (no chart library).
  • Auth: Cloudflare Access or basic auth for internal use. No public exposure.

The 8 tabs

Tab What it shows
KPIsFunnel economics overview. Spend, leads, applications, qualified apps, consults, discovery, offers made, CAC, cash collected, opps created. ROAS, profit, win rate, avg deal size. Cost-per for every funnel step. Ad platform metrics (impressions, clicks, CPM, CPC, CTR). All with deltas + sparklines.
FunnelStage-by-stage drop-off view. Lead → app started → app completed → qualified → discovery booked → discovery shown → consult booked → consult shown → offer made → contract sent → closed-won. Conversion rate at every step. Identifies the bottleneck.
VelocityCycle time per stage. Days from lead → app, app → qualified → consult, consult → offer, offer → close, contract sent → signed, signed → wire received. Section 07 journey milestone fields feed this. Surfaces slow stages.
Show rateShow / no-show breakdown per setter, closer, and calendar (Universal Discovery, Universal Consult, DFY FU, AC FU). Section 11 no-show recovery effectiveness measured here.
LeaderboardPer-rep ranking on key KPIs. Dials, sets, shows, consults, contracts sent, closes, dollars. Used in daily standup (Section 19) and weekly coaching (Section 19).
BookingsRaw appointment log. Every Universal Discovery / Universal Consult / FU Consult slot ever booked, with status (showed / no-show / cancelled / rescheduled), owner, and outcome. Audit trail.
ClosesWon deals audit. Every Closed - Won opportunity with closer, contract value, deposit / wire timestamps, time-to-close, win_story (Section 19). Feeds the client wins library.
IngestWarehouse health. Last successful sync from each integration, error log, row counts per table, data-coverage timestamps (when does the underlying data start). Surfaces when an integration breaks.

The 4 integrations

Source What we pull Auth
Go High Level (GHL) Contacts, opportunities (stage transitions, custom fields, lost_reason, service_dfy, service_ac, journey milestones from Section 07), appointments, users, call dispositions. Private integration API key (v2 API). GHL_API_KEY + GHL_LOCATION_ID env vars. Server-side only.
Hyros Attribution. Multi-touch source data on leads, sales, calls, ads. Critical for "which source did this lead really come from" when first-touch and last-touch differ. API-Key header. Verified pattern from prior internal use.
Meta Marketing API Daily ad spend, impressions, clicks, unique link clicks per ad. Source for CPM, CPC, link CPC, CTR. Pulled with time_increment=1 for daily granularity. Trailing 3 days re-pulled per cron tick (Meta finalizes spend 24-48 hrs late). Long-lived system user token as query param.
Application platform (Brendan's site) Application submissions: both DFY and AC scores, raw answers, source_attribution, NDA / deposit triggers. AN will use Brendan's custom form on the main website. Webhook to GHL from Brendan's submit handler (preferred) or polling Typeform API as a fallback pattern.

Core metrics tracked

Following the proven internal model, every metric below auto-computes from the warehouse. Reps don't input any of this manually.

  • Volume: spend, leads, applications (started + completed + completion rate), qualified apps with grading distribution, opps created, cash collected.
  • Tier breakdown for Universal Discovery, Universal Consult, and FU Consults: total booked, self-book vs setter-book, showed, show rate.
  • Performance: ROAS (cash / spend), profit (cash. spend), win rate (closes / opps), avg deal size.
  • Conversion rates at every step: lead→app, app completion, app→qualified, lead→discovery, lead→consult, consult-show→offer, offer→close, lead→close.
  • Cost per: CPL, CPA (completed), CPQA (qualified), self-book consult, setter-book consult, consult total, consult show, discovery (same breakdown), show, offer.
  • Ad platform: impressions, clicks, link clicks, CPM, CPC, link CPC, CTR.
  • Breakdowns: by source (Meta, organic, AC webinar, web/app), by ICP (DFY, AC, unknown).
  • AN-specific additions on top of the base pattern: Section 07 journey milestone counts (NDAs sent / signed, deposits paid, contracts sent / signed, wires received), Section 13 lost reason distribution, Section 10 disposition mix per rep, note-coverage metric (notes count vs Connected disposition count per rep per day).

Auto-pulled vs manual input

The line is clear: GHL captures everything that has a structured field. Manual input is reserved for things that don't.

Auto-pulled (no rep input)

  • Dials + dispositions (from GHL Power Dialer)
  • Appointments set / shown / no-shown (from calendar status)
  • Pipeline stage transitions
  • Contracts sent / signed (from contract platform webhook)
  • Deposit paid + wire received (from payment processor webhook)
  • NDA sent / signed (from contract platform webhook)
  • Lost reasons (from lost_reason custom field)
  • Service stages (service_dfy, service_ac)
  • Notes count (from GHL contact notes API)
  • Revenue (from opportunity monetary_value)
  • Ad spend + ad platform metrics (from Meta API)

Manual input (small form on dashboard)

  • Today's plan (one paragraph, daily)
  • Blockers (free-text, daily)
  • Top-opp narrative (which 2-3 opps need attention this week, weekly)
  • Self-reported call quality on coached calls (weekly)
  • Win story (per Closed - Won opportunity, 24 hrs after close. Feeds Section 19 client wins library)
  • Coaching commitments (after weekly call review, what the rep will apply)

EOD reporting becomes lightweight because the dashboard already has everything. Rep submits the daily form (today's plan, blockers, optional win story) and the dashboard does the rest.

Ingestion + cron schedule

  • GHL: incremental sync every 15 min (contacts updated since last sync, new appointments, opportunity changes).
  • Meta Ads: daily spend pull at 6am. Trailing 3 days re-pulled to capture late spend finalization.
  • Hyros: hourly sync of attribution data.
  • Application platform: webhook-driven (real-time push from Brendan's form submit handler), with a fallback hourly poll for safety.
  • All ingest jobs write to D1, log success/failure to a sync_log table, and surface on the Ingest tab.

Build status

  • Reference pattern: already built and shipping data internally. Full reference implementation available to engineering.
  • AN dashboard sub-project: exists in acquisition-network/dashboard/, scaffolded from the reference pattern. GHL credentials configured. Needs: (a) GHL custom field configuration for AN-specific fields (service_dfy, service_ac, journey milestones, lost_reason), (b) AN-specific tier configuration for DFY/AC, (c) D1 database creation + ingest jobs wired, (d) deploy to its own Cloudflare Pages project.
  • Application source: blocked on Brendan's platform shipping (Section 03). Until then, use whatever's wired to GHL today.

Who owns what

  • Dashboard build + maintenance: sales ops + engineering. Pattern is proven internally; the AN build is a port + customize, not a from-scratch build.
  • Daily review: sales ops lead at the 8:05a standup (Section 19) pulls the Leaderboard and KPIs tabs.
  • Weekly review: Friday audit (Section 19) pulls Show rate, Ingest, Bookings tabs.
  • Closer/setter access: read-only login. Self-service for their own row on the Leaderboard, plus full visibility into team-wide funnel.
19

Sales ops cadences

Defined

The cadences that make the system actually get followed: daily standup, weekly client wins, weekly call coaching, Friday audit, quarterly taxonomy review.

The system only works if leadership runs the rituals. Section 01 named "no daily sales meeting" and "no call coaching" as broken. This section is the fix.

Client wins library (foundation for every meeting)

Every recorded client win lives in a central library that reps can access on demand. The library is the fuel for daily meeting openers, weekly wins recaps, weekly training, and rep pitch confidence on live calls. Wins disappear from memory fast if they aren't captured immediately.

  • Capture: every Closed - Won opportunity gets a win_story text field filled in by the closer within 24 hours of close. Format: one-paragraph narrative covering "who, what they were trying to do, what we did for them, what changed for them." Plus a dollar amount and a one-line headline.
  • Location: aggregated into a feed view in the AN dashboard (Section 18). Sortable by date, offer (DFY vs AC), dollar amount.
  • Access: every rep can pull the feed at any time. Featured on the dashboard home screen so it's the first thing visible at login.
  • Used by: daily standup opener (one win, 60 sec), weekly client wins meeting (deeper recap), call coaching ("how did this rep handle the close that became this win"), pitch rehearsal (reps reference specific case studies on Consult 1).
  • Owner: sales ops lead curates the feed (flags featured wins, prunes stale ones). Closers own writing their own win stories.

Daily sales meeting (15 min)

  • When: 8:05a, every weekday
  • Who: all setters, all closers, sales ops lead (runs it)
  • Format:
    1. Wins opener (1 min): sales ops lead reads ONE recent win from the library. Names the closer + the lead + the dollar amount. Builds energy and pattern-recognition.
    2. Yesterday's KPIs (4 min): per rep + team total. Dials, sets, shows, consults, contracts, dollars.
    3. Today's plan (5 min): consult load, queue depth, blockers (one minute per person max).
    4. Week-to-date KPI check (3 min): reps who are pacing below quota for the week get flagged; sales ops lead schedules a 1:1 same day.
    5. Sign-off (2 min): blockers get an owner and a deadline before the meeting ends.
  • Output: blockers resolved or owned; pacing risks flagged; team alignment for the day locked.

Weekly client wins / sales training (45 min)

  • When: Monday 9:30a
  • Who: all setters, all closers, sales ops lead, founder (rotating)
  • Format: 15 min deep-dive wins recap (the top 2-3 closes from last week, walked through by the responsible closer with framing on "what worked"), 30 min sales training (one topic: objection handling, opener, transition to close, deposit ask mechanics from Section 07, etc.)
  • Output: training notes captured in shared doc; one specific tactic to apply this week; new win stories logged in the library.

Weekly call review / coaching cycle (1 hr)

  • When: Wednesday 3p
  • Who: sales ops lead + 2 reps (rotating: alternate setters and closers each week)
  • Format: review 2 recorded calls per rep (one win, one loss). Coach on thinking, framing, transitions, pivot mechanics, cross-sell execution.
  • Output: rep gets 2 specific coaching points to apply. Logged in coaching tracker.

Weekly sales ops audit (built into Friday EOD)

  • When: Friday 4:30p
  • Who: sales ops lead
  • Format: pull lost-reason distribution, no-show rates, call cadence compliance, audit-zero compliance per rep, contract aging in Negotiations, Consult 3 frequency for DFY (Section 07 tracking signal).
  • Output: any rep failing standards gets a 1:1 with sales ops Monday. Repeat failures escalate to founder.

Quarterly taxonomy review

  • Lost reason taxonomy (Section 13) reviewed every quarter
  • Pipeline stage criteria (Section 11) reviewed every quarter
  • Calendar architecture (Section 06) and closing process (Section 07) reviewed every quarter or whenever volume shifts trigger sprawl

Cadence ownership

  • Sales ops lead owns running every cadence above. If the role is not staffed, founder fills in until it is.
  • Founder attends weekly client wins and the Friday audit by default; daily and coaching are sales-ops-led.
  • Reps attend mandatory cadences. Three misses without prior approval triggers a coaching conversation.
20

Rep onboarding

Draft v0.1

A rep onboarding SOP already exists outside this site. Needs to be optimized and ported into this SOP site so it lives alongside the rest of the system. Owner of that work not yet decided.

⚠ To do. The current rep onboarding SOP lives in a separate document. Two actions needed before this section is real:
  1. Optimize the existing SOP against the v0.4+ sales process described in this site (especially the call dispositions, note-taking SOP, daily routines, and closing process. anything new since the existing rep-onboarding SOP was written needs to be reflected).
  2. Vibe-code it into this site as the canonical Section 20 content. Once ported, this section replaces the standalone doc as the source of truth.
Owner decision needed: who runs each new rep through this onboarding (sales ops lead? founder? buddy-system with a senior rep?). And who owns keeping the onboarding SOP fresh as the sales process evolves.

What rep onboarding should cover (placeholder structure)

  • Week 1: shadow existing reps, read this SOP end-to-end, GHL access setup, dialer training
  • Week 2: mock calls, role-play closes, supervised live calls (no real money on the line yet)
  • Week 3: live calls under supervision, daily debrief with sales ops lead
  • Week 4: solo on real leads with weekly coaching cadence (Section 19) for the first 90 days
  • Ramp-up KPI thresholds: when does a new rep start getting full lead allocation vs reduced allocation

Above is a sketch, not policy. Replace with the existing SOP's actual content after porting.

21

Rep offboarding and lead reassignment

TBD

No current strategy. When a rep leaves (or is moved off the team), there is no documented process for what happens to their open opportunities, future-dated tasks, in-flight contracts, or pipeline ownership.

To define. When a rep leaves, several streams of leads need to land somewhere:
  • Open opportunities in active stages (New Leads, No Answer, Discovery Call, Free Consultation, Follow Up Consults, Contract Negotiations). who picks them up, on what timeline, with what handoff context
  • Future-dated tasks on Long Term Follow Up leads. get reassigned via the assigned_setter / assigned_closer custom fields, but who is the new owner
  • In-flight contracts in Contract Negotiations. needs human handoff, not just a stage owner change
  • Active SMS / email threads. does the new owner introduce themselves, or pick up mid-conversation
  • Recorded calls and notes. need to be reviewed by the new owner for high-value opps before re-engaging
  • Compensation implications. does the leaving rep still get credit on closes that happen after they leave
  • Volume balancing. does the load split evenly across remaining reps, or get assigned by closer specialty
  • Notification to the leads. do we tell leads "your rep changed" or silently swap (and risk awkwardness)

Why this matters now

The existing setter / closer custom field architecture (Section 12) already supports lead reassignment automation. What's missing is the policy + the human handoff process. Without this, a rep departure becomes a leak vector: leads sit unworked while ops figures out the redistribution.

22

Compliance

Draft v0.1

Outbound calling, SMS, and recording all carry legal obligations. This section flags the topics that need real legal review before scaling outbound. Not policy yet.

⚠ Needs legal review before scaling outbound. The topics below are flagged here so they don't get forgotten, but the actual policy language needs to come from someone with operations / legal authority, not from this SOP alone. Treat the bullets as a checklist of conversations to have, not as compliance-cleared rules.

Topics that need to be addressed

  • TCPA (Telephone Consumer Protection Act). Rules around outbound calls to consumer cell phones, automated dialers, and recorded message use. Penalties per violation are significant. Need to confirm GHL Power Dialer compliance and whether our consent flow on the application meets the standard.
  • SMS opt-in. Outbound SMS requires explicit consent. The Page 1 consent language on the application form (Section 04) needs to be reviewed and locked. Without it, every outbound SMS is a TCPA exposure.
  • Do Not Call (DNC) registry. Required check for outbound cold calling to consumers. Internal DNC list (leads who said "Do Not Contact" per Section 13 lost reason) also needs to be scrub-checked before any re-engagement campaign.
  • Call recording disclosure. Some states require all-party consent ("this call may be recorded for quality and training purposes" announced at the start). Some require only one-party. Need to standardize on the strictest (all-party) for safety.
  • Privacy policy. Required link on the application form. Needs to disclose what data we collect, how we use it, and how we handle deletion requests.
  • Email anti-spam (CAN-SPAM). Required physical address, unsubscribe link, accurate sender info on every marketing email.

Owner

Not yet assigned. Likely operations lead + external legal counsel for the actual policy drafting. Sales ops lead for enforcement once policy exists.

23

Open items and build backlog

Defined

All unfinished work, ranked. v0.4 closed most v0.3 gaps. Two sections still TBD: Contracts and Reporting. The biggest single open item is staffing the sales ops lead role.

The complete list of unfinished work for this SOP, ranked. v0.3 closed most of the v0.2 gaps. What remains:

Locked in v0.3

  1. Section 02 Two offers · Defined
  2. Section 05 Routing model (3-lane decision tree) · Defined
  3. Section 06 Calendar architecture (4 calendars: 2 lead-facing + 2 internal FU) · Defined
  4. Section 07 Closing process (2-call default, 3-call DFY exception) · Defined
  5. Section 08 Speed to lead (GHL Power Dialer manual action locked as single mechanism) · Defined
  6. Section 09 Dialer cadence (GHL only, Wave deprecated) · Defined
  7. Section 11 Pipeline stages · Defined
  8. Section 12 Never-lose rule · Defined
  9. Section 13 Lost reason taxonomy · Defined
  10. Section 19 Sales ops cadences · Defined

Drafted in v0.3, needs team review

  1. Section 01 Why · Draft · expanded with all team-named gaps; review for accuracy
  2. Section 03 Lead sources · Draft · 4 sources now; sources 3 + 4 still future
  3. Section 04 Application + scoring · Draft v0.2 · capital fork + dual scoring; thresholds and weights need calibration once Brendan's form is live and we have submission data
  4. Section 14 Setter day · Draft v0.2 · run for a week, revise from observation
  5. Section 15 Closer day · Draft v0.3 · updated to reflect closing process; same: run for a week, revise
  6. Section 16 Follow up system · Draft v0.1 · half-defined by Sections 06/07; non-call FU mechanics still TBD

Still TBD

  1. Section 17 Contracts and payments · TBD · platform, automation triggers, tracking view, payment link, onboarding handoff, per-offer contract + NDA templates, deposit refund policy
  2. Section 21 Rep offboarding and reassignment · TBD · 8 streams of leads need handoff process when a rep leaves

Cross-cutting open items

  1. Brendan's platform rebuild ships (target: within 30 days). Until then we run the transitional Femi + GHL state.
  2. AN dashboard sub-project needs to wire the KPI views called out in Section 01 ("no clear KPI dashboard"), including the Section 07 closing-process tracking signals.
  3. Source 3 (web/app) and Source 4 (AC webinar) need launch dates and source-attribution fields wired in GHL.
  4. Sales ops lead role needs to be staffed (or founder owns it explicitly until staffed).
  5. Pre-approved price-drop list (Section 07) needs to be defined by leadership and circulated to closers.