QI Console › My Files › EX-2024-0147
File 12 of 214
Every change audit-logged
Deadline dates adjusted — federal disaster relief (IRS Notice 2026-17). Dates below are the controlling adjusted deadlines.
My Files/EX-2024-0147
Delayed Belcher Family Trust
Identification · 45-Day ends Thu, Oct 15, 2026 · was Sep 16
Day 12 of 45 62 days left
Aug 2Oct 15 · was Sep 16
Exchange Period · 180-Day ends Fri, Jan 29, 2027
Day 12 of 180 168 days left
Aug 2Day 45Jan 29, 2027
Identity & AML
Exchanger identity Verified · Persona · 07/26/2026
OFAC / SDN screening Clear · rescreened 08/12
Counterparties screened 2 of 3 · Cascade Title pending
Blocked by screening — the $326,246.11 closing-funds wire cannot leave Proposed until Cascade Title clears as a payee. Screen payee ›
1031 Exchange Timeline Where this file sits in the 180-day exchange period Forward · delayed
Initial Setup Relinquished Sale Property sold & proceeds in escrow Closed Aug 2, 2026 Completed
During Exchange 45-Day Identification Identify replacement property Deadline Oct 15, 2026 · adjusted Completed Day 9
3 Acquisition 180-Day Exchange Complete the replacement purchase Deadline Jan 29, 2027 168 days to close
1 Sales — Relinquished Property Property sold · proceeds into qualified escrow Closed · funds received Waiting on exchanger 83% View sale details
ID Property Transfer Contract Price Exchange Funds to QI
REL-151
44 Sharmain St
Westhampton Beach, NY
08/02/2026 $6,500,000.00 $251,633.89
Required documents — relinquished leg · 5 of 6 on file
Exchange Agreement Signed 08/02 · exchanger + QI View
W-9 Tax ID Certification Signed 08/02 · exchanger View
Assignment of Relinquished Property Contract Countersigned 08/02 · Sandra Osman View
Notice of Assignment (Buyer) Delivered 08/02 · buyer’s escrow View
Purchase/Sale Agreement (Relinquished) Uploaded 07/28 · Matt Belcher View
Settlement Statement (Relinquished · HUD-1) Requested 08/06 — no response in 8 days Chase exchanger
2 Identified Replacement Properties Designation notice · 45-day rule compliance Designation notice submitted 08/11/2026 Satisfied on Day 9 of 45 100% View all
1 identified 0 intended Three-property rule
REP-10223
123 Alder Court
Bend, OR
Identified · 08/11/2026 In contract
Required documents — identification · 2 of 2 on file
Identification of Replacement Property Form Signed 08/11 · exchanger · countersigned Sandra Osman View
Designation notice — delivery receipt Delivered 08/11 · 4 days before the adjusted 45th day View
Identification Amendment Not required — none filed Amend identification
3 Purchases — Replacement Property Acquire & close · assignment, notice, wire Next step Waiting on you · 2 actions 40% View purchase details
ID Property Disbursement Proposal Status Amount
REP-10223
123 Alder Court
Bend, OR · closing est. 09/28/2026
Earnest money deposit Ready to Wire $25,000.00
Closing funds Proposed $326,246.11
Property transfer date is required on all properties. Add transfer date
Notice of Assignment (Seller) has not been sent — the seller must be notified in writing before closing (est. 09/28/2026). Send for e-sign
Acquisition outcomeIdentificationSubmitted · 08/11/20263 identified2 confirmed acquired
PositionIdentified propertyOutcomeAllocated amountConfirmed amount
1
1Synthetic identified property — Fixture A
Synthetic location — Fixture A
Confirmed acquired$410,000.00$402,500.00
2
2Synthetic identified property — Fixture B
Synthetic location — Fixture B
Confirmed acquired$265,000.00$265,000.00
3
3Synthetic identified property — Fixture C
Synthetic location — Fixture C
Not confirmed$150,000.00—

Scroll sideways for amounts

Allocated total
$825,000.00
Allocation per identified property; estimated value where none is recorded
Confirmed acquired total
$667,500.00
Difference
−$157,500.00 Below allocated
Confirmed acquired total − allocated total

Sample data. The properties and amounts shown are synthetic sample data, not actual customer records.

Figures are the amounts recorded on this exchange file and are not a determination of tax treatment.

This information is provided for informational purposes only and does not constitute legal, tax, or investment advice. Consult a qualified tax professional before making any decision.

Acquisition outcome — alternative states (design specimens, hidden in the demo shell)
Specimens are listed in precedence order and drawn as the real-tenant variant. Sample data. Every row and amount in these specimens is a synthetic fixture, not a customer record.
Loading. Skeleton reserves the table shape; the block is aria-busy and announces itself once. Outranks every state below.
Acquisition outcomeLoading
Loading acquisition outcome
Read failure (either record). Nothing is inferred: no rows, no totals, no zero, no submission claim. Try again is drawn as a disabled button because a specimen carries no action; in the product it is enabled and re-runs the same read. Outranks every state below.
Acquisition outcome
Positional mismatch. The outcome record holds entries, but a different number than the identification list. Mapping is unavailable: no entry is attributed to any property, each identified row keeps its label and allocated amount with an em dash for the outcome rather than a repeated badge, and the confirmed total and difference are withheld. The allocated total is still a recorded fact computed from the identification side alone. An outcome record that is not a list at all renders this same layout with the alert copy “The purchase outcome record could not be read as a list of entries.”
Acquisition outcomeIdentificationSubmitted · 08/11/20263 identifiedoutcomes unavailable
Per-property outcomes are unavailable. The purchase record holds 2 outcome entries for 3 identified properties, so outcomes cannot be matched to properties.
PositionIdentified propertyOutcomeAllocated amountConfirmed amount
1
1Synthetic identified property — Fixture A
Synthetic location — Fixture A
—$410,000.00—
2
2Synthetic identified property — Fixture B
Synthetic location — Fixture B
—$265,000.00—
3
3Synthetic identified property — Fixture C
Synthetic location — Fixture C
—$150,000.00—

Scroll sideways for amounts

Allocated total
$825,000.00
Allocation per identified property; estimated value where none is recorded
Confirmed acquired total
Unavailable
Difference
Unavailable
Confirmed acquired total − allocated total

Figures are the amounts recorded on this exchange file and are not a determination of tax treatment.

This information is provided for informational purposes only and does not constitute legal, tax, or investment advice. Consult a qualified tax professional before making any decision.

Positional mismatch, no identified properties. Entries exist but the identification list is empty. The alert carries both facts; no table, no totals, and neither empty-state sentence below is shown — this outranks the empty states.
Acquisition outcomeIdentificationSubmitted · 08/11/20260 identifiedoutcomes unavailable
Per-property outcomes are unavailable. The purchase record holds 2 outcome entries, but no identified properties are recorded.
Amount unavailable. One identified property’s selected monetary source is not a finite number. Outcomes still map by position, the affected row’s allocated amount is an em dash, and the allocated total and difference are withheld rather than manufactured from a zero. The alert copy names no side because the same state also covers a confirmed-side total that cannot be computed (an overflowing confirmed sum), where the allocated total is still shown.
Acquisition outcomeIdentificationSubmitted · 08/11/20263 identified2 confirmed acquiredamounts unavailable
Some amounts are unavailable. A recorded amount on this exchange file could not be read or totalled, so the affected total and the difference are not shown.
PositionIdentified propertyOutcomeAllocated amountConfirmed amount
1
1Synthetic identified property — Fixture A
Synthetic location — Fixture A
Confirmed acquired$410,000.00$402,500.00
2
2Synthetic identified property — Fixture B
Synthetic location — Fixture B
Confirmed acquired—$265,000.00
3
3Synthetic identified property — Fixture C
Synthetic location — Fixture C
Not confirmed$150,000.00—

Scroll sideways for amounts

Allocated total
Unavailable
Allocation per identified property; estimated value where none is recorded
Confirmed acquired total
$667,500.00
Difference
Unavailable
Confirmed acquired total − allocated total

Figures are the amounts recorded on this exchange file and are not a determination of tax treatment.

This information is provided for informational purposes only and does not constitute legal, tax, or investment advice. Consult a qualified tax professional before making any decision.

Empty identification, not yet submitted. The identification list is empty and the submission flag is false. Nothing to map: no table, no totals.
Acquisition outcomeIdentificationNot yet submitted0 identified
No identified properties are recorded. The identification has not been submitted.
Empty identification, submitted. The identification list is empty and the submission flag is true.
Acquisition outcomeIdentificationSubmitted · 08/11/20260 identified
The submitted identification lists no properties.
Zero confirmed outcomes. Properties are identified but no row is both acquired and confirmed with a finite positive amount. Every row reads Not confirmed; the confirmed total is a recorded $0.00; the difference is an em dash with the pill, never a signed figure — a signed difference appears only once at least one row is confirmed acquired.
Acquisition outcomeIdentificationSubmitted · 08/11/20263 identified0 confirmed acquired
PositionIdentified propertyOutcomeAllocated amountConfirmed amount
1
1Synthetic identified property — Fixture A
Synthetic location — Fixture A
Not confirmed$410,000.00—
2
2Synthetic identified property — Fixture B
Synthetic location — Fixture B
Not confirmed$265,000.00—
3
3Synthetic identified property — Fixture C
Synthetic location — Fixture C
Not confirmed$150,000.00—

Scroll sideways for amounts

Allocated total
$825,000.00
Allocation per identified property; estimated value where none is recorded
Confirmed acquired total
$0.00
Difference
— No confirmed outcome recorded
Confirmed acquired total − allocated total

Figures are the amounts recorded on this exchange file and are not a determination of tax treatment.

This information is provided for informational purposes only and does not constitute legal, tax, or investment advice. Consult a qualified tax professional before making any decision.

Real tenant, identification not yet submitted. Differs from the live block above in two ways: the head carries the card’s existing Not yet submitted pill, so a still-mutable draft list is never presented with a frozen list’s authority; and the footer carries no sample-data sentence, because the exchange belongs to a real tenant. Row 1 carries a deliberately long synthetic label. All rows and amounts in this specimen are synthetic fixtures, not customer records.
Acquisition outcomeIdentificationNot yet submitted3 identified2 confirmed acquired
PositionIdentified propertyOutcomeAllocated amountConfirmed amount
1
1Synthetic identified property — Fixture A with a deliberately long synthetic label to exercise clamping
Synthetic location — Fixture A
Confirmed acquired$410,000.00$402,500.00
2
2Synthetic identified property — Fixture B
Synthetic location — Fixture B
Confirmed acquired$265,000.00$265,000.00
3
3Synthetic identified property — Fixture C
Synthetic location — Fixture C
Not confirmed$150,000.00—

Scroll sideways for amounts

Allocated total
$825,000.00
Allocation per identified property; estimated value where none is recorded
Confirmed acquired total
$667,500.00
Difference
−$157,500.00 Below allocated
Confirmed acquired total − allocated total

Figures are the amounts recorded on this exchange file and are not a determination of tax treatment.

This information is provided for informational purposes only and does not constitute legal, tax, or investment advice. Consult a qualified tax professional before making any decision.

What this block is. A read-only projection of two records the exchanger's wizard already persists on this exchange: the current identification list (exchange scope, identificationProperties, submitted or still a draft — the head line states which) and the purchase-hub outcome array (acquisition scope, finalizationStates, one {acquired, finalAmount, confirmed} entry per position). It is rendered only when normalizeExchangeVariant(exchangeType) resolves to forward_delayed, on the server and on the client alike; reverse, improvement and simultaneous files do not show it. Nothing here writes, signs, uploads or moves funds, and the disbursement table, its amounts, View purchase details and every Funds control above are unchanged.

Submission state. The head reuses the card's existing vocabulary from HubStatusBadge, preceded by a visible Identification label, grouped with the badge as one non-breaking key/value unit in normal case so the qualifier never wraps away from the pill it explains (Designer D-1 and D-6, #3344): Submitted · date (the identification hub's recorded submission date, omitted when none is recorded) or the warning pill Not yet submitted. The block renders before submission — the QI sees the draft list with its draft state — and the two empty sentences are derived from the submission flag, never from the properties array. The date drawn here is the one this mockup's Identification card already states.

Row position for assistive technology. Below a 720px container the # column (and its visually hidden Position heading) is not rendered, so the folded position digit inside the property cell is exposed to assistive technology rather than hidden — the row announces as 1 Synthetic identified property… at every width (Designer M-5, #3344).

State precedence (each state excludes the ones below it): 1 · loading; 2 · read failure on either record (alert, no rows, no totals, no submission or empty claim); 3 · outcome record not a list, or a non-empty list whose length differs from the identification list, including the zero-properties case (alert; no table or totals when there are no properties); 4 · allocated amount unavailable (a selected monetary source is not a finite number); 5 · empty identification, not yet submitted; 6 · empty identification, submitted; 7 · no confirmed outcomes; 8 · live. Mismatch outranks empty so a non-empty outcome record is never hidden behind “no properties”; this ordering is safe only because both reads fail closed in the product (a read error throws and lands in state 2).

Outcome per row. Confirmed acquired only when the entry at the same position is an object with acquired === true, confirmed === true and a finalAmount that is a native finite number greater than zero. Any other entry — missing, null, default, unconfirmed, malformed, a numeric string, zero or negative — reads Not confirmed. The block never says “Not acquired”: an absent or default entry is the absence of a recorded outcome, not a recorded non-acquisition. This predicate is deliberately stricter than the exchanger's wizard (acquired && confirmed, no amount test) and the API's 95%-rule guard (Number(finalAmount) || 0, which coerces strings); the divergence is stated and tested in the brief rather than left for two views of one record to disagree silently.

Positional constraint. The outcome record carries no property key; the wizard pairs the two arrays by index (PurchaseFinalizationList.tsx, finalizationStates[index]). This block mirrors that pairing only when the stored value is an array (Array.isArray, as the API's own reader guards) of the same length as the identification list. An absent record, a null or undefined value (the wizard itself hydrates those as “nothing persisted”), or an empty array is the no-confirmed-outcomes state — nothing has been recorded. Any other non-array value is corrupt and is reported as an entry count of unknown, never zero; it, or a non-empty array of a different length, makes the mapping unavailable (specimens above): the identified rows keep their label and allocated amount, every Outcome cell is an em dash and no confirmed amount is shown, no excess entry is shown, the confirmed total and difference are withheld, and the allocated total stays only because it is computed from the identification side alone. When a mismatch and an unreadable amount occur together, the mismatch is the state shown and the allocated total is withheld as well. The row number is the position in the list and is the render key; the label follows the card's existing propertyAddress rule (the recorded address, else the derived reference, else “Identified property N”), rendered as text only; the derived reference is carried separately as an identity and is not the label. No durable finalization identity is introduced.

Input validation. Every monetary value is accepted only as a native finite JSON number; numeric strings are not coerced. Per row the allocated amount is allocationAmount when it is present (nullish fallback only), else estimatedFMV; if the selected source is present but not a finite number the row's allocated amount is unavailable and so are the allocated total and difference. Aggregates that overflow to a non-finite value are unavailable too. Unavailable is drawn as an em dash or the word Unavailable; a manufactured zero is never drawn.

Totals, labels and sign. The totals come from the shared reconcileFinalizedAllocations helper, called on the normalized values exactly as the wizard calls it: Allocated total is the helper's idHubTotal — the wizard labels the same figure ID Hub total — and is not the identified fair-market-value total the 95%-rule check divides by; this block renders no rule figure and no rule status. Confirmed acquired total is finalizedTotal (confirmed-acquired rows' finalAmount, 0 for every other row). Difference is the helper's delta, confirmed acquired total − allocated total, printed with a true minus sign, with the helper's status as a neutral pill labelled in plain arithmetic — Matches allocated within its $1 tolerance, otherwise Above allocated or Below allocated — never the statutory Balanced/Over/Under vocabulary of the allocation-floor gate (Compliance review, #3344). When no row is confirmed acquired the pill reads No confirmed outcome recorded and the difference is an em dash: the payload may still carry the arithmetic, but the surface shows a signed figure only once at least one row is confirmed acquired, so the totals band never states a shortfall the rows refuse to state. These are recorded arithmetic facts; the block never labels a result deferred, boot, compliant or otherwise a tax outcome.

Deliberate divergences from the wizard (do not “fix” them back): the Under/Over pill is neutral slate here where the wizard paints rose and amber, because a fiduciary read surface does not colour a recorded fact as good or bad; there is no “Over by” / “Under by” phrasing; money is two-decimal dollars with a true minus where the wizard renders whole dollars; the label is Allocated total where the wizard says ID Hub total; and the confirmed-row predicate is stricter, as stated above.

Disclosures. Three separate elements, in this order: the sample-data sentence (only when the exchange's owning organization is a demo tenant — organizations.is_demo_tenant resolved server-side by the existing resolveDemoTenancy(db, {exchangeId}) after the authorized exchange lookup, returned as demoTenant: boolean on the same read; a resolution error throws), the recorded-facts sentence, and the platform's tax-advice disclaimer rendered by ComplianceDisclaimer as its own role="note" paragraph — copied here verbatim as a drawing convenience only. The live block above is the demo-tenant variant; the specimens are the real-tenant variant. No exchange-level demo flag exists and none is invented.

Loading, failure and retry. A read error on either record is shown as a failure, never converted into an empty outcome, a $0.00 total or a submission claim. The failure state's Try again is a static specimen drawn disabled because a mockup control has nothing to run; the product control is the shared ErrorBanner retry, enabled, re-running the same read, and the implementation PR must capture it enabled. This drawing carries no build-status copy.

Narrow layout. Below 720px the position column folds into the property cell as a leading number, the property cell becomes sticky at the left edge (140px, three-line clamp, ellipsized subline), the Outcome column sits immediately after it so identity and outcome are both visible before any scrolling, the two amount columns scroll with their headings wrapped to two lines so the heading of whichever amount is in view stays legible beside the sticky cell, the scroller shows edge shadows only while there is overflow, and the three totals stack. The page never scrolls sideways. Column order is the same at every width: property, outcome, allocated, confirmed.

Token prerequisites. Two consumed tokens are marked [PROPOSED] in tokens.css: --ink-4 (icons, rules and disabled glyphs only, never body text) and --surface-sunk (skeleton bars, the slate pill). Both must be declared in index.css :root and .dark before the product slice uses them. Every other token is [APP].

Fixtures. The rows are labelled Synthetic identified property — Fixture A/B/C with a Synthetic location subline: no street number, city, state or postal shape, so nothing here can be read as a real or plausible address. They are independent of the legacy disbursement fixture above; in the product both render from the same exchange record. All rows and amounts in every specimen are synthetic fixtures, not customer records.
Required documents — replacement leg · 2 of 5 on file
Purchase Agreement (Replacement) Uploaded 08/09 · Matt Belcher View
Preliminary Title Report (Replacement) Uploaded 08/10 · Cascade Title View
Assignment of Replacement Property Contract Sent 08/12 · awaiting exchanger signature Send reminder
Notice of Assignment (Seller) Not sent — required before closing Send for e-sign
Settlement Statement (Replacement · HUD-1) Expected at closing · est. 09/28 Request from title
4 Close Exchange Disburse, close out, generate 8824 package Not yet eligible Blocked · replacement leg open 0%
Status Open · funds in escrow
Day of Exchange 12 of 180
Funds Disbursed $0.00
Available Funds $357,802.73
Eligibility criteria Funds fully disbursed Past Day 180 or all legs complete
Closing package · 0 of 5 · assembles once the replacement leg closes
Disbursement Authorization Four-eyes approval required · proposer ≠ approver Locked
Wire Transfer Confirmation Captured from the bank on execution Locked
Exchange Closing Statement (Relinquished) Auto-generated at close Preview draft
Exchange Transaction Report Auto-generated at close Preview draft
Form 8824 worksheet Prefilled for the exchanger’s preparer Preview draft
Status only — the close-exchange workflow ships in Phase 1.
Tab preview — Documents
Documents 10
Drop files anywhere in this panel — they are scanned, classified, filed to EX-2024-0147 and audit-logged automatically
Neela read this document Classified as Settlement Statement (Relinquished · HUD-1) — filed to REL-151
Belcher — Final Settlement Statement.pdf 2.4 MB · 3 pages · received 08/14 9:41 AM from Cascade Title
Encrypted to storage Text extracted Type classified Fields read Awaiting your review
Extracted fields — nothing is written to the file until you accept
Closing date 08/02/2026 HighEdit
Contract price $6,500,000.00 HighEdit
Net to QI $251,633.89 HighEdit
Selling expenses $389,412.55 HighEdit
Escrow file number CT-2026-44817 HighEdit
Buyer of record Sharmain Holdings LLC Low · verifyEdit
Accepting writes 6 fields to REL-151 and logs document.extracted + exchange.updated to the audit trail.
Document Type Uploaded E-Sign
Exchange · 3
W-9 — Belcher Family Trust W-9 08/02/2026
by Matt Belcher
Signed
Exchange Agreement Exchange Agreement 08/02/2026
by Tom Bottenberg
Awaiting countersign
Outbound Wire Instructions — Escrow Outbound Wire Instructions 08/05/2026
by Sandra Osman
—
REL-151 — 44 Sharmain Street · 4
Relinquished Property Contract Relinquished Property Contract 08/02/2026
by Tom Bottenberg
Signed
Assignment of Relinquished Property Contract Assignment of Relinquished Property Contract 08/03/2026
by Tom Bottenberg
Signed
Relinquished Title Commitment Relinquished Title Commitment 08/04/2026
by Sandra Osman
—
Wire and Sale Closing Instructions Wire and Sale Closing Instructions 08/01/2026
by Sandra Osman
Signed
REP-10223 — 123 Alder Court · 3
Invoice — Exchange fee Invoice 08/12/2026
by Sandra Osman
—
Disbursement Request — Earnest money Disbursement Request 08/12/2026
by Sandra Osman
Countersigned · Priya Raman
Closing Agent Instructions Closing Agent Instructions 08/13/2026
by Tom Bottenberg
—
Tab preview — E-Sign
Signature status 2 outstanding Oldest waiting 6 days
Exchange Agreement v2
Matt Belcher exchanger 08/02 · 2:14 PM
Sandra Osman QI countersign waiting 12 days
Identification of Replacement Property
Matt Belcher exchanger 08/11 · 9:06 AM
Sandra Osman QI countersign 08/11 · 11:40 AM
Assignment of Replacement Property Contract
Matt Belcher exchanger sent 08/12 · waiting 2 days
Sandra Osman QI countersign not yet due
Notice of Assignment (Seller)
Not yet sent required before closing
Tab preview — Funds
Escrow & disbursements Qualified escrow · segregated
Funds received$357,802.73
Committed$25,000.00 earnest
Available$332,802.73
Disbursed$0.00
Proposal Payee Proposed by Approved by Status Amount
Earnest money deposit Cascade Title
REP-10223
Sandra Osman
QI officer · 08/12 10:02 AM
Priya Raman
QI officer · 08/12 3:31 PM
Ready to Wire $25,000.00
Closing funds Cascade Title
REP-10223
Sandra Osman
QI officer · 08/14 8:55 AM
—
needs a second officer · approver ≠ proposer
Proposed $326,246.11
Closing funds cannot advance to approval — Cascade Title has not cleared counterparty screening. Screen payee
Four-eyes is enforced in the database: both sides are authorized officers of this organization, the approver can never be the proposer, and screening must clear before a proposal reaches Ready to Wire. A proposer’s own submission is never counted as an approval. No coordinator and no exchanger appears in a fund path — Propose disbursement is disabled for Tom Bottenberg because a coordinator is not an authorized officer.
Tab preview — Tasks & workflows
Tasks & workflows 3 open 2 scheduled
Run on this exchange — each action is a Vectr workflow template; run now, or schedule and repeat
Send reminderexchange.reminder.send
Request documentdocument.request
Send for e-signatureesign.envelope.send
Re-screen partiesaml.ofac.rescreen
Schedule check-inexchange.checkin.schedule
Escalate deadlinedeadline.escalate
Order title updatetitle.update.order
Send status updateexchange.status.notify
Scheduled & running on this file
Workflow Trigger Next / last run State
Settlement statement chase
document.request · 3-day cadence
Every 3 days
until received
Next Aug 15
3rd attempt
Scheduled
Assignment signature reminder
esign.reminder · escalates to coordinator at day 5
Every 2 days
while unsigned
Ran Aug 14
delivered
Awaiting signer
Counterparty screening — Cascade Title
aml.ofac.rescreen
Manual
run by Sandra Osman
Started 9:12 AM Running
45-day approach warning
deadline.watch · fires at T-10, T-3, T-1
Deadline-anchored
45th day Oct 15
Next Oct 5 Armed
Welcome & onboarding sequence
exchange.onboarding
On exchange open Aug 1 Completed
Manual tasks — every task opens the file at the section it concerns
Task Opens Assignee Due Status
Send Notice of Assignment to seller
Required before the 09/28 closing
Purchases → E-Sign Tom Bottenberg Aug 16 Overdue
Chase settlement statement from exchanger
Requested 08/06 — no response in 8 days
Sales → Documents Tom Bottenberg Aug 18 Open
Screen Cascade Title as payee
Blocks the $326,246.11 closing wire
Identity & AML → KYC review Sandra Osman Aug 15 Open
Confirm basis worksheet with exchanger’s CPA
Completed 08/09
— Tom Bottenberg Aug 9 Done
Tab preview — Team
Team & parties
Person Role Identity Screening Portal access
Matt Belcher Exchanger
Belcher Family Trust
Verified · 07/26 Clear · 08/12 Active
Tom Bottenberg Exchange Coordinator
coordinator · not an authorized officer
Staff — Internal
Sandra Osman QI Officer
authorized signer · countersign, propose, approve
Staff · MFA — Internal
Priya Raman QI Officer
second approver · never on both sides
Staff · MFA — Internal
Cascade Title Closing agent
replacement leg · payee
Entity Pending No access
Tab preview — Communications
Communications 12
All 12 Portal 5 Email 4 SMS 1 Calls 2 Internal 3
Portal Email SMS Internal note To: Matt Belcher · exchanger
Write to the exchanger, or start from a template…
Document chase 45-day approaching Signature request Browse all 14
Tom Bottenberg Internal note Aug 14 · 9:44 AM
Settlement statement still outstanding. Called title — they are re-issuing with the corrected buyer entity. Leave the next-action task open until the basis worksheet is confirmed with the CPA.
Tom Bottenberg Portal · also emailed Template: Signature request Aug 12 · 4:18 PM
Assignment of Replacement Property Contract is in your portal for signature. Once signed we can issue the notice to the seller ahead of the September 28 closing.
Assignment of Replacement Contract.pdf
Delivered 4:18 PM · read 4:31 PM Not yet signed — reminder workflow armed
Tom Bottenberg Call log · 6 min Aug 12 · 11:05 AM
Called Cascade Title re: the corrected buyer entity on the settlement statement. They are re-issuing — expect it this week. Also confirmed their W-9 is on file for screening.
Matt Belcher From exchanger portal Aug 11 · 9:12 AM
Identification submitted — we are going with the Alder Court property only. Holding the other two in reserve in case the inspection turns up anything.
Sandra Osman Internal note Aug 6 · 11:02 AM
OFAC rescreen clean on all named parties. Cascade Title still needs to be run as a payee before any wire is approved.
Tab preview — Audit
Audit log Immutable · append-only
08/14 09:41:22 document.uploaded Belcher — Final Settlement Statement.pdf received from Cascade Title system
08/14 08:55:07 disbursement.proposed Closing funds · $326,246.11 · payee Cascade Title Sandra Osman
08/12 15:31:44 disbursement.approved Earnest money deposit · $25,000.00 · approver ≠ proposer satisfied Priya Raman
08/12 09:20:11 screening.completed OFAC/SDN rescreen — 3 subjects clear, 1 pending (Cascade Title) system
08/11 11:40:03 signature.countersigned Identification of Replacement Property Sandra Osman
08/11 09:06:55 signature.completed Identification of Replacement Property — signed in exchanger portal Matt Belcher
08/09 14:02:39 deadline.override_approved 45th day Sep 16 → Oct 15 · federal disaster relief · IRS Notice 2026-17 Sandra Osman
Variant — reverse file clock bar
My Files/EX-2024-0152
Reverse Hollis Ridge Holdings LLC
QEAA Execution clocks anchor at EAT acquisition · Wed, Aug 12, 2026
Day 2 of 5 business days QEAA due Wed, Aug 19
Aug 12 · EAT acquisitionAug 19 · 5th business day
On a reverse file the 45/180 bars are replaced by this QEAA execution clock until the QEAA is signed — the 45-day and 180-day clocks then run from the EAT’s parked acquisition date.
Mockup notes — Exchange Workspace
↞ The left summary rail replaces the legacy left rail: same fields coordinators scan today (deadlines, personnel, funds, next action), always in view, glanceable without scrolling.
Dual statutory clocks (45-day identification, 180-day exchange period) are pinned above every tab — the two numbers a coordinator checks first are never more than a glance away. The Day-45 tick is drawn inside the 180-day track.
The amber “Adjusted” pill + relief banner mirror the legacy disaster-relief behavior; dates shown are the controlling adjusted deadlines.
The Exchanger-portal block shows the file’s self-serve side — coordinator-managed file and exchanger transparency coexist (neither legacy system offers any exchanger visibility). When the exchanger has not been invited yet, the block swaps to an “Invite exchanger” primary-outline button with a “Not yet invited” status line.
Overview and Documents are rendered as stacked tab previews here; Funds, Tasks, Team, Communications, E-Sign, and Audit follow the same card language. Every change on this page writes to the immutable audit log (chip in top bar).
All names, addresses, and amounts are synthetic demo data.
Build contract — exchanger parity on the stage cards
Why. The shipped Overview renders each stage from the exchanger’s wizard flag (hubStatus.submitted) as a binary “Not yet submitted”. That is the exchanger’s progress through their forms, not the coordinator’s progress on the file — so a closed sale sitting on $356,909 of received escrow still reads “Not yet submitted”. These four cards take the consumer dashboard’s legibility (DashboardHubCard, DocumentChecklist) and re-verb it for a QI.

1 · Completion meter, not a binary pill. Per-stage % + bar in the card header, matching hub-progress on the exchanger dashboard. Denominator is the stage’s required-document set from config/hubDocuments.ts; numerator is what is actually on file.
2 · Status from evidence, never from one flag. The stage headline is derived from settlement dates, escrow receipts, signature state, and identified-property counts — not from whether the exchanger pressed Submit. Card 1 here is “Closed · funds received / 83%” with one document outstanding; the exchanger’s hub submission is one input among several, and on its own is never the headline.
3 · Waiting-on attribution. Every stage says whose move it is — Waiting on you, Waiting on exchanger, Satisfied, or Blocked. Neither interface has this today; at ~200 files per coordinator it is the highest-value line on the page. Red = ours, amber = theirs.
4 · One “Next step” flag. Exactly one stage carries it, mirroring isNextStepHub(). Never zero, never two.
5 · Per-stage document checklist. DocumentChecklist ported with QI verbs — Chase exchanger · Send for e-sign · Send reminder · Request from title · Countersign · View, never the exchanger’s Upload/Sign. Auto-generated closing documents show a spark icon and Preview draft. Rows carry attribution and a date; “Requested 08/06 — no response in 8 days” is the coordinator-grade version of a missing document.
6a · Identity & AML clearance strip — first element on the tab. KYC is always the first gate, so the coordinator who owns the decision must see its state before anything else, not discover it by having an action rejected. Today the workspace surfaces KYC only as failure text after the fact — “KYC gate not cleared” from the upload dialog, and screening_gate_blocked / wire_recipient_not_cleared in FundsTab. Three cells: exchanger identity (source + date), OFAC/SDN screening (with last-rescreen date, because screening staleness is its own risk), and counterparties screened. When anything is unclear the strip turns amber and states what it blocks, in money — “the $326,246.11 closing-funds wire cannot leave Proposed until Cascade Title clears as a payee” — so the gate is legible before the coordinator walks into it. Never render a green strip on unscreened parties, and never let this strip offer a way to bypass or self-clear a gate.
API gap: QiExchangeParticipant carries only id/userId/role/name/email — the single-exchange endpoint returns no KYC or screening state at all. This strip needs profiles.kyc_status (none | pending_review | verified | rejected), is_identity_verified, and per-counterparty screening results added to GET /orgs/:id/qi/exchanges/:exchangeId. Backend slice, blocks the UI.
6b · Statutory phase timeline. buildTimelinePhases() is already exported from the exchanger dashboard and is variant-aware — forward renders 3 phases, reverse and improvement render 4 (QEAA 5-business-day → Parked → Construction → Close), simultaneous renders its own. Reuse it; do not fork a QI-specific copy, or the two interfaces will drift on the same statutory facts. The timeline answers “where is this file in its arc”; the stage cards below answer “what do I do about it”. Phase colours match the stage-card step discs so the eye connects phase 3 to card 3. The connector spans disc-centre to disc-centre (.tl-node::before, left:-50%/right:50%) so 3- and 4-phase variants both render correctly with no hard-coded percentage.
6 · Distinct destinations. View sale details, View all, and View purchase details each resolve to their own leg view. In the shipped page all three call onNavigateTab('documents') — three promises, one destination.

Correctness rules this mockup encodes. (a) An overdue clock never satisfies an eligibility criterion — “Past Day 180 or all legs complete” renders unmet ✗ while the file is open, and a blown deadline renders red, never as a green tick. (b) Zero identified properties past the 45th day is a red alarm on card 2, not a neutral rule pill. (c) A null balance snapshot renders as “Balance snapshot · not yet taken”, never as the string concatenation “snapshot updated not yet snapshotted”. (d) No stage headline may contradict the evidence printed beneath it.
Build contract — token contract and both themes
1 · No colour literal survives to the implementation. Every colour on this page resolves through docs/mockups/tokens.css, which carries the same names the app ships in packages/web-app/src/index.css. Tokens marked [APP] already exist — copy them, do not drift. Tokens marked [PROPOSED] must be added to index.css :root and .dark before this surface is coded; inlining the hex at the call site is a Code Quality rejection.
2 · Light and dark are both designed, not derived. The theme resolves three ways: no attribute follows the OS, [data-theme="light"] and [data-theme="dark"] force a choice. Every new component ships all three states or it is not done.
3 · A filled control never hardcodes its label colour. Text on a filled accent surface is --admin-on; on a filled status surface it is --good-on / --bad-on; on a filled hub disc it is --surface. These flip with the theme because the fill lightens in dark — white on the dark-theme indigo is 2.9:1 and white on the dark-theme green is 1.5:1. The primary button, the composer channel segment and the timeline discs here all take the flipping foreground.
4 · Muted text is --ink-3, never --ink-4. --ink-4 is 3.0:1 on white and is reserved for icons, rules, tick marks, disabled glyphs and the em-dash placeholder. This pass moved every muted label — table headers, axis labels, timestamps, the “· was Sep 16” superseded-date meta, the composer placeholder — up to --ink-3. That is a legibility fix, not a restyle: the page is read by coordinators clearing ~200 files, and by exchangers aged 40–80 on the mirrored consumer surfaces.
5 · Colour carries one meaning each. Hub hues (--hub-sales, --hub-id, --hub-purchase, teal for close-out) are wayfinding — which leg of the exchange — and never say whether that leg is healthy. Status stays on good / warn / bad, always paired with a label and an icon, never colour alone. Identity gradients (--ident-*) are their own axis so an avatar can never read as a status.
6 · Compliance facts the theming must not soften. An overdue clock never renders as a satisfied or green state — Past Day 180 or all legs complete stays an unmet ✗ while the file is open. Statutory dates are never “extended” by a user: the adjusted 45th day here carries the Adjusted pill, the relief banner, the legal basis, and a deadline.override_approved audit row naming the QI officer who approved it. Four-eyes is stated on the disbursement table and the closing wire stays Proposed until the payee clears screening. Both proposed_by and approved_by must resolve to authorized officers of this organization, and the approver is never the proposer — a proposer’s own submission is not an approval and is never rendered or counted as one. A coordinator is not an authorized officer, so Tom Bottenberg can never appear in either column and Propose disbursement renders disabled for him with the reason stated; the exchanger never appears in a fund path at all, because exchanger participation in fund authorization is constructive receipt under Treas. Reg. §1.1031(k)-1(g)(6). The same roster is stated identically on qi-escrow-and-banking.html; the two surfaces must not drift. No affordance on this page signs on another party’s behalf, clears a KYC gate on the exchanger’s behalf, or moves funds.
7 · Motion conveys state only. Transitions run at --duration-instant on the standard easing and animate colour, border and elevation — never layout. Every interactive component carries hover, :focus-visible (the ring is global in tokens.css), active and, where it exists, disabled. prefers-reduced-motion is honoured.
8 · This surface no longer loads anything from the network. The Tailwind CDN tag it previously carried has been replaced by the five base rules it actually depended on, so the mockup renders identically offline and the token sheet is the only stylesheet.
Light and dark are both designed here. All names, addresses and amounts are synthetic demo data.