Skip to content

Scribe Detection Reference

This document provides authoritative reference information on how Scribe detects, scores, and weights visitor preferences.

Scribe becomes “ready” when all three conditions are met:

ThresholdValuePurpose
Session age≥10 minutesEnsures visitor is genuinely browsing, not just passing through
Properties viewed≥3 propertiesProvides sufficient data to detect meaningful patterns
Average confidence≥50%Ensures preferences are reliable enough to show visitor

Until these thresholds are met, the floating action button displays a “Start exploring” message.

Each behavioral signal is assigned a confidence range based on its reliability:

SignalWhat It RevealsConfidence RangeWeight
Explicit filtersDirect user intent (price, beds, location filters)95%Highest
Return visitsStrong interest in specific properties90%Very High
Favorites savedStrong positive preferences90%Very High
Properties viewedPrice range, size, property type from listings30-85%Variable
Photo engagementSpecific amenities of interest30-80%Variable
Search queriesLocation and feature priorities from natural language50-85%High
Quick bouncesDeal-breakers and dislikes30-70%Variable

Every property interaction is scored on a 100-point scale to weight how much it influences preferences:

InteractionMax PointsFull Credit Threshold
Time on page305+ minutes
Scroll depth20100% of page
Photos viewed20All photos in carousel
Mortgage calculator10Used calculator
PDF download10Downloaded flysheet
Tour request10Submitted request
Share action5Shared property
Favorite action5Saved to favorites

Total possible: 100 points per property view

engagement_score = (time_points + scroll_points + photo_points +
action_points) / 100

Properties with higher engagement scores have proportionally more influence on preference detection.

Points are awarded proportionally:

  • Time on page: Linear scale from 0-5 minutes (6 points per minute)
  • Scroll depth: Linear scale from 0-100% (0.2 points per percent)
  • Photos viewed: Points per photo viewed (5 points each for 4-photo carousel)
  • Actions: Full points awarded for any completion

When a visitor views the same property multiple times:

Visit CountConfidence BoostWeight Multiplier
First visitNormal (30-85%)1.0x
Return visitBoosted to 90%2.0x
Third visitRemains 90%3.0x
Fourth+ visitRemains 90%Visit count × 1.0

Return visits are tracked in browser localStorage:

{
"idx_property_views": {
"listing_12345": [
"2024-01-15T10:30:00Z",
"2024-01-16T14:20:00Z",
"2024-01-17T09:15:00Z"
]
}
}

Timestamps persist across sessions within the same browser.

Scribe tracks what visitors don’t want by detecting quick bounces.

MetricThresholdMeaning
Time on page<5 secondsToo quick to be interested
Scroll depth<20%Didn’t engage with content
Bounce count3+ propertiesConsistent pattern detected

Negative preferences are inferred for:

  • Property type (single_family, condo, townhome, etc.)
  • Price bucket (under $300k, $300k-$500k, $500k-$750k, etc.)
  • Specific features (HOA, no garage, no yard, etc.)

Negative preferences appear with a “Not interested” label and are excluded from:

  • Agent matching algorithms
  • Search suggestions
  • Automated property alerts

When visitors browse property photos, Scribe tracks engagement at the photo level.

Dwell DurationWeightNotes
<500ms0 pointsConsidered a quick scroll-past
500ms-2s1 pointCasual viewing
2s-5s2 pointsModerate interest
5s+3 pointsStrong interest

Zooming into a photo adds:

  • +5 points to that photo’s engagement score
  • +2% confidence to any features detected in that photo

Features become preferences when:

  • Viewed for 5+ seconds total across all photos
  • Detected in 2+ properties
  • Average confidence ≥40%

Common detected features:

  • Kitchen: granite countertops, island, stainless appliances, pantry
  • Bathroom: soaking tub, walk-in shower, double vanity
  • Exterior: pool, covered patio, mountain views, 3-car garage
  • Interior: fireplace, vaulted ceilings, hardwood floors, built-ins

Natural language searches are analyzed for feature keywords.

"modern home with pool near downtown"
↓ ↓ ↓
style pref feature location
Mention CountConfidenceExample
1 mention40%“pool” mentioned once
2 mentions65%“pool” mentioned in 2 searches
3+ mentions85%“pool” mentioned in 3+ searches

Keywords must appear in 2+ searches to become inferred preferences.

The system recognizes synonyms:

  • “pool” = “swimming pool” = “outdoor pool”
  • “granite” = “granite counters” = “granite countertops”
  • “garage” = “car garage” = “parking”

Each preference includes a confidence score (0-100%):

ConfidenceSourceDisplay Behavior
100%User confirmed or manually addedAlways shown, cannot be overridden
85-95%Explicit filter applied by userAlways shown, high priority
60-85%Return visit or strong signalShown with “detected” label
30-70%Inferred from passive browsingShown with confidence %
Under 30%Insufficient evidenceNot shown to visitor

Preferences decay over time if contradicted by new behavior:

  • Per-session decay: 2% per contradicting property view
  • Minimum floor: Inferred preferences cannot decay below 20%
  • User-confirmed: No decay (remains at 100%)

Example: Visitor initially viewed $400k-$500k properties (65% confidence), then viewed 5 properties at $600k-$700k. Original preference decays to 55%, new range emerges at 70%.

Agent matching uses cosine similarity between embeddings:

similarity_score = 1 - (criteria_embedding <=> preference_embedding) / 2
match_percentage = similarity_score * 100
ScoreLabelThreshold
≥80%Excellent MatchStrong semantic alignment
≥60%Great MatchGood fit for preferences
≥40%Good MatchRelevant experience
<40%AvailableGeneral availability

If fewer than 3 agents score ≥40%:

  1. Add brokerage’s primary agent with 50% score
  2. Fall back to first eligible agents by join date
  3. Return empty list only if brokerage has zero agents

Scribe uses localStorage for client-side state:

KeyTypePurposeExpiry
scribe_disabledbooleanPermanent opt-out flagNever
scribe_dismissedtimestampTemporary snooze until time24 hours
idx_property_viewsobjectReturn visit trackingSession
{
"scribe_disabled": false,
"scribe_dismissed": "2024-01-15T14:30:00Z",
"idx_property_views": {
"listing_12345": ["2024-01-15T10:00:00Z"]
}
}

When a visitor converts, session data syncs to CRM if confidence ≥70% or confirmed:

Session DataClient FieldSync Condition
Price preferencesbudget_min, budget_maxConfidence ≥70% or confirmed
Location preferencespreferred_areasConfidence ≥70% or confirmed
Property typesproperty_typesConfidence ≥70% or confirmed
Bedroom preferencesbeds_minConfidence ≥70% or confirmed
Bathroom preferencesbaths_minConfidence ≥70% or confirmed
Freeform notesnotes (appended)Always synced
Assigned agentassigned_agent_idAlways synced