A working demo of governed, MCP-native primitives — identity, memory, consent, governed actions, next-best-action, and audience activation — sitting on top of Snowflake data and shared by three independent applications. Nothing here is a queue or a batch sync: all three apps read and write the same governed tables directly, so anything one does is visible in the others immediately.
The sales/support agent view — search a customer, see their profile, orders, tickets, segment badges, then work consent, governed actions, next-best-action, the full audit trail, and handoff.
The CDP dashboard — batch segments, a live abandoned-cart audience, an AI audience builder, derived traits, event-trend insights, and activation to external destinations with consent enforced at send time.
A real Claude-powered agent reachable over Web chat and WhatsApp, grounded in the customer's real profile and history, with tool access to check and change consent and execute governed actions live.
Open the CRM's Audit tab for a customer in one window and the Agent's chat for that
same customer in another. Ask the agent for a refund with no AUTO_REFUND
consent on file — it comes back BLOCKED. Refresh the CRM Audit tab and the blocked
attempt is already there. Grant AUTO_REFUND from the CRM's Consent tab,
ask again — EXECUTED, and the CRM Audit tab shows that too. Same governed backend,
two front doors.
Chat with the Agent, click "save summary to memory," then open that customer in the CRM's Memory tab — the same summary is sitting there, so a human rep never starts from zero.
Tell the agent "stop texting me deals" (it calls set_consent to revoke
MARKETING), then activate a segment that customer belongs to from the
CDP app — they show up suppressed in the count, live.
Ask the agent to escalate to a human, then open that customer in the CRM's Handoff tab and click "package for handoff" — identity, memory, and the recent trace arrive instantly, no "let me pull up your account."
An automated reengagement offer fires for an abandoned cart, then you message that customer's Agent chat asking "did you reach out to me about my cart?" — it's in their recent audit trail, so the agent already knows.
Get a customer into the abandoned-cart dynamic audience, and see them counted live on the CDP dashboard and badged on their CRM record at the same time — same query, two apps.
In the CDP app's AI audience builder, type something like "gold tier customers with an open support ticket and no completed order in the last 60 days" — Claude generates the query, it's validated (single read-only SELECT, known tables only) and run, and the match drops straight into the same activation flow as a segment or dynamic audience.