How it works

Three tickets, start to finish.

As the prototype handled them on 24 July 2026: the trace, the reasoning and the reply, verbatim. The shop and the tickets are invented; what the agent did is not. The code has changed since, so a run today can be shorter.

NL-4422

A cancellation the policy permits

It said yes: the order can still be cancelled, so it proposed the cancellation and drafted the reply. No manager needed, because €74 is under the limit.

Receipt · NL-442224 Jul 2026

Cancel order NL-21001

Read
Order NL-21001 · not shipped · paid
Rule
Cancellation policy v2
Proposal
Cancel the order
Amount from the order
€74.00
Your limit
€100.00
Status
Draft ready
Confidence
0.92
Took
37 s

real run · 24 Jul 2026 · invented shop and tickets

The ticket, as it arrived

Hoi,

Ik heb net NL-21001 besteld maar ik zie dat ik de verkeerde kleur heb gekozen. Kan de bestelling geannuleerd worden? Dan bestel ik hem opnieuw.

Groet,
Lars

Translation

Hi,

I just ordered NL-21001 but I see I picked the wrong colour. Can the order be cancelled? Then I will order it again.

Regards,
Lars

The reasoning

Order NL-21001 is unfulfilled and contains no made-to-order items, so cancellation is permitted under cancellation v2. Proposed cancel with a €74 refund to original payment method. Request comes from the email on the order.

Verbatim.

The reply it wrote

Hoi Lars,

Dat kan. Je bestelling NL-21001 is nog niet verzonden, dus we kunnen hem annuleren. Ik heb een collega gevraagd de annulering door te voeren. Het betaalde bedrag van 74 euro komt binnen 5 werkdagen terug op je oorspronkelijke betaalmethode.

Zodra de annulering is bevestigd, kun je de bestelling in de juiste kleur opnieuw plaatsen. Wil je zeker weten dat de juiste kleur nog op voorraad is voordat je annuleert? Laat het gerust weten.

Groet,
Klantenservice De Kade
Hi Lars,

That is fine. Your order NL-21001 has not shipped yet, so we can cancel it. I have asked a colleague to process the cancellation. The €74 you paid will be back on your original payment method within 5 working days.

Once the cancellation is confirmed, you can place the order again in the right colour. Want to be sure the right colour is in stock before you cancel? Just let me know.

Regards,
Customer service, De Kade
Trace, NL-4422
TimeStepWhatContext
+00.00sTICKETNL-4422, Bestelling annulerenemail
+24.21sRETRIEVENL-21001: unfulfilled, stock onlycommerce
+24.21sPOLICYcancellation v2, address_change v3, returns v3policy
+29.48sPROPOSEcancel_order on NL-21001 (€74.00)awaiting approval
+36.68sDRAFTReply draftedconfidence 0.92
Verbatim from the system log.
NL-4421

An address change from the wrong person

It refused and handed the ticket to a person, because whoever is asking is not the person the order belongs to.

Receipt · NL-442124 Jul 2026

Address change for order NL-20903

Read
Order NL-20903 · not shipped · sender email does not match the order
Rule
Address change policy v3
Proposal
none
Your limit
€100.00
Status
Handed to your team
Confidence
0.90
Took
20 s

real run · 24 Jul 2026 · invented shop and tickets

The ticket, as it arrived

Goedemorgen,

Graag de bezorging van NL-20903 wijzigen naar Stationsplein 45, 3013 AK Rotterdam. Ik ben deze week niet thuis dus stuur hem daar maar heen.

Bedankt.

Translation

Good morning,

Please change the delivery of NL-20903 to Stationsplein 45, 3013 AK Rotterdam. I am not home this week so just send it there.

Thanks.

The reasoning

Order NL-20903 is unfulfilled so an address change would normally be allowed, but the request arrived from e.smit.deliveries@example.com while the order email is eva.smit@example.nl. address_change v3 requires the request to come from the order’s email and flags mismatched-address requests as the top fraud pattern, so this needs human verification before any change is proposed.

Verbatim.

