Contextual Data Enrichment
The restaurant demo demonstrates how SMA separates a persistent base identity from temporary contextual extensions.
The base avatar represents the person. That identity remains stable over time. Remote Work, Date Night, and Family Dinner are not separate avatars or user types. They are active contexts that change which signals carry the most meaning for the same individual.
A single person may work from a café in the morning, meet family for dinner, and plan a date that evening. The person does not change. The venue data does not change. The contextual meaning projection does.
Google Places provides raw signals such as rating, price, location, category, and reviews. SMA adds the missing semantic layer that determines what those signals mean for this person in this situation.
During Remote Work, reliable Wi-Fi, outlet access, noise level, and session length become the highest priorities. During Date Night, ambience, lighting, conversation, and proximity become more important. During Family Dinner, seating flexibility, menu variety, parking, and tolerance for noise may take precedence.
The restaurants are identical in every scenario. The base person is identical. Only the active contextual extension and resulting meaning projection change.
This same pattern applies beyond restaurants. Developer platforms, enterprise applications, and AI systems all operate on large collections of raw signals. Repositories, services, deployments, incidents, ownership, telemetry, and documentation become useful only when interpreted through the user's current workflow, environment, and state.
def calculate_context_score(venue, avatar):
context = avatar.active_context
return weighted_average([
venue.wifi_reliability * context.wifi_reliability["weight"],
venue.noise_level * context.noise_level["weight"],
venue.outlet_access * context.outlet_access["weight"]
])
class ExperienceAvatar(BaseModel):
identity: BaseIdentity
environment: Environment
state: State
active_context: ContextProjection
class RemoteWorkContext(ContextProjection):
wifi_reliability = {
"weight": 0.30,
"scale": "0 = absent or unreliable | 10 = strong, consistent, confirmed",
"evidence": ["reviews", "venue_tags", "photos"]
}
noise_level = {
"weight": 0.25,
"direction": "lower_better",
"scale": "0 = quiet, sustained focus possible | 10 = loud, nightlife",
"evidence": ["reviews", "time_of_day_mentions"]
}
outlet_access = {
"weight": 0.20,
"evidence": ["photos", "review_patterns"]
}