How the personalization engine works in Sprint 2—mapped onto 16 Tambo components with live persona data, five behavioral tiers, and two A/B conversation directions.

Five Tiers
Engine Pipeline
Personas
A/B Directions
Memory
01

Three Profiles, Three Experiences

Select a persona to see how the engine adapts. Every component mockup below changes based on who's traveling.

02

Five Tiers—What Edge Notices, Asks, and Captures

The hierarchy determines which preferences gate search, which reshape results, and which are captured silently.

T0—Required
Hard Gate
Can't search without it. Always asked.
DestinationCharlotte DatesJun 10–12
T1—High Signal
Reshapes Results
Asked within the 2–3 question budget.
HotelHyatt📌 History3× Hyatt CLT, 2× United CLT→LGA
StyleBoutique History1× Tribeca boutique
HotelUnknown HistoryNo prior bookings
T2—Strong
Re-ranks Results
Surfaced as editable chips after results.
FlightNonstop pref.
AreaNoDa district
Area
T3—Tie-Breaker
Available, Never Pushed
Captured passively. Available as chips.
CoffeeBlack, strong
DietPescatarian
Diet
T4—Trivia
Captured Silently
Never surfaces. Learned via updateTravelerModel.
No component rendered—silent capture only
Declared—"I always fly Delta"
Inferred—pattern-derived
Contextual—this trip / corrected / behavioral
See the exhaustive Data Map on the Design Concept page for every T0–T4 parameter across Hotels and Flights.
03

Six Steps—From Query to Learning

The six-step engine maps directly to Edge's cognitive steps. The prompts use domain language—the underlying mental process is the same pipeline.

STEP 1
Acknowledge
Perceive intent
"Charlotte QBR, same as usual ●"
"Charlotte next week for a pitch."
"I need to book a trip to Charlotte."
STEP 2
Recall
Recall context
🏨Pulling Charlotte preferences…
🏨Checking hotel style prefs…
No profile to pull—cold start
STEP 3
Assess
Appraise what's missing
"She's been to Charlotte three times. QBR pattern. I have everything. No questions."
"Boutique preference noted. Kimpton or Ivey? Need neighborhood."
E
Preference
Any neighborhood preferences in Charlotte?
NoDaSouth EndUptown
"Charlotte for work—no dates, no airport, no prefs. Three T0 gaps. Full budget."
E
Required
When are you traveling?
Select dates…
STEP 4
Search
Decide what fits
Hyatt Place CLT
4.2 · Uptown $189/nt
The Dunhill Hotel
4.5 · Uptown $215/nt
Waiting for answers before searching…
STEP 5
Recommend
Reason about presentation
Confirm & Book
3 hotels + 2 flights presented as options
Basic results after questions answered
STEP 6
Confirm
Learn from response
HOTELHyatt Place CLT confirmed
AREAPrefers NoDa district
SCHEDULEFirst preference learned
04

How Much Latitude Does Edge Have?

The question isn't just "how many questions does Edge ask"—it's "how much does Edge act on its own." Profile richness × autonomy level determines the interaction shape.

RICH + HIGH AUTONOMY
One-click booking
Elena's 5th Charlotte trip. Edge recognizes the pattern from 4 prior bookings—same hotel, same room, same flight. Books instantly. No questions, no confirmation screen. Just "Done ●"
RICH + LOW AUTONOMY
Present choices with reasoning
Edge knows everything but shows its work. "I found your usual Hyatt, but there's a new boutique 2 blocks closer to the venue. Here are both."
THIN + HIGH AUTONOMY
Infer aggressively, ask minimally
New user who said "just book something." Edge picks the top-rated option within policy, books it, and asks one follow-up: "How was the hotel?"
THIN + LOW AUTONOMY
Full question flow with options
New traveler who wants to see everything. Edge asks up to 3 questions, presents multiple options at every step, and confirms before booking.
BOOKING INTENT OVERRIDE
When the user is ready to book, get out of the way.