The reply it wrote

Goedemorgen,

Bedankt voor uw bericht. We willen de bezorging van bestelling NL-20903 graag voor u aanpassen, maar we zien dat dit verzoek van een ander e-mailadres komt dan het adres dat aan de bestelling gekoppeld is. Om de bestelling te beschermen kunnen we een adreswijziging alleen doorvoeren als het verzoek van het e-mailadres van de bestelling zelf komt.

Zou u ons daarom een bevestiging kunnen sturen vanaf het e-mailadres waarmee de bestelling is geplaatst? Zodra we die hebben ontvangen, passen we het bezorgadres direct voor u aan. De bestelling is nog niet verzonden, dus een wijziging is op dit moment goed mogelijk.

Met vriendelijke groet,
Klantenservice De Kade
Good morning,

Thank you for your message. We would be happy to change the delivery of order NL-20903 for you, but we can see this request comes from a different email address than the one linked to the order. To protect the order, we can only make an address change if the request comes from the order’s own email address.

Could you send us a confirmation from the email address the order was placed with? As soon as we have it, we will update the delivery address right away. The order has not shipped yet, so a change is very possible at this point.

Kind regards,
Customer service, De Kade
Trace, NL-4421
TimeStepWhatContext
+00.00sTICKETNL-4421, Adreswijziging bestelling NL-20903email
+01.82sFIND1 order(s) for NL-20903commerce
+05.58sRETRIEVENL-20903: unfulfilled, placed 2 days agocommerce
+05.58sPOLICYaddress_change v3, returns v3, cancellation v2policy
+19.55sESCALATESender email does not match the order emailconfidence 0.90
Verbatim from the system log.
NL-4425

A refund over the limit

The refund is legitimate, but €180 is above the limit. Nothing moves until a person approves. This is the case the home page is about.

Receipt · NL-442524 Jul 2026

Broken floor lamp, money back

Read
Order NL-20880 · shipped · paid
Rule
Returns policy v3, refunds policy v4
Proposal
Start a return, then refund
Amount from the order
€180.00
Your limit
€100.00
Status
Needs you
Confidence
0.83
Took
33 s

real run · 24 Jul 2026 · invented shop and tickets

The ticket, as it arrived

Beste,

De vloerlamp uit bestelling NL-20880 doet het niet. Ik heb twee verschillende lampjes geprobeerd en er komt geen stroom op. Ik wil graag mijn geld terug in plaats van een nieuwe, want ik heb inmiddels iets anders gekocht.

Met vriendelijke groet,
Ines De Wit

Translation

Dear team,

The floor lamp from order NL-20880 does not work. I have tried two different bulbs and it gets no power. I would like my money back instead of a replacement, as I have since bought something else.

Kind regards,
Ines De Wit

The reasoning

Faulty stock item (brass floor lamp, €180) within the 30-day return window; returns v3 permits return of a faulty item and refunds v4 allows refund to the original payment method. The €180 refund exceeds the €100 threshold, so a manager must approve the proposed return/refund before it proceeds.

Verbatim.

The reply it wrote

Beste mevrouw De Wit,

Wat vervelend dat de vloerlamp uit bestelling NL-20880 geen stroom krijgt, ook niet na het proberen van twee lampjes. Dat hoort natuurlijk niet.

Omdat de lamp defect is, regelen we een terugzending en daarna de terugbetaling van 180 euro op uw oorspronkelijke betaalmethode. De retourzending is gratis binnen Belgie. Ik heb een collega gevraagd dit in orde te maken en de retourinstructies naar u te sturen. Zodra we de lamp terug hebben ontvangen, zetten we het bedrag voor u klaar.

U hoeft geen nieuwe lamp te accepteren, we betalen u het bedrag terug zoals gevraagd.

Met vriendelijke groet,
Klantenservice De Kade
Dear Ms De Wit,

How annoying that the floor lamp from order NL-20880 is not getting power, even after trying two bulbs. That is not right, of course.

