Acquisitions Lifecycle Hub

This is the navigation hub for the full acquisitions pipeline — from initial deal ingestion through Stage 4 re-engagement. It provides an ordered map to every stage hub, compliance gate, agent, and skill involved. Do not duplicate logic here — follow the wikilinks to the stage-specific hubs for implementation detail. Read this hub when orienting to the acquisitions flow or identifying which stage a deal is in.

Quick reference

FieldValue
StagesStage 1 (Initial Outreach) → Stage 2 (NO_REPLY_4H) → Stage 3 (PRICE_DROP) → Stage 4 (Re-engage)
Primary agent_summary
Supporting agents_summary, _summary
Agent handoff chaindeal-ingestion → acquisitions (Stage 1) → acquisitions (Stages 2-3) → aurora (inbound classify) → dispo (Stage 4 hand-off)
Compliance gates listdefer to compliance-gates
Skills invokedacquisitions-outreach, acquisitions-followup, hubspot-deal-ingest
Success metricsStage-5 qualification rate; deal-to-dispo handoff count; avg touches to reply
Cost per stageStage 1: ~0.01 SMS per send; Stage 2-3: same; Stage 4: ~$0.005 LLM
Throughput~50-200 deals/day active; follow-up-scheduler runs every 30 min
Last run resultSee openphone_events table (Supabase CCP) for live audit trail
Failure modesGate fail (quiet hours), red-zone approval block, quo-note lineId fail-closed, 10DLC blocking

Stage map — navigation index

Stage 1 — Initial Outreach

Hub: outreach-stage1

Triggered when a deal moves to qualification_status='approved' in acquisition_deals. The B7 three-zone approval gate (Green/Yellow/Red) fires before any send.

Key components:

  • workspace/scripts/workers/unified-outreach-engine.js — canonical coordinator
  • workspace/scripts/workers/deal-outreach-worker.js — single-deal trigger
  • workspace/scripts/lib/gate-computer.js — 5-gate qualification progression
  • workspace/scripts/lib/compliance-gate.js — quiet hours + TCPA
  • workspace/scripts/lib/mentor-voice.js — touch→mentor cadence (Ferry→Damji→Norton→Cardone→Terry)
  • Skill: acquisitions-outreach

Exit criteria: SMS delivered, openphone_events row written, Quo internal note posted.

Transition trigger: No reply in 4h → Stage 2 (NO_REPLY_4H).


Stage 2 — NO_REPLY_4H Cadence

Hub: followup-stages-2-3-4

The follow-up scheduler fires every 30 min and evaluates all eligible deals. NO_REPLY_4H is the first escalation trigger.

Key components:

  • workspace/scripts/workers/follow-up-scheduler.js — cron worker (every 30 min)
  • workspace/scripts/lib/follow-up-engine.js — trigger evaluation
  • Triggers handled: NO_REPLY_4H, NO_REPLY_24H, NO_REPLY_72H
  • Skill: acquisitions-followup

HubSpot stage transition: → "Reviewing Deal" (on NO_REPLY_4H trigger).

Transition trigger: Price drop ≥5% detected OR Day-7+ stall → Stage 3.


Stage 3 — PRICE_DROP / Detail Re-engagement

Hub: followup-stages-2-3-4

Re-engagement triggered by CH price drop (≥5%) or new public record detail (occupancy change, condition update).

Key components:

  • follow-up-engine.js triggers: PRICE_DROP, NEW_DETAIL
  • Template: deal-qualification/templates/sms/price-drop-engage.json, re-qualify.json
  • stage-sync.js — updates HubSpot → "Re-engaged"
  • Skill: acquisitions-followup

Transition trigger: CH replies → inbound classification → Stage 4 (if F: Buyer interest) or continue cadence.


Stage 4 — Re-engage / Inbound Reply Handling

Hub: followup-stages-2-3-4

Inbound SMS arrives via OpenPhone (port 18792) or SalesMsg (port 18793). The conversation classifier (A-G categories) routes each reply.

Key components:

  • webhooks/quo-handler-enhanced.js (port 18792) — OpenPhone inbound
  • webhooks/salesmessage-handler-v4-complete.js (port 18793) — SalesMsg inbound
  • workspace/scripts/lib/conversation-classifier.js — A-G categorizer
  • workspace/scripts/lib/response-generator.js — v3 Dispo Conversion Agent (5,138-msg trained)
  • workspace/scripts/lib/stage-sync.js — acq ↔ dispo HubSpot sync
  • Skill: acquisitions-followup

A-G category routing:

CategoryPatternAction
APrice negotiationcontinue thread via response-generator
BDetail provisionparse → update acquisition_deals
CShowing requestescalate to dispo handler
DSTOP / opt-outsuppression list; no further sends
EOff-topicflag for human review
FBuyer interestroute to dispo-blast
GMulti-propertythread-context aggregate, smart-reply

Hand-off to dispo: Category F inbound → deal moves to dispo pipeline 816046 → dispo-lifecycle.


Agent identity anchors

The acquisitions agent MUST have its SOUL.md read before any behavioral change is proposed. Current identity: relentless CH qualification machine; 5 gates; mentor cadence strictly enforced; never bypass compliance.

Supporting agents:

  • _summary — handles inbound A-C classify + escalation
  • _summary — data enrichment (ARV, comps, occupancy lookup)

Compliance gates are centralized — defer all gate logic to compliance-gates.

Compliance gates reference

DO NOT implement gates here. Navigate to the compliance hub:

compliance-gates — 5 pre-send gates (gate-computer, compliance-gate, blast-safety, thread-context, response-generator)

Key gate rules (summary only):

  • Quiet hours: 8am-9pm local to CH’s state TZ
  • Max 1 send per CH per 24h
  • Dup content: don’t resend same template if last send <72h
  • 10DLC compliance — BLOCKING: see twilio for A2P 10DLC repeat-denial status

Agents that touch this

  • _summary — primary executor (all stages)
  • _summary — inbound classification + escalation
  • _summary — ARV comps + data enrichment
  • _summary — alternate cadence (less aggressive follow-up)

Skills that invoke this

Plans that govern this

Feedback rules

KB / source docs

System maps

Open issues / TODOs

  • 10DLC A2P repeat-denial is BLOCKING all OSIL SMS tiers until resolved. See osil-twilio-10dlc-resubmission-2026-05-03 B14.
  • acquisitions.sqlite has only 1 chunk (Phase 7.5 investigation per openclaw-fragmentation-fix-2026-05-01 §A2.3) — memory recall for acq agent severely degraded.
  • Stage 4 inbound: Category E (off-topic) escalation to human review needs defined Discord channel routing.

Recent activity

  • 2026-05-03: hub created by W1-S9
  • 2026-05-03: 4-stage lifecycle map authored with forward-refs to stage detail hubs