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
// cs specialist
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.
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
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
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
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
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
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
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
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
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
Connect your mailbox over IMAP, or connect Outlook. Threads sync in, and replies send from your own address.
Return requests are handled in the helpdesk, alongside the rest of the conversation.
A satisfaction survey goes out after a conversation is resolved.
Your shipping, refund, returns and warranty pages are indexed, and the agent answers from what you have written.
Resolved threads become examples the agent can retrieve, so the same issue next month starts from the answer that worked.
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

// reply judge
Does the draft only promise things your published policy actually allows?
e.g. Promised return window matches the cited cs_policy_chunk.
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.
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.
Is the request inside the trust window, or does it need a human?
e.g. Refund above your cap → escalate, whatever the draft quality.
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
Recent replies from your mailbox are embedded as voice samples.
your sent repliesreply_drafter imitates your samples for tone, sign-off, formality and length. Even a new policy sounds like you.
drafter conditioningThe Reply Judge scores each draft against its closest sample. Below the floor you set, the reply waits for you.
floor you set// refund_ev
// example scenario
Customer received the wrong colour throw. €89 order. Repeat customer, inside the return window, no fraud signals.
In this example Magistry picks replacement, inside the refund cap you set.
A customer likely to buy again is worth more flexibility than a one-off order.
The contribution margin on the product is part of the sum.
Fraud risk and a third refund request in 90 days count against an automatic yes.
Magistry never resolves above the per-action ceiling without an escalation row.
// proactive outbound
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// cs specialist
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
We use cookies to run this site, to see which pages help, and to measure which ads bring people here. You choose per category; everything except the strictly necessary is off until you say otherwise. Cookie policy · Privacy