Because the lamp is defective, we will arrange a return and then the refund of €180 to your original payment method. Return shipping is free within Belgium. I have asked a colleague to sort this out and send you the return instructions. As soon as we have received the lamp back, we will have the amount ready for you.

You do not have to accept a new lamp; we will refund you as requested.

Kind regards,
Customer service, De Kade
Trace, NL-4425
TimeStepWhatContext
+00.00sTICKETNL-4425, Lamp werkt nietemail
+07.27sRETRIEVENL-20880: fulfilled, placed 14 days agocommerce
+07.27sPOLICYreturns v3, refunds v4, cancellation v2policy
+21.27sPROPOSEstart_return on NL-20880 (€180.00)over limit
+32.98sESCALATE€180 refund needs manager approvalconfidence 0.83
Verbatim from the system log.
In the console

The model says €41.20. The order says €412.00. The order wins.

An approval as your team sees it, with demo data. In this example the Model estimate line reads €41.20, ten times too low. Your limit is compared with the larger of the two figures, and that one comes from the order. At the top it says that carrying out actions is off in this version.

The console, an approval to refund order NL-20842. At the top, a notice that execution is off. The receipt shows €412.00 from the order, over the limit, status Waiting on you. Under the action, Model estimate EUR 41.20, marked as disagreeing with the server figure. On the right, the draft reply in Dutch.
From the console, with demo data from the test shop De Kade.
The ladder

Autonomy is earned a stage at a time.

Maximal does not arrive switched on. It sits on a ladder and you decide when it climbs. These are the stages as they are in the code.

  1. 0

    Shadow week

    Reads every ticket, decides and writes a draft. Posts nothing, anywhere. This is where you start.

  2. 1

    Draft

    Puts the draft in your helpdesk as an internal note. A person sends it.

  3. 2

    Replies on its own

    Sends replies itself to questions that need nothing changed, such as where a parcel is. Still no changes to your store.

  4. 3

    Proposes

    Proposes a refund, cancellation or return. A person approves, with the amount from the order beside it.

  5. 4

    Low risk on its own

    Carries out actions itself, inside your limit. Above it, a person still decides.

  6. 5

    Wider

    More autonomy, still inside your limit. Earned on your own numbers, never on by default.

Stages 4 and 5 have never been used: nothing has ever been carried out in this version. Most shops should expect months at stage 0 or 1, and some should stay there.

Your rules

Write your policy down. See what it changes.

You write your policy in sentences, not in a flowchart. Every version is kept, with who changed it and when, and every run records which version it read.

You can try a new version on last month’s tickets first: the simulation shows which decisions come out differently and what that would cost. It is a simulation and the screen says so. It has not yet run on a real shop’s history; the first shadow week is where it will.

What it got wrong

And what we learned from it.

From our own measurements on invented tickets. A real inbox comes with the first shadow week, and what it gets wrong there goes on the page at the end.

  1. 24 Jul 2026

    On the €180 broken lamp it chose a return first; our answer key expected a straight refund. The mistake was in our sample policy, which never said when a customer is entitled to a refund. The policy has been fixed.

  2. Jul 2026

    On a ticket about an order that does not exist it produced no decision in any run: markup leaked into two fields and the check rightly refused to build a decision from it. The fix is written and not yet applied.

  3. 15 Aug 2026

    On 161 invented tickets it scored 91 on whether it rightly handed over to a person, with noise of about 5 points. Three of the new ticket types turned out to be keyed wrong by us; on one of them it correctly refused a suspicious request we had marked as a failure.

Where it plugs in

It sits behind your helpdesk, not on your website.

Tested on a real account

  • ShopifyOrders, fulfilment and tracking, read-only
  • TrengoYour inbox, tickets, replies and notes
  • ChatwootYour inbox, tickets, replies and notes

Written, not yet tested live

  • WooCommerceOrders, fulfilment and tracking, read-only
  • ZendeskTickets, replies and internal notes
  • SendcloudParcel tracking

An integration moves to the left-hand list once it has run against a real account, not before. A vendor’s documentation says what an API is supposed to do; only connecting shows what it actually does.