Deal Lifecycle Map

This map shows the state transitions a real estate deal moves through from ingestion to close, and which agents and skills own each stage. Read this when debugging a deal stuck in a stage, understanding which skill to invoke for a given action, or auditing whether all compliance gates are active. The acquisitions side (CH outreach) and the dispo side (buyer blast) run on different agent tracks and must not be confused.

Diagram

stateDiagram-v2
    [*] --> Ingested: Source (IL/Crexi/PropStream/Manual)
    Ingested --> Qualified: Henry review / auto-score
    Qualified --> HubSpot: hubspot-deal-ingest skill
    HubSpot --> OutreachStage1: acquisitions-outreach skill
    OutreachStage1 --> FollowUp: NO_REPLY_4H trigger
    FollowUp --> FollowUp: Stage 2-4 cadence (acquisitions-followup)
    FollowUp --> Negotiating: Seller replies (A-G classifier)
    Negotiating --> UnderContract: Agreement reached
    UnderContract --> DispoBlast: dispo-blast skill (buyer-side)
    DispoBlast --> ShowingDay: Buyer interest confirmed
    ShowingDay --> Closed: Contract executed
    Closed --> [*]

    OutreachStage1 --> Dead: No response / rejected
    FollowUp --> Dead: Cadence exhausted
    Negotiating --> Dead: Seller declines
    Dead --> [*]

How to read this

  • Ingested → HubSpot: hubspot-deal-ingest skill wraps hubspot-deal-creator.js (1006 lines). It writes to BOTH the acquisitions pipeline (877963314) and the dispo pipeline (816046) in a single call — never call HubSpot pipeline creates separately.
  • OutreachStage1: acquisitions-outreach handles first-touch SMS via the unified outreach engine. Five compliance gates (gate-computer, compliance-gate, blast-safety, thread-context, response-generator) must all pass. Never bypass.
  • FollowUp Stages 2-4: acquisitions-followup skill handles the cadence triggers (NO_REPLY_4H, PRICE_DROP, etc.) and classifies inbound replies with the A-G conversation classifier. A=Interested, G=Dead.
  • DispoBlast: dispo-blast skill coordinates 4 channels (InvestorBase end-buyers, CRMLS agents, PropStream flippers, showing-day cohort). Always run --dry-run first unless Henry explicitly authorizes live blast.
  • Dead state: Deals can die at three points — early (no outreach response), mid-follow-up (cadence exhausted), or mid-negotiation (seller declines). Dead deals stay in HubSpot, never deleted.
  • agents-tier-structure — shows Acquisitions agent (Sonnet tier) and Dispo agent handling each stage
  • ports-topology — :18792 (OpenPhone/Quo handler) and :18793 (SalesMsg) receive seller replies
  • auth-chain-map — seller reply webhooks pass through auth chain before reaching acquisitions-followup
  • external-integrations — HubSpot, SalesMsg, InvestorLift all involved in deal lifecycle

See also