Customer-facing AI agents only get interesting when they know who they're talking to. Most don't. They respond generically, force users to restate preferences, and ignore everything the site has already learned about the visitor in the last ten minutes.
This accelerator shows you how to combine Snowplow Signals with AWS Bedrock AgentCore to build an agent that personalizes responses based on real-time behavioral data and persistent memory. The agent is built with the Strands Agents framework and runs in a Jupyter notebook environment. It uses a travel domain as the demo context, but the pattern applies to any customer-facing agent — support, shopping, advisory, or content recommendation.
Signals handles what the user is doing right now. AgentCore Memory handles what's known from past interactions. The agent gets both on every turn.
Use Cases
- E-commerce shopping assistant — personalize product recommendations based on what a user has browsed and compared in the current session
- Travel advisory agent — surface relevant destination suggestions using real-time browsing behavior combined with preferences captured in prior sessions
- Customer support agent — reduce time-to-resolution by giving the agent full session context before the first response, so users don't have to restate what they were doing
- Content recommendation — adapt editorial or media recommendations to what a user is actively engaging with on the page
Infrastructure Overview
- Snowplow Signals — processes raw event data into behavioral attributes served via the Profiles API; the agent fetches these at runtime to understand what the user is doing right now
- AWS Bedrock AgentCore Memory — provides managed short-term and long-term memory, automatically extracting preferences and facts from conversations so the agent builds context over time
- Strands Agents — open-source Python framework for building AI agents with custom tools and foundation models
- Snowplow JavaScript Tracker — captures behavioral events (page views, interactions, session data) from the front-end demo app
Additional Insights
The two-layer memory architecture — real-time behavioral context from Signals plus persistent conversational memory from AgentCore — is the core pattern here. Either layer can be adopted independently: teams already running Bedrock can add Signals for real-time context without adopting AgentCore Memory, and vice versa. The Strands Agents framework is also swappable; the Signals Profiles API integration works with any Python-based agent framework.