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-ingestskill wrapshubspot-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-outreachhandles 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-followupskill 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-blastskill coordinates 4 channels (InvestorBase end-buyers, CRMLS agents, PropStream flippers, showing-day cohort). Always run--dry-runfirst 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.
Related
- 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
- CLAUDE.md — Tool Trigger Conditions: hubspot-deal-ingest, acquisitions-outreach, acquisitions-followup, dispo-blast skill descriptions
- hubspot-deal-creator.js — 1006-line canonical deal create/dedup/association script
- unified-outreach-engine.js — Stage 1 outreach engine
- follow-up-engine.js — Stage 2-4 cadence engine with A-G classifier