Customer Fabric.ai

Customer AI Fabric

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.

App 1

CRM Console

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.

Open CRM →
App 2

Audience Analytics & Activation

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.

Open CDP →
App 3

Multi-Channel Agent

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 Agent →

Walk through the cross-app scenarios

1Live governance, two windows side by side

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.

2Memory travels ahead of the human

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.

3A spoken preference changes who gets marketed to

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.

4Escalation with zero re-explaining

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."

5The agent knows what happened without being told

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.

6Segments and badges agree

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.

7Describe an audience instead of writing SQL

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.

Every app here talks to the same governed Snowflake tables, not to each other directly — there's no cross-app API call involved in any of the above, just three independent apps reading and writing shared, governed state. Refreshing is how you "see" the cross-app effect, not a live push.