Prototype → product

For Nick. The system behind the conversation.

One campaign, versioned approvals, and a reply-driven state machine. This prototype runs entirely in your browser.

01 · Read the prediction engine

Receive listing ID, candidate IDs, evidence, confidence and timestamps. Keep property fit separate from current buying intent.

02 · Resolve the route

Group candidates by professional contact. Verify relationship, contact permission and sender authorization. Deduplicate at contact level.

03 · Gate every send

Approve the exact plan and brief versions. A server must recheck approvals, suppression and sender scope immediately before an idempotent send.

04 · Listen, then propose

Ingest signed mail webhooks. Classify intent with evidence. Uncertain replies, price negotiations and scheduling go to a human.

05 · Keep the ledger

Store the received message, proposed action, approver, content version and provider result. Queue jobs must be cancellable after an opt-out.

06 · Learn from verified outcomes

Separate outreach events from property-fit labels. Review preferences; verify showings, offers and closings before using them as training outcomes.

Suggested records: campaign · candidate_evidence · contact_route · content_version · approval · message · reply · next_action · suppression · outcome_event.

Real integrations are intentionally absent: no RMDB writes, mail, calendars, prediction calls or model retraining. Fictional contacts and replies; property image and facts sourced from Carolwood’s listing, reviewed October 19, 2026. The published ask was $29,995,000. Confirm current facts before real outreach.