FIGURE 12

Post-Acceptance Lifecycle State Machine

OFFRPORTL — Counter Offer · Amendment · Termination · Reinstatement Workflows
Abstract
A computer-implemented system and method for managing the complete post-acceptance lifecycle of a real estate transaction offer record. Following offer acceptance, the system supports four concurrent and sequential workflows: (1) counter offer negotiation with withdrawal capability and tri-source engagement tracking; (2) structured amendment proposals with an append-only amendments array and per-amendment-index view history isolation; (3) contract termination with PDF storage and timestamping; and (4) reinstatement proposals enabling either party to revive a terminated contract. All workflows share a unified engagement tracking architecture — document-isolated view history arrays, email delivery logging, and tracking pixel correlation — producing a litigation-grade audit trail across the full post-acceptance transaction lifecycle.
§1 — Post-Acceptance Master State Machine
ACCEPTED
status = accepted Binding contract uploaded All parties notified
COUNTERED
status = countered Counter PDF uploaded Buyer agent notified
AMENDMENT PENDING
Amendment proposed Pending accept/reject All parties notified
REINSTATEMENT PENDING
Reinstatement proposed Pending accept/reject All parties notified
TERMINATED
status = terminated Termination PDF stored Reinstatement available
SOLD
status = sold Full audit archived Transaction complete
From StateEvent / TriggerTo StateActorKey Data Written
AcceptedAgent sends counter offerCounteredListing Agent / Buyer's Agentcounter_pdf_url, counter_submitted_at, status
CounteredReceiving party accepts counterAcceptedListing Agent / Buyer's Agentaccepted_at, binding_contract_url, status
CounteredCounter withdrawnAcceptedInitiating Agentcounter_withdrawn, counter_withdrawal_pdf_url, counter_withdrawn_at
AcceptedAmendment proposedAmendment PendingEither Agentamendments[ ] append: proposed_by, proposed_at, pdf_urls, status=pending
Amendment PendingAmendment acceptedAcceptedOpposing Agentamendments[i].status=accepted, amendments[i].accepted_at, response_pdf_urls
Amendment PendingAmendment rejectedAcceptedOpposing Agentamendments[i].status=rejected
AcceptedContract terminatedTerminatedEither Agenttermination_pdf_url, termination_reason, terminated_at, status
TerminatedReinstatement proposedReinstatement PendingEither Agentreinstatement_proposed_by, reinstatement_pdf_url, reinstatement_proposed_at, reinstatement_status=pending
Reinstatement PendingReinstatement acceptedAcceptedOpposing Agentreinstatement_status=accepted, reinstatement_accepted_at, reinstatement_accepted_pdf_url
Reinstatement PendingReinstatement rejectedTerminatedOpposing Agentreinstatement_status=rejected
AcceptedClosing completedSoldSystem / Agentstatus=sold, full audit archived
§2 — Detailed Workflow Steps Per Event Type
Counter Offer Workflow (6 Steps)
1
Agent Initiates Counter
Listing agent or buyer's agent selects "Send Counter Offer" from offer detail. Counter terms entered: price, closing costs, closing date, earnest money, custom notes.
2
Counter PDF Uploaded
Counter offer PDF uploaded to file storage. counter_pdf_url stored on Offer entity. counter_submitted_at timestamp recorded server-side.
3
Status → Countered
Offer status field updated to countered. Previous status archived in audit trail. Counter terms persisted on Offer entity fields.
4
Notifications Dispatched
Email sent via Resend API to buyer agent + buyer. In-app bell notification with unread badge. counter_notification_acknowledged_by array tracks who has acknowledged.
5
Tri-Source Tracking
counter_offer_viewed_by array populated on email open (pixel) and portal view. Engagement correlation engine synthesizes delivery log + pixel + portal view per party.
6
Counter Decision
Receiving party accepts (status → accepted), rejects (status → rejected), or counter-counters (new counter initiated). Counter withdrawal available: counter_withdrawn = true, counter_withdrawal_pdf_url stored.
Amendment Workflow (6 Steps)
1
Either Party Proposes Amendment
Listing agent or buyer's agent proposes amendment from accepted offer view. Amendment description entered. One or more amendment PDFs uploaded (pdf_urls array).
2
Amendment Record Created
New object appended to amendments array on Offer entity. Fields: proposed_by (role), proposed_at (timestamp), description, pdf_urls, status = pending.
3
Notifications Dispatched
sendAmendmentNotifications dispatched to all parties. Email includes amendment description, PDF link, and direct portal link. amendment_viewed_by[amendment_index] tracking initiated.
4
Opposing Party Reviews
Receiving party accesses portal. amendment_viewed_by array updated with viewer_email, viewer_role, viewed_at, source (portal or email). Engagement gap detection active.
5
Accept or Reject Decision
Receiving party accepts or rejects amendment. amendments[index].status updated to accepted or rejected. amendments[index].accepted_at timestamp recorded. Response PDFs optionally uploaded.
6
Acceptance Notifications
sendAmendmentAcceptedNotifications dispatched to all parties. Amendment acceptance logged in email_delivery_log. Amendment history permanently preserved on Offer entity.
Termination & Reinstatement Workflow (6 Steps)
1
Contract Terminated
Either party initiates termination. Termination PDF uploaded (termination_pdf_url). termination_reason recorded. terminated_at timestamp set. Status → terminated.
2
Reinstatement Proposed
Either party may propose reinstatement. reinstatement_proposed_by (role) set. reinstatement_pdf_url uploaded. reinstatement_notes recorded. reinstatement_proposed_at timestamped. reinstatement_status = pending.
3
Notifications Dispatched
sendReinstatementNotifications dispatched. reinstatement_viewed_by array tracking initiated. Engagement correlation active for reinstatement document. View reminders scheduled.
4
Opposing Party Reviews
Receiving party accesses reinstatement proposal via portal or email link. reinstatement_viewed_by array updated (viewer_email, viewer_role, viewed_at, source). ViewReminder auto-resolves on confirmed view.
5
Accept or Reject Decision
Receiving party accepts or rejects reinstatement. reinstatement_status updated to accepted or rejected. reinstatement_accepted_at timestamp recorded. reinstatement_accepted_pdf_url stored on acceptance.
6
Outcome: Reinstated or Closed
On acceptance: status reverts toward active transaction. sendReinstatementAcceptedNotifications dispatched. On rejection: offer remains terminated. Full audit trail preserved.
§3 — Data Model — Post-Acceptance Offer Entity Fields
ScopeFieldTypeDescription
Counter Offercounter_pricenumberCounter offer purchase price.
Counter Offercounter_closing_datedateProposed closing date in counter.
Counter Offercounter_pdf_urlstringURL to uploaded counter offer PDF.
Counter Offercounter_submitted_atdatetimeServer-side timestamp of counter submission.
Counter Offercounter_expires_atdatetimeExpiration timestamp of counter offer.
Counter Offercounter_withdrawnbooleanTrue if counter offer was withdrawn before response.
Counter Offercounter_offer_viewed_byarrayDocument-isolated view history for counter offer (viewer_email, viewer_role, viewed_at, source).
Amendmentamendments[ ]arrayArray of amendment objects: proposed_by, proposed_at, description, pdf_urls, status, accepted_at, response_pdf_urls.
Amendmentamendment_viewed_by[ ]arrayPer-amendment view history keyed by amendment_index. Isolates each amendment's engagement independently.
Terminationtermination_pdf_urlstringURL to uploaded termination document.
Terminationtermination_reasonstringFree-text termination reason.
Terminationterminated_atdatetimeServer-side termination timestamp.
Reinstatementreinstatement_proposed_byenumRole of proposing party: listing_agent or buyer_agent.
Reinstatementreinstatement_pdf_urlstringURL to reinstatement proposal document.
Reinstatementreinstatement_statusenumCurrent reinstatement state: pending, accepted, or rejected.
Reinstatementreinstatement_accepted_atdatetimeTimestamp of reinstatement acceptance.
Reinstatementreinstatement_viewed_byarrayDocument-isolated view history for reinstatement proposal.
§4 — Shared Engagement Tracking Architecture (All Post-Acceptance Events)
Document Isolation
Each post-acceptance event type has its own dedicated viewed_by array on the Offer entity. counter_offer_viewed_by, amendment_viewed_by (keyed by amendment_index), and reinstatement_viewed_by are fully isolated. View events never cross-contaminate between document types.
Tri-Source Correlation
For every document event, three independent sources are correlated per party: (1) email_delivery_log confirms transmission, (2) tracking pixel (trackEmailView function) confirms email open, (3) authenticated portal view confirms document access. Source field on every view event enables synthesis.
ViewReminder Integration
Every post-acceptance document event (counter sent, amendment proposed, reinstatement proposed) creates a ViewReminder entity record. The sendViewReminders scheduled automation polls every 30 minutes, detecting engagement gaps and dispatching escalating reminders at 12h, 24h, and 72h intervals.
§5 — Key Patentable Claims Summary
Claim 1.A method for managing a counter offer lifecycle on an accepted real estate transaction record comprising: uploading a counter offer PDF, recording a counter_submitted_at timestamp, transitioning offer status to countered, dispatching multi-party notifications with engagement tracking, and enabling counter withdrawal by setting counter_withdrawn = true with a withdrawal PDF stored on the entity.
Claim 2.A method for managing contract amendments on an accepted real estate transaction by appending amendment objects to a persistent amendments array on the Offer entity, each object recording proposed_by role, proposed_at timestamp, pdf_urls array, and status field, with per-amendment view history isolated by amendment_index in a parallel amendment_viewed_by array.
Claim 3.A method for managing contract termination and reinstatement comprising: transitioning offer status to terminated with a termination PDF and timestamp, enabling either party to propose reinstatement by populating reinstatement_proposed_by, reinstatement_pdf_url, and reinstatement_status fields, and resolving reinstatement via reinstatement_status = accepted or rejected with a timestamped reinstatement_accepted_at record.
Claim 4.The system of claims 1–3, wherein each post-acceptance document event (counter offer, amendment, termination, reinstatement) initiates an independent document-isolated view history array on the Offer entity, and each view event carries a source field (portal or email) enabling tri-source engagement correlation with the email_delivery_log for litigation-grade audit.
Fig. 12 — Post-Acceptance Lifecycle State Machine. Following offer acceptance, the system manages four concurrent workflows: counter offer negotiation (with counter withdrawal), structured amendment proposals (with per-amendment-index view isolation), contract termination, and reinstatement. All state transitions are timestamped and persisted on the Offer entity. A shared document-isolated engagement tracking architecture applies tri-source correlation (email delivery, pixel, portal view) and automated escalating ViewReminder workflows to every post-acceptance document event.