System map
Flow
cleveroffers.com funnel ──▶ contact-ingress (exists) ──▶ Offers Core: Lead
│
Concierge ── phone ──▶ Call sheet: validate facts, upgrades, repairs, timeline, reason
│ SLA clock starts
Core Matching (exists) ──▶ Advisor assigned [A21] ──▶ Advisor Package: photos + CMA
│ package READY
Core: Match (buy boxes, explainable) ──▶ Campaign ──▶ Sends (email/SMS, tokenized links, retries)
│
Investors ──▶ Response: pass | interested(walkthrough) | indicative | firm(+POF)
│ deadline / auto-extend
Advisor ──▶ Comparison: firm + indicative offers vs. list-and-sell estimate ──▶ presents to seller
│
Seller decides ──▶ Transaction state machine ──▶ HubSpot mirror ──▶ fee legs + cross-sell events
(buy-side agent, financing → LO Portal)
Boundaries
| System | Role | Direction | Notes |
| Offers Core | System of record | n/a | Investor, buy box, property, call sheet, package, campaign, send, response/offer, presentation, transaction. |
| Core Lead Ingestion | System of record for lead identity | In | Offers Core stores its deduplication_id and external lead id. |
| Core Matching / Agent Portal | Assigns the Advisor [A21] | In and out | Offers Core stores the assignment and exposes package and comparison views to embed later. |
| HubSpot | Human CRM | Out | Core pushes stage and key facts via outbox; never reads business state back. |
| Communications | Email and SMS delivery | Out | Existing service or SES/Twilio behind one adapter interface. |
| Loan Officer Portal | Financing referrals | Out | Receives a financing_referral_requested event; nothing else crosses in v1. |
| Investor web | Investor responses | In | v1 is a private link page, no login. |
Runtime components
| Component | Role | Health |
| db | Postgres 16 | Compose healthcheck (pg_isready) |
| web | Django app server | /healthz |
| worker | Background sends and jobs | No HTTP endpoint; healthcheck disabled in Compose |