Skip to main content

Overview

Podium’s memory and intelligence system gives agents a deep, evolving understanding of each user. Instead of treating every conversation as stateless, the agent accumulates structured knowledge — preferences, goals, concerns, products tried, price sensitivity — and uses that knowledge to score and explain recommendations. The system covers three capabilities:
  1. Structured user memory — a versioned schema that captures everything the agent learns about a user
  2. ML scoring layer — popularity signals, temporal decay, and domain-specific weights that rank products intelligently
  3. Reason tags — human-readable explanations attached to every recommendation

AgentMemory

The agent builds and evolves a structured memory for each user. Memory is stored on the user’s intent profile and persists across sessions, channels, and devices.

Schema

Key Design Decisions

Category-aware price ranges. A user might spend up to 50onserumsbutcapmoisturizersat50 on serums but cap moisturizers at 30. The priceRange.byCategory map captures this naturally — the agent uses the most specific range available when filtering products. Confidence-tracked signals. Every goal, concern, and avoidance carries a confidence level, mentionCount, and timestamps. Signals the user mentions repeatedly are weighted higher than one-off statements. Signals that haven’t been confirmed recently decay in influence. Multi-source attributes. User attributes can originate from three sources: Products tried with outcome tracking. The agent records not just which products a user has tried, but their sentiment and outcome. “Broke me out” vs “holy grail” is critical context for future recommendations.

Automatic Summarization

The agent extracts and updates memory at three trigger points: Summaries are stored on the user’s intent profile (agentSummary field), making conversation-derived intelligence available to recommendations, the agentic product feed, and downstream analytics.
Memory extraction runs as a background job — it does not add latency to the agent’s response. The user sees no delay.

Domain Taxonomy

Products are organized into a two-level domain:subcategory system. This taxonomy drives scoring weights, expert personas, and brand tier calibration.

Domains

moisturizer, serum, cleanser, sunscreen, toner, mask, exfoliant, eye cream, lip, makeup, hair care, body care, tools, fragrance
supplements, probiotics, protein, greens, vitamins, minerals, adaptogens, nootropics, collagen, sleep, longevity, fitness
clothing, shoes, accessories, bags, jewelry, watches
decor, kitchen, bedding, bath, storage, lighting, furniture
Each product is tagged with a domain and subcategory. When the agent scores and re-ranks recommendations, it loads the appropriate domain configuration — weights, persona, and brand tier thresholds.

Domain-Specific Expert Personas

When re-ranking recommendations, the system activates a domain-specific expert persona. This shapes the language, evaluation criteria, and recommendation style: Personas are applied during the re-ranking step — after initial retrieval and scoring, but before final product selection. The persona influences both which products surface and how the agent describes them.

ML Scoring Layer

Beyond profile matching, the intelligence system uses machine learning signals to rank products:

Impression Logging

Every product shown to a user is logged with its position. This creates a feedback loop: the system knows which products were seen (not just clicked), enabling proper conversion-rate estimation and position-bias correction.

Popularity Scoring

Product popularity is computed from weighted user interactions: The raw score is normalized: popularityScore = weightedSum / sqrt(totalInteractions). This prevents products with many low-quality interactions from outscoring products with fewer but stronger signals.

Temporal Decay

Interaction signals decay over time with a 720-hour half-life (approximately 30 days). A purchase from yesterday weighs more than one from three months ago. This keeps recommendations responsive to shifting user interests and seasonal trends.

Feature Cache

For each product, the system maintains a pre-computed feature vector: These features are cached for fast retrieval during scoring — no recomputation on every request.

Reason Tags

Every recommended product can include a reasonTag — a concise, human-readable explanation of why it was selected. Reason tags build user trust by making the agent’s logic transparent.

Tag Types

Reason tags are generated during the re-ranking step and returned alongside product data in both the conversational agent responses and the companion recommendations endpoint.

Signal Scoring with Polarity

The scoring system handles negation and avoidances intelligently — a common pitfall in keyword-based matching.

How It Works

When computing signal scores, the system applies domain-specific weights and checks polarity:
  • Avoidance-aware matching: If a user lists “fragrance” as an avoidance, a product described as “fragrance-free” is treated as a positive signal, not penalized. Similarly, “paraben-free” is not penalized when “parabens” is in the user’s avoidance list.
  • Negative descriptor detection: Terms like “greasy”, “harsh”, and “irritating” carry negative weight regardless of user preferences. These are universally undesirable product attributes.
  • Domain-specific weighting: A “lightweight texture” signal carries more weight in beauty (where texture is critical) than in wellness (where formulation matters more).
This polarity-aware scoring prevents the classic failure mode where an agent penalizes products for not containing an avoided ingredient — the exact opposite of what the user wants.

How Memory Feeds Into the Platform

Memory is not isolated to conversations. It flows into multiple platform capabilities: