Customer Service AI Memory: What Siena's Agent of Record

You've watched a support bot ask for your order number, then ask again two messages later, then hand you to a human who asks for it a third time. Siena just raised $17 million to fix that problem for consumer brands, and the interesting part isn't the funding. It's the architecture: a shared memory layer that every agent, human or machine, reads from. If you run a small business, you probably can't buy that product, but you can build the same pattern, and the hard part isn't the AI.
What Siena actually announced (and what it didn't)
On October 6, 2026, Siena announced a $17 million Series A led by York IE, with Joyance Ventures and existing investors Aglaé Ventures and Sierra Ventures participating. That brings total funding to $29.7 million, according to VentureBeat's coverage.
The product concept is the "Agent of Record": a shared intelligence layer that gives customer-facing agents, internal agents and human teams a common understanding of the customer. Siena Intelligence pulls together conversations, orders, subscriptions, reviews, loyalty data and brand knowledge. Employees can query it through Ask Siena, including via Slack, and CEO Andrei Negrau also described access through MCP (Model Context Protocol) connections.
A few things worth keeping straight before you get excited:
- It's not all shipping yet. Siena says its newer shopping, social, voice and customer intelligence capabilities are in early access, with some features available or rolling out now. A native help desk and more proactive agents are on the roadmap. The announcement doesn't establish general availability for the whole suite.
- It's aimed at bigger brands. Siena targets midsize and enterprise consumer brands. Negrau put it plainly: "We're not building agents for everyone."
- The results are vendor-reported. Siena says deployments automate "up to 80%" of customer interactions, and VentureBeat notes that's an upper bound, not a published average. A SPANX testimonial on Siena's site cites half of conversations automated, customer satisfaction above 90% and handling time cut in half. Treat those as marketing numbers, not benchmarks.
So the news is real, the funding is real, and the product direction is smart. But the lesson for a 1-10 person business is the pattern, not the purchase.
Why support bots feel dumb: the memory problem
Most support bots feel dumb because they answer from a knowledge base and a single conversation window, not from the customer's actual record. They don't know what you bought, whether a refund is pending, or that you already complained yesterday on Instagram. Every conversation starts at zero.
Look at what a human agent does in the first 30 seconds of a good support interaction:
- Identifies who you are.
- Pulls up your recent orders or invoices.
- Checks whether there's an open issue.
- Skims the last few conversations.
- Only then answers.
A typical chatbot does step 0: it reads your message and guesses. The "AI" isn't the weak link. The model can write a perfectly good reply. What's missing is retrieval: getting the right facts about this specific customer into the prompt before the model speaks.
This is why the Agent of Record framing is useful. It treats customer context as infrastructure that sits beside the agents rather than inside any one of them. The chat bot, the email responder, the human on the help desk and the person asking a question in Slack all read from the same place.
The part nobody puts in the demo: the integrations
Here's the sentence in the coverage that matters most for builders: Siena's commerce, order-management and ERP systems keep their own records. Siena aggregates customer context from them and makes it available to its agents as needed. And adopting it still requires connecting the systems that hold authoritative order, refund and subscription data.
Read that twice. Even the vendor with $29.7 million in funding doesn't replace your source-of-truth systems. It reads from them. Which means the real project, for them and for you, is:
- Getting API access to your order, billing and subscription systems.
- Deciding which system wins when two disagree.
- Matching a person across channels (the email, the chat widget, the DM handle).
- Keeping all of it fresh enough to be trusted.
Siena itself says it spent six months navigating approval processes for Meta and TikTok integrations. That's the company's own experience, not a universal timeline, but it tells you integrations are where calendar time goes.
For a small business the equivalent systems are less exotic: Stripe or PayPal for payments, Shopify or WooCommerce for orders, a CRM or even a spreadsheet for customers, a shared inbox for email, maybe a booking tool. The shape of the problem is identical.
Build a minimal Agent of Record yourself
You can build the core pattern with a small service that, given a customer identifier, returns a compact, structured context object. The agent calls it before every reply. Here's a deliberately simple version.
from dataclasses import dataclass, field
from datetime import datetime
@dataclass
class CustomerContext:
customer_id: str
email: str
orders: list = field(default_factory=list)
open_tickets: list = field(default_factory=list)
refunds_pending: list = field(default_factory=list)
last_contact: datetime | None = None
sources_checked: list = field(default_factory=list)
sources_failed: list = field(default_factory=list)
def build_context(email: str) -> CustomerContext:
ctx = CustomerContext(customer_id="", email=email)
# Each lookup is isolated so one failing system doesn't kill the reply
for name, fetch in [
("orders", fetch_orders), # your store API
("refunds", fetch_refunds), # your payment provider
("tickets", fetch_open_tickets), # your inbox / help desk
]:
try:
data = fetch(email)
ctx.sources_checked.append(name)
apply(ctx, name, data)
except Exception:
ctx.sources_failed.append(name)
return ctx
Two design choices matter more than the code:
Return structured fields, not a pile of text. An order total and a refund status should arrive as typed values the model can't misread, not as a pasted email thread.
Record which sources failed. If the refund lookup timed out, the agent must know that. Otherwise it will confidently say "no refund is pending" when the truth is "I couldn't check." That one distinction prevents most embarrassing support answers.
Then inject the context into the prompt with explicit rules:
SYSTEM = """You are a support agent for a small business.
You may only state facts present in CUSTOMER_CONTEXT.
If a source is listed under sources_failed, say you can't confirm
that information right now and offer a human follow-up.
Never guess order status, refund status or dates."""
def reply(message: str, email: str) -> str:
ctx = build_context(email)
return llm(system=SYSTEM,
user=f"CUSTOMER_CONTEXT:\n{ctx}\n\nMESSAGE:\n{message}")
This is a skeleton, not production code. It skips identity matching, caching and permissions, which is where the next sections go.
Identity matching and memory hygiene
Cross-channel memory is only as good as your ability to say "this Instagram DM and this email are the same person." The sources don't say how Siena does this, and I won't guess. For your own build, the honest options are:
| Approach | How it works | Risk |
|---|---|---|
| Exact key (email, order number) | Customer provides or you already hold it | Misses anonymous social contacts |
| Verified login / signed link | Customer authenticates before account data is shown | Adds friction, but safest |
| Fuzzy match (name, handle) | Heuristic linking across channels | Wrong person gets someone else's data |
My rule: never show account-specific data on a fuzzy match. If the system is only 70% sure who's talking, the agent can use general knowledge and ask the customer to verify. Leaking one customer's order details to another is far worse than an unhelpful reply.
The second hygiene problem is stale or wrong "memories." The sources don't specify how Siena corrects outdated or conflicting customer information, so treat this as an open design question you must answer yourself. Practical rules that work:
- Store facts with timestamps and sources, not conclusions. "Order 1042 shipped 3 days ago per store API" beats "customer is happy."
- Prefer live lookups for anything that changes (order status, refund state) and reserve stored memory for slow-changing things (preferences, past issues).
- Give humans a one-click way to flag a context field as wrong, and log who changed what.
- Don't let the agent write free-form beliefs about customers back into the record without review.
If your agent can't be corrected, it will quietly accumulate errors, and those errors will show up in front of customers.
What it costs: buy versus build
Siena's published pricing, as reported by VentureBeat and third-party reviewers, is a $750 monthly platform charge plus $0.90 per automated ticket. The platform fee covers the core AI engine, an unlimited sandbox, onboarding and dedicated Slack support. Final quotes come from a sales conversation and there's no free trial, so your actual bill could differ with negotiated terms, volume discounts and implementation costs.
Using only the published structure, here's the math:
| Monthly automated tickets | Platform fee | Per-ticket charges | Total | Blended per ticket |
|---|---|---|---|---|
| 1,000 | $750 | $900 | $1,650 | $1.65 |
| 10,000 | $750 | $9,000 | $9,750 | $0.975 |
The 1,000-ticket figure matches the third-party breakdown at about $1.65 per ticket blended. The 10,000-ticket row is straightforward arithmetic from the same rates, before any other charges.
Two caveats from the reporting. The $0.90 is conversation-based, not outcome-based; third-party reviewers say it's billed whether or not the AI fully resolved the issue. And you can't compare it directly to Intercom Fin's outcome-based pricing (reported around $0.99), because the billing units differ. Don't conclude one is cheaper from the headline numbers.
Does a 5-person business need this? Probably not. If you handle a few hundred tickets a month, the platform fee alone is a meaningful line item, and the product is built for midsize and enterprise consumer brands anyway. That doesn't mean you should do nothing. It means the build-it-yourself version of the pattern is the right scale for you, using the off-the-shelf pieces you already pay for.
For a larger brand with thousands of tickets and several systems to reconcile, a vendor that has already done the Meta, TikTok and commerce integrations can be worth the money. The decision isn't ideological. It's whether the integration work is your competitive advantage (usually not) or your bottleneck (often yes).
Guardrails before you let an agent act on memory
Giving an agent the customer's history makes it more useful and more dangerous in the same stroke. Once it can see orders and refunds, someone will want it to do things. Before that, set limits:
- Read versus write. Start read-only. The agent can say a refund is pending; it can't issue one.
- Permissions per action. If you later allow actions, scope them narrowly (for example, a small refund ceiling you choose) and require human approval above it.
- Audit trail. Log what context was retrieved, what the agent said, and which sources were consulted. You'll need this the first time a customer disputes an answer.
- Human escalation that carries context. When the bot hands off, the human should see the same context object, not start from zero. That's the entire point of a shared record.
- A real test set. Write 30-50 actual past tickets with known-correct answers and rerun them after every change. If you can't measure whether the agent got better, you can't tell whether memory helped.
Siena's pricing page lists SAML single sign-on, granular permissions, audit logs, human escalation, an uptime SLA and SOC 2 Type II compliance. Those aren't glamorous, but they're the feature list of someone who has been through a security review. Your version doesn't need SAML, but it does need the logic behind each item.
Where to start this week
If I were setting this up for a small team, in order:
- List your sources of truth. Where do orders, payments, subscriptions and past conversations actually live? Write down the system and whether it has an API.
- Pick one question to answer well. "Where's my order?" and "Did my refund go through?" are good because the answers are checkable. Skip open-ended advice for now.
- Build the context lookup first, the chatbot second. Test it by running it by hand on ten real customers and comparing against what a human would look up.
- Ship read-only, with a visible handoff. Make the bot say what it checked, and give customers a clear path to a person.
- Review failures weekly. Most misses will be integration gaps (a system wasn't reachable, an email didn't match), not model problems. That's the signal that you're fixing the right thing.
None of this needs a $17 million round. It needs clean access to your own data and discipline about what the agent is allowed to claim.
How BizFlowAI approaches this
The pattern above, a context layer that pulls from the systems holding authoritative records and hands a compact view to whichever agent or human is talking to the customer, is the kind of integration work I build for small teams. The AI model is rarely the hard part. Reliable retrieval across payments, orders, inboxes and spreadsheets, with identity matching, failure handling and audit logs, is where projects succeed or stall.
If your support agent feels dumb because it can't see your own data, that's usually a connection problem, not a model problem. If you'd like help scoping which systems to connect first and what a safe read-only rollout looks like, book a discovery call.
Work with BizFlowAI
If you'd rather have this built for you, that's what we do: production AI automation for solo founders and small teams — agents, integrations, and document pipelines that actually ship.
Book a free discovery call — 30 minutes, we map the highest-ROI automation in your workflow. No pitch deck, just engineering.
More guides like this on the BizFlowAI blog.
Frequently asked questions
Why do customer support chatbots keep asking me the same questions again?
Most support bots answer from a knowledge base and a single conversation window, not from the customer's actual record. They don't know your past orders, pending refunds or earlier complaints on other channels, so every conversation starts at zero. The language model is usually not the weak link; the missing piece is retrieval, meaning pulling the right customer facts into the prompt before the model replies. Fixing this requires connecting the bot to order, billing and ticket systems.
What is an Agent of Record in customer service AI?
An Agent of Record is a shared intelligence layer that gives customer-facing agents, internal agents and human teams one common understanding of each customer. Siena uses the term for its platform, which aggregates conversations, orders, subscriptions, reviews and loyalty data. The key idea is treating customer context as infrastructure that sits beside the agents rather than inside any single bot. A chat bot, email responder and human help desk all read from the same place.
How can a small business build a customer memory layer for an AI support agent?
Build a small service that takes a customer identifier such as an email and returns a compact, structured context object with orders, open tickets, pending refunds and last contact. The agent calls it before every reply and is instructed to state only facts present in that context. Each lookup should be isolated so one failing system doesn't break the reply. This pattern needs API access to your store, payment provider and inbox, not an expensive vendor platform.
How do I stop an AI support agent from making up order or refund information?
Return structured, typed fields instead of pasted text, and record which data sources failed to respond. If the refund lookup timed out, the agent must know that and say it can't confirm the status right now instead of claiming no refund is pending. Add explicit system prompt rules: only state facts from the provided customer context, and never guess order status, refund status or dates. Offering a human follow-up when a source fails covers the remaining gap.
How should an AI support bot match a customer across email, chat and social channels?
Use an exact key such as an email or order number, or have the customer authenticate through a verified login or signed link, which is safest. Fuzzy matching on names or social handles is a heuristic and risks showing one person's data to another. A good rule is to never display account-specific data on a fuzzy match. In that case, let the agent use general knowledge and ask the customer to verify their identity first.