When Edge detects high purchase intent—urgent language, time pressure, rapid query refinement, or explicit booking signals—it compresses the question budget regardless of profile state. A high-intent user with a thin profile gets fast results with conservative defaults rather than 3 follow-up questions.

HOW EDGE DETECTS INTENT
Language"book," "reserve," "tonight" Time pressure"ASAP," "before 6pm" Velocity3+ messages in 60s Price focusbudget mentions, cost comparison Return visitrevisiting prior search
EXAMPLE
"Book me the cheapest hotel in Charlotte tonight"—even with an empty profile, Edge skips all questions. Conservative defaults applied (mid-tier, city center, best value). Results shown immediately. After booking, silently captures: Charlotte destination, price sensitivity, last-minute booking pattern.
Tradeoff: A fast booking with conservative defaults may not surface the best match. But it's a booking—and the profile learns from it either way. The next trip will be better because this one happened fast.
05

Same Query, Three Profiles

"Charlotte next week for work"—profile richness determines the question budget and result quality.

Elena—Rich Profile

8/8 categories · High autonomy · 0 questions
"Your Charlotte QBR—I've got it ● Hyatt Place CLT, room 1814, United nonstop from LGA. Aisle seat, forward cabin."
Hyatt Place Charlotte City Parkbest match
4.2 · Uptown · $189/night
✓ Loyalty match—Globalist
Your usual spot. Room 1814 requested, high floor, firm mattress, gym access before 7am.
United UA 1847$342
7:15aLGA
2h 15m
9:30aCLT
✓ Seat match—aisle, forward
Nonstop, arrives 2.5h before your QBR. Aisle seat in Economy Plus.
Confirm & Book

Marcus—Medium Profile

5/8 categories · Medium autonomy · 1–2 questions
"Charlotte for a pitch—nice ○ I know you like boutique spots. Quick question before I search:"
E
Preference
Any neighborhood you'd like to be near for the pitch?
NoDa South End Uptown
The Dunhill Hotelbest match
4.5 · Uptown · $215/night
Boutique, 1912 building with exposed brick. 10min to NoDa. Local coffee roaster in lobby.

New Traveler—Empty Profile

0/8 categories · Low autonomy · 3 questions
E
Welcome to Edge
  • I learn your preferences over time
  • The more we travel together, the less I ask
  • Your fifth booking will feel effortless
E
Required
What dates are you traveling?
Select dates…
E
Required
Which airport do you fly from?
SFO OAK SJC
06

Two Manifestations of the Same Engine

The personalization engine is the same mental process in both directions. What differs is the externalization pattern—how Edge shows its work.

Direction A—Inline Inference

Preferences woven into conversation as editable chips
"Here's what I know about your Charlotte travel:"
HotelHyatt📌 AirlineUnited📌 SeatAisle, forward Room1814
↑ Tap any chip to correct it. Corrections flow back to the agent in real-time via useTamboComponentState.
Components: InferenceChip, InferenceChipEditable, InferenceChipGroup, TripPrefsOverlay

Direction B—Confirm-First

Preferences compiled into a checklist before searching
Trip preferences
Review your preferences before searching
HotelHyatt
AirlineUnited
SeatAisle, forward
Nonstop+$80 okay
Confirm & search
Components: TripSummarySheet, TripPrefsOverlay (read-only)
07

Four Decisions Encoded in the System

These design decisions govern how the engine scores, defaults, resolves conflicts, and handles dealbreakers.

Decision 01
Scoring Formula
The original spec defines numeric weights. Our implementation achieves the same ranking through qualitative LLM reasoning—the agent explains why each option fits.
EDGE'S REASONING
Hyatt Place CLT selected: loyalty match (Globalist), proximity match (Uptown, 0.3mi from venue), room history (1814 available, booked 3 prior stays—strongest signal), schedule fit (arrives 2.5h before QBR). Booking intent: high—returning to a prior search, booking language detected—compressed question budget, skipped T1 gaps. Runner-up Dunhill scored on ambiance but lacked loyalty integration.
Decision 02
Defaults for Unknowns
When a preference is missing, Edge fills in conservative defaults: budget → mid-tier, loyalty → best value, timing → mid-day. TripSummarySheet shows these defaults as dash-marked rows.
Defaults applied
BudgetMid-tier
LoyaltyBest value
Decision 03
Query vs. Profile
When the query contradicts the profile, the query always wins for this trip. The profile is not updated from a one-off—it only changes on explicit correction or repeated behavior. Edge surfaces the conflict transparently.
Schedule conflict
1:00 PM flight—$80 more, arrives 2h early
Recommend the earlier flight for this trip.
💡 Your profile says "fine with arrivals up to 11pm" but this meeting starts at 3pm—the late flight cuts it close.
Decision 04
Dealbreakers
The spec defines hard-filter dealbreakers that are never shown and never ranked low. This is designed but not yet built—the current system uses declared preferences with high confidence as a soft equivalent.
Sprint 3 candidate
See the Design Concept for detailed rationale behind each decision, including the scoring formula breakdown.
08

Read, Write, Learn

Every interaction teaches the model. The memory system has two sides: reading the persona profile before each response, and writing learnings back after each interaction.

Read—lookupPersonaMemory

lookupPersonaMemory(category)

Agent calls this tool to pull the traveler's profile by category. Returns structured data—loyalty status, room preferences, flight habits, dietary needs, schedule patterns, calendar events, trip history, autonomy level.

8 Memory Categories
loyalty hotel flight dietary schedule calendar tripPatterns autonomyDial
Elena's Profile Sample
loyalty.hotel: "World of Hyatt—Globalist"
hotel.roomPreference: "High floor, king bed, room 1814"
flight.carrier: "United preferred"
autonomyDial.level: "high"
Marcus's Profile Sample
hotel.style: "Wynwood-style—converted warehouse"
flight.carrier: "Delta preferred for MIA hub"
dietary.preferences: "Pescatarian"
autonomyDial.level: "medium"
New Traveler Profile
loyalty: {}
hotel: {}
flight: {}
autonomyDial.level: "low"

Write—updateTravelerModel

updateTravelerModel(key, value, source, confidence)

After each interaction, the agent calls this tool to persist what it learned. Each entry includes a confidence score and source type. The ModelUpdateToast makes every learning visible.

Learning Accumulation
DECLARED · 95%"I always fly Delta"
✓ Learned
INFERRED · 72%Price-sensitive—asked about cost 3 times
✓ Learned
CORRECTED · 90%"Actually I prefer window seats"
✓ Learned
Source confidence ranges:
● Declared: 0.9–1.0 · ○ Inferred: 0.5–0.8 · ◉ Corrected/Contextual: 0.6–0.9
09

16 Registered Tambo Components

Every component the agent can select at runtime, registered with Zod schemas. The agent's description field is its only signal for when to use each component.

EdgeMessage
Base chat message with "E" avatar and memory badges
BothBoth
InferenceChip
Read-only preference chip with source dot + confidence
PrefDir A
InferenceChipEditable
Tap-to-correct chip—corrections flow to agent
PrefDir A
InferenceChipGroup
Expandable group with summary header
PrefDir A
TripPrefsOverlay
Full preference profile grouped by category
PrefBoth
TripSummarySheet
Confirm-first checklist before search
PrefDir B
HotelResultCard
Hotel result with rating, price, loyalty, reasoning
BothBoth
FlightResultCard
Flight result with timeline, carrier, seat match
BothBoth
ConfirmCTA
Action button—idle → loading → confirmed
BothBoth
WelcomeCard
Cold-start onboarding with Edge avatar + bullets
BothBoth
QuestionCard
Elicitation with choice chips + text fallback
BothBoth
PreferenceLearningIndicator
Progress bar—N/8 profile completeness
BothBoth
ThinkingStep
Inline reasoning—pulsing dot / checkmark
OrchDir A
SpecialistMessage
Persona-tinted specialist voice (hotel / flight)
OrchDir B
ConflictResolution
Warning card with radio options + recommendation
OrchDir A
ModelUpdateToast
Visible learning—source dot, key, value, confidence
BothBoth

Full interactive versions at edge-sprint2.pages.dev/gallery