FIGURE 13

Engagement Tracking & ViewReminder Escalation Engine

OFFRPORTL โ€” Tri-Source Document Engagement Correlation with Automated Escalating Reminder Workflow
Abstract
A computer-implemented engagement tracking and automated reminder system for real estate offer document workflows. On each document event (offer submission, counter offer, amendment proposal, reinstatement proposal), the system creates a ViewReminder entity record and initiates tri-source engagement correlation: (1) email delivery confirmation via the email_delivery_log; (2) tracking pixel confirmation via the trackEmailView function on email open; and (3) authenticated portal view confirmation recorded directly to the Offer entity's document-isolated viewed_by array. A scheduled automation polls unresolved ViewReminder records every 30 minutes and, upon confirmed non-engagement, dispatches escalating reminders at T+12h, T+24h, and T+72h intervals. Resolution is automatically recorded when any confirmed engagement signal is detected, preserving a complete chronological audit trail of document awareness across all parties.
ยง1 โ€” Tri-Source Engagement Correlation Architecture
๐Ÿ“ง
Source 1
Email Delivery Log
Trigger
On email dispatch via Resend API
Data Captured
event_type, sent_at, recipient email, role, success boolean, error string
Written To
email_delivery_log[ ]
๐Ÿ‘
Source 2
Tracking Pixel (Email Open)
Trigger
On 1ร—1 pixel load in email client
Data Captured
viewer_email (from query param), viewer_role, viewed_at (server timestamp), source="email"
Written To
viewed_by[ ] source="email"
๐Ÿ”
Source 3
Authenticated Portal View
Trigger
On authenticated offer detail page load
Data Captured
viewer_email (from session), viewer_role (derived), viewed_at (server timestamp), source="portal"
Written To
viewed_by[ ] source="portal"
All three sources are correlated per party per document event. Sources 2 and 3 independently confirm engagement. Source 1 confirms delivery only. Engagement = Source 2 OR Source 3 confirmed.
ยง2 โ€” Document Events That Initiate Engagement Tracking
Document Eventviewed_by Array WrittenDelivery Log Event TypeTracked RolesPixel
Offer Submittedviewed_byoffer_submittedListing Agent, Sellerโœ”
Counter Offer Sentcounter_offer_viewed_bycounter_sentBuyer Agent, Buyerโœ”
Amendment Proposedamendment_viewed_by[i]amendment_proposedOpposing Agentโœ”
Reinstatement Proposedreinstatement_viewed_byreinstatement_proposedOpposing Agentโœ”
Offer Acceptedviewed_byoffer_acceptedAll Partiesโœ”
Offer Rejectedviewed_byoffer_rejectedBuyer Agent, Buyerโœ”
Contract Terminatedviewed_bytermination_sentAll Partiesโœ”
ยง3 โ€” Correlation Engine Logic (7 Steps, Per ViewReminder Record, Per Poll Cycle)
1
Poll Trigger
sendViewReminders scheduled automation fires every 30 minutes. Queries all ViewReminder records where resolved = false.
2
Fetch Offer Record
For each unresolved reminder, fetch the associated Offer entity. Extract the correct viewed_by array based on document_type field (viewed_by, counter_offer_viewed_by, amendment_viewed_by[amendment_index], reinstatement_viewed_by).
3
Email Delivery Check
Scan email_delivery_log on Offer for entries matching event_type to document_type and recipient email matching party_email. Confirms email was dispatched successfully (success = true).
4
Pixel Engagement Check
Scan document-specific viewed_by array for entries where viewer_email = party_email AND source = "email". Presence of matching entry confirms email was opened (pixel fired).
5
Portal Engagement Check
Scan document-specific viewed_by array for entries where viewer_email = party_email AND source = "portal". Presence of matching entry confirms authenticated portal access.
6
Resolution Decision
If Source 2 OR Source 3 confirms engagement โ†’ set resolved = true, resolved_at = now. If only Source 1 confirmed (delivered but not viewed) โ†’ evaluate reminder escalation window and dispatch if threshold reached.
7
Reminder Dispatch
If not resolved and time threshold crossed: send reminder email via Resend API, update reminder_count, first_reminder_sent_at (if first), and last_reminder_sent_at. Increment reminder_count.
ยง4 โ€” ViewReminder Escalation Timeline
T + 0
Document Event Created
ViewReminder entity created with party_email, party_role, offer_id, document_type, document_triggered_at. resolved = false.
System โ€” on document event
T + 30 min
Scheduler Poll Cycle
sendViewReminders automation fires. Queries unresolved ViewReminder records. Checks all three engagement sources per party. If any source confirms view โ†’ resolved = true, resolved_at recorded.
Scheduled Automation (every 30 min)
T + 12 hours
First Reminder Dispatched
If reminder_count = 0 and not resolved: first reminder email sent to party. first_reminder_sent_at recorded. last_reminder_sent_at updated. reminder_count incremented to 1.
sendViewReminders function
T + 24 hours
Second Reminder Dispatched
If reminder_count = 1 and not resolved: second reminder sent with escalated urgency messaging. last_reminder_sent_at updated. reminder_count incremented to 2.
sendViewReminders function
T + 72 hours
Final Reminder Dispatched
If reminder_count = 2 and not resolved: final high-urgency reminder sent. reminder_count incremented to 3. No further automated reminders after this point.
sendViewReminders function
Any Point
Auto-Resolution on View Confirmed
On each poll cycle: if viewed_by, counter_offer_viewed_by, amendment_viewed_by[i], or reinstatement_viewed_by contains matching party_email entry โ†’ resolved = true, resolved_at = now. No further reminders dispatched.
sendViewReminders function
Maximum 3 automated reminders per ViewReminder record ยท reminder_count field prevents duplicate sends across poll cycles ยท ViewReminder persists indefinitely for audit
ยง5 โ€” Data Model โ€” ViewReminder Entity Schema
FieldTypeDescription
offer_idstring (FK)Foreign key to the Offer entity this reminder tracks.
document_typeenumoffer | counter_offer | amendment | reinstatement โ€” determines which viewed_by array to check.
amendment_indexnumberIndex into amendments[ ] array (only when document_type = amendment).
party_emailstringEmail of the party whose engagement is being tracked.
party_roleenumlisting_agent | buyer_agent | seller | buyer โ€” used for reminder email personalization.
property_addressstringCached property address for display in reminder emails without re-fetching Offer.
document_triggered_atdatetimeWhen the document event occurred. Anchors all reminder window calculations.
first_reminder_sent_atdatetimeTimestamp of the T+12h first reminder. Null until sent.
last_reminder_sent_atdatetimeTimestamp of the most recent reminder. Updated on each dispatch.
reminder_countnumberTotal reminders sent (0โ€“3). Guards against duplicate sends across poll cycles.
resolvedbooleanTrue once any engagement source confirms the party has viewed the document.
resolved_atdatetimeTimestamp when resolved was set to true. Preserves exact engagement time.
ยง6 โ€” Key Patentable Claims Summary
Claim 1.A computer-implemented method for tracking real estate offer document engagement comprising: creating a ViewReminder entity record on each document event, polling unresolved reminders on a scheduled interval, and synthesizing three independent engagement signals per party โ€” email delivery confirmation, tracking pixel fire, and authenticated portal view โ€” to determine document engagement status.
Claim 2.The method of claim 1, wherein engagement tracking is document-isolated: each document event type (offer, counter offer, amendment, reinstatement) writes to a separate viewed_by array on the Offer entity, and the ViewReminder document_type field determines which array is checked during correlation, preventing cross-contamination of view events between document types.
Claim 3.The method of claim 1, wherein unengaged parties are subject to an automated escalating reminder sequence at T+12h, T+24h, and T+72h intervals from the document_triggered_at timestamp, each reminder dispatched only if resolved remains false and reminder_count is below threshold, with reminder_count persisted on the ViewReminder entity to prevent duplicate sends across poll cycles.
Claim 4.The system of claim 1, wherein the ViewReminder entity records first_reminder_sent_at, last_reminder_sent_at, reminder_count, resolved, and resolved_at fields, enabling full chronological audit of the engagement tracking and reminder escalation history for each party on each document event in a real estate transaction.
Fig. 13 โ€” Engagement Tracking & ViewReminder Escalation Engine. On each document event, a ViewReminder entity is created and a tri-source correlation engine synthesizes email delivery confirmation (email_delivery_log), tracking pixel fire (source="email" in viewed_by), and authenticated portal view (source="portal" in viewed_by). A scheduled automation polls every 30 minutes, resolving reminders on confirmed engagement and dispatching escalating reminder emails at T+12h, T+24h, and T+72h. All engagement signals, reminder counts, and resolution timestamps are persisted for litigation-grade audit.