matt.belcher@gmail.com · (310) 555-0142
tom@open1031.ai · (800) 555-1031
closings@firstcoasttitle.com · (323) 555-7800
s.rivera@riveratax.com · (310) 555-4422
Not yet invited
Not yet invited
d.huang@oceansiderealty.com
Not yet invited — optional
Access is tenant-isolated by Supabase RLS. Parties can only read data explicitly scoped to their role and this exchange. Cross-tenant reads are impossible by design.
Automated invite lifecycle
Every invite you send goes through a durable workflow: send → 3-day reminder → 7-day expiry. Once accepted, the party gets a role-scoped welcome email and portal access. I track every step so nothing falls through the cracks.
James hasn't been invited yet
Send an invite and the full lifecycle (send → 3-day reminder → expiry → accepted → welcome) runs automatically via participant-invite-notify
Branded email dispatched. Portal pending. 7-day expiry timer starts.
Auto-nudge: "Your invite expires in 4 days." Soft tone.
Final reminder: "Last chance — invite expires tomorrow."
Link invalidated after day 7. Status flips to Expired. Exchanger can resend.
Role-scoped portal created. Welcome email + onboarding tour. Audit log entry.
Gaps cost exchanges
Every time a party isn't notified at the right moment, they create friction at closing. Red badges below are live gaps in the current notification system.
Exchanger onboarded
Exchanger — automated onboarding emailQI Officer assigned
QI Officer — auto-assigned, dashboard access grantedTitle company connected to Escrow Hub
Title / Escrow — invited when Escrow Hub openedSeller notified of escrow funding
Seller — email notification at escrow fundingBuyer of relinquished property
Buyer — no notification at any pointExchanger identifies replacement properties
Exchanger — no day 30 / 40 / 44 deadline reminder is sentCPA not notified during ID period
CPA — not notified when ID window opens or closesAttorney not involved in ID period
Attorney — no invitation or notification trigger during ID periodAttorney invited for document review
Attorney — invited when Purchase Hub openedLender invited for purchase financing
Lender — invited when Purchase Hub openedLender — no 180-day urgency alert
Lender — no alert when 180-day clock below 30 daysCPA invited to review Form 8824
CPA — invited when IRS Hub opened; 8824 + exchange summary sharedCPA invited too late
CPA — should have read access from day 1 of ID windowAttorney — no IRS filing notification
Attorney — no notification at IRS filing or completionExchanger confirms disbursement
All parties — exchange-complete notificationNo post-close summary to CPA or Lender
CPA + Lender — no post-close package or referral touchpointMultiple exchangers are fully supported
An exchange can have more than one exchanger — an individual, married couple, TIC members, an LLC, trust, or partnership. The "same taxpayer" rule requires the entity that sells the relinquished property to be the same one that acquires the replacement. I'll track that for you.
Individual · SSN ···-··-6789 · KYC verified
j.belcher@gmail.com · Invite sent Jun 1
Same-Taxpayer Rule — IRS §1031(a)
The entity that sells the relinquished property must be the same entity that acquires the replacement. Both Matt and Jennifer must appear on both deeds. Open1031 tracks this automatically.
--hub-id, --hub-sales, --hub-escrow,
--hub-purchase, --hub-disbursement, --hub-irs,
--hub-reverse) says which leg of the exchange a party belongs to.
Status is a separate scale (--good / --warn / --bad)
and always ships with a label and an icon, so nothing on this surface is legible by colour
alone.auth.uid() and exchange membership. If a role's row says "no financial
account numbers", the query for that role must be unable to return them. A copy-only promise
is a compliance defect.participant-invite-notify workflow step — the lifecycle shown here is the
workflow's real state machine, not a UI animation.tokens.css; text on any filled control uses that
control's -on token (--hub-on, --admin-on) because
white fails AA on the dark-theme fills. --ink-4 is icons, rules and disabled
glyphs only — never body text.