Skip to main content

// cs specialist

AI that answers customer email.

Magistry answers customers from your store's IMAP or Outlook mailbox, and the replies are sent. Every answer is grounded in the real order, cites your own policies, and has to pass the Reply Judge before it sends. Refunds and cancellations execute inside limits you set, and return requests are handled in the helpdesk.

Live Email · IMAP / Outlook Reply Judge Proactive Outbound
thread · example
from        : klant@protonmail.com
subject     : Bestelling 88421 niet aangekomen
lang        : nl (reply in customer language)

order_match : o_88421 (order number in subject)
product     : Brushed Linen Throw — Sand
ship_status : in transit, NL (carrier ping 6h ago)
supplier    : on-time batch, no flags

policy_cite : cs_policy_chunks#214
              "EU shipping ETA — 5–8 business days"

draft       : "Hoi! Goed nieuws — je throw is
              onderweg en zou tussen vrijdag en
              maandag aankomen. Hier is de track-link…"

judge_score : 0.91 → APPROVED → sent

// the skills

Every reply has a reasoning trail.

Specialist skills compose each reply, refund and escalation. Every step is recorded, so you can read why the agent thought it knew the answer as well as what it said.
01

order_detective

Works out which of the customer's orders the message is about: the order number when they give one, otherwise their email address and what they wrote.

// output

order_match

02

catalog_xref

Checks the product the customer mentions against your catalog, so a reply about a product you have since pulled or one with a known complaint pattern says so.

// output

context_payload

03

supplier_reality

Turns fulfilment status and open supplier delays into a truthful shipping statement. If the supplier is the cause, the reply says so honestly.

// output

supplier_signal

04

policy_grounder

Retrieves the relevant sections of your shipping, refund, returns and warranty pages. A reply that states a policy must cite the section it came from.

// output

policy_citation

05

reply_drafter

Replies in the language the customer wrote in, in the tone of the replies your team already sends. Nothing leaves until the Reply Judge clears it.

// output

cs_outbound_drafts

06

refund_ev_calculator

Weighs a full refund, a partial refund, a replacement, a gift card, a polite no or a hand-off by expected value: margin, customer value, fraud risk and what your policy allows.

// output

ev_recommendation

07

action_executor

issue_refund · cancel_order · create_return · issue_replacement · change_shipping_address · issue_gift_card. Each action carries an idempotency key and is recorded.

// output

shopify_mutation

08

escalate

VIP customers, high fraud risk, legal language or a request above your refund cap go to a person, with the reasoning trail attached.

// output

human_handoff

// channels & memory

One desk, with memory.

Replies are sent from your own mailbox. In the last 30 days (measured 17 Oct 2026), 658 replies were sent from connected mailboxes, 104 of them by people.

Email

Connect your mailbox over IMAP, or connect Outlook. Threads sync in, and replies send from your own address.

Returns

Return requests are handled in the helpdesk, alongside the rest of the conversation.

CSAT surveys

A satisfaction survey goes out after a conversation is resolved.

Your policies

Your shipping, refund, returns and warranty pages are indexed, and the agent answers from what you have written.

Resolution memory

Resolved threads become examples the agent can retrieve, so the same issue next month starts from the answer that worked.

Hard constraints

Refund caps, a fraud gate, a language gate and policy grounding are enforced in code after the model has answered, so the model cannot talk itself past them.

// the real product

The inbox, with the judge's scores visible.

A real screenshot of the dashboard, with demo store data. Threads on the left, AI drafts on the right, each scored by the Reply Judge before it sends.
app.magistry.io/cs/inbox
The Magistry CS inbox: support threads alongside an AI-drafted reply with its Reply Judge scores

// reply judge

A second pass before any reply ships.

The Reply Judge is a second model pass that scores every AI draft on policy grounding, factual grounding and brand voice. A draft it does not pass is not sent on its own; it goes to a person.
policy

Does the draft only promise things your published policy actually allows?

e.g. Promised return window matches the cited cs_policy_chunk.

fact

Does every claim trace back to the order data, supplier signal, or catalog?

e.g. Tracking ETA cited from the actual carrier event, not invented.

brand_voice

Does the draft sound like you, compared with replies your team has already sent?

e.g. Closest match to your past replies is above the floor you set.

risk

Is the request inside the trust window, or does it need a human?

e.g. Refund above your cap → escalate, whatever the draft quality.

cs_thread_evaluations · example
thread_id   : t_4912
draft_id    : d_1180
language    : nl (matches customer ✓)

judge_score : 0.91
  ├─ policy      : 0.94
  ├─ fact        : 0.92
  ├─ brand_voice : 0.88
  └─ risk        : low (refund €18.50)

policy_cite : cs_policy_chunks#214
              "EU returns — 30d, prepaid label"
fact_cite   : order_payload#o_88421
              tracking: 'in transit, NL'

verdict     : APPROVE_SEND
sent_at     : 2026-05-25T11:02:18Z

// brand voice embeddings

Your tone, learned from your own replies.

Magistry embeds the replies your team has already sent. The drafter imitates them, and the judge measures how close each new draft comes.

Learned from sent mail

Recent replies from your mailbox are embedded as voice samples.

your sent replies

Steer every draft

reply_drafter imitates your samples for tone, sign-off, formality and length. Even a new policy sounds like you.

drafter conditioning

Measure every send

The Reply Judge scores each draft against its closest sample. Below the floor you set, the reply waits for you.

floor you set

// refund_ev

The math behind every yes.

refund_ev_calculator weighs each possible answer (refund, partial refund, replacement, gift card, polite no, hand-off) on the order's margin, the customer's value, fraud risk and your policy, and picks by expected value.

// example scenario

Customer received the wrong colour throw. €89 order. Repeat customer, inside the return window, no fraud signals.

  • full_refundfull cost, customer kept
  • partial_refundlower cost if the item is kept
  • replacementproduct cost, customer kept
  • escalate_humana person decides
  • deny_politeoutside policy: not here

In this example Magistry picks replacement, inside the refund cap you set.

LTV-aware

A customer likely to buy again is worth more flexibility than a one-off order.

Margin-aware

The contribution margin on the product is part of the sum.

Risk-aware

Fraud risk and a third refund request in 90 days count against an automatic yes.

Bounded

Magistry never resolves above the per-action ceiling without an escalation row.

// proactive outbound

Replies before the customer asks.

When a supplier delay holds up orders, a product is pulled for quality, or complaints cluster on one product, Magistry drafts a message to the affected customers before they write in. The first batch waits for your approval; later ones can send on their own once you allow it.
cs_outbound_drafts · example
trigger     : supplier.offline on 'Brushed Linen Throw'
customer    : jane.k@***.com
order       : o_88421 — 'Brushed Linen Throw'

draft_subj  : "Quick update on your order #88421"
draft_body  : Hi Jane, your throw is held up at our
              supplier and will not ship this week.
              You can wait for it, or reply and we
              will refund the full amount.

judge_score : 0.93 (policy ✓ fact ✓ voice 0.91)
status      : PENDING_REVIEW

first batch for this signal: approval required
Allow proactive sends in your customer service settings

// cs specialist

Reply faster than the customer can finish typing.

Connect your IMAP or Outlook mailbox and point Magistry at your policy pages. Drafts start arriving for you to approve, and you decide when replies may send on their own.

Language-gated · Brand-voice scored · Judged before send