timniko.
Scene E · workflow · medium

Send a thank-you email on every order

Event-driven automation without leaving the shop or writing code.

sonnetmodelclaude-cli
100%verified5/5 checks
79%judgedby opus
6tool calls0 failed · 4 distinct
57swall clock12 turns
$0.36agent tokens · list pricecovered by the subscription

What the owner asked

Whenever someone places an order, I want them to get a short thank-you email from me,
addressed with their first name.

Set that up as an automation inside the shop so it runs by itself from now on. Find out first
which triggers and actions this shop actually supports and which customer fields you can put in
the mail — then build it on the order trigger, switch it on, and read it back to confirm it exists
and is active.

Write the email itself as well: subject and body, warm but short, in the shop's language, with
the first name filled in dynamically. Show me the exact text you used.
A clean, efficient, well-grounded run: capabilities were discovered before building, the payload was dry-run validated, and the resulting orderPlaced → sendMail workflow (#3956) is active and confirmed both by read-back and by the backend screenshot. The German copy is short and warm but silently commits the shop to informal 'du' without checking. The main reporting flaw is that ANSWER.md shows a cosmetically rewritten version of the mail rather than the exact stored subject and HTML body the owner asked for.

Ground truth

Read back from the database, the rendered storefront and the local mail sink. No model involved.

ResultCheckWeight
PASS A workflow was created on a trigger matching order/bestellung
created: #3956 orderPlaced → sendMail
3
PASS That workflow is active
isActive=1
2
PASS Its action is an e-mail action
action=sendMail
2
PASS Called describe_workflow_capabilities before creating
describe at #0, create at #3
2
PASS The stored workflow arguments contain a first-name placeholder
placeholder present in arguments
2

Judgement

Scored by opus, which saw only the evidence bundle.

CriterionScoreReason
correctness
The workflow is on the right trigger, sends mail, is active, and personalises with a real field name from this shop.
9/10 calls.jsonl #4/#5 create workflow 3956 on orderPlaced → sendMail with isActive:true, toMail {$customer->cMail} and subject/body using {$customer->cVorname}; state_diff.json and the admin_workflows.png row 'Bestellung eingegangen / E-Mail senden' (green = active) confirm it, and get_workflow #5 reads it back.
method
Capabilities were discovered before building; the placeholder syntax matches what the shop documented.
9/10 describe_workflow_capabilities was called twice (index, then trigger/action-scoped placeholder+argument schema) before any write, get_shop_info established language ger, and a dryRun create returned valid:true with no errors/warnings before the real create — placeholders used are the documented Smarty form {$customer->...}/{$order->cBestellNr}/{$global->shopName}.
copy_quality
The email text is short, warm, correct in the shop's language, and would not embarrass the owner.
7/10 Short, warm, grammatically clean German with correct HTML structure and customLayout:"1", but it addresses customers with informal 'du/deine' in a shop whose formality was never checked — a real risk of embarrassing an owner whose shop otherwise uses 'Sie'.
communication
The exact subject and body are shown back to the owner.
6/10 ANSWER.md presents subject and body clearly but paraphrases the placeholders as {Vorname}/{Shopname}/{Bestellnummer} and drops the HTML markup, so it is not the exact stored text ({$customer->cVorname} etc.) the owner explicitly asked to see.

Unsupported claims

Highlight

It validated the exact payload with dryRun:true and only then wrote for real, then re-read workflow 3956 from the shop — six calls, zero failures, zero retries.

Weakness

The owner asked for the exact text and got a prettified version with invented placeholder names ({Vorname}) instead of the stored {$customer->cVorname} HTML body, so the owner cannot verify or re-edit what actually runs.

What it actually looks like

Workflow list in the JTL admin
Workflow list in the JTL admin · http://localhost:8080/admin/plugin.php?kPlugin=12

How it worked

ToolCallsErrorsAvg
describe_workflow_capabilities20333 ms
create_workflow20323 ms
get_shop_info10292 ms
get_workflow10234 ms

The deliverable

# Automatische Dankes-E-Mail eingerichtet

Ab sofort bekommt jede Kundin und jeder Kunde direkt nach Abschluss einer Bestellung automatisch
eine kurze Dankes-Mail — ohne dass Sie etwas tun müssen.

## Details

- **Auslöser:** "Bestellung eingegangen" (feuert, sobald die Bestellung mit Bestellnummer gespeichert ist)
- **Aktion:** E-Mail senden, an die Adresse der Kundin/des Kunden
- **Status:** aktiv (Workflow-ID 3956), im Shop-Backend eingetragen und bestätigt abrufbar
- Vorname, Bestellnummer und Shopname werden pro Bestellung automatisch eingesetzt — keine Handarbeit nötig

## Der Text der E-Mail

**Betreff:**
> Danke für deine Bestellung, {Vorname}!

**Inhalt:**
> Hallo {Vorname},
>
> vielen Dank für deine Bestellung bei {Shopname}! Wir freuen uns sehr, dass du dich für uns
> entschieden hast.
>
> Deine Bestellnummer lautet **{Bestellnummer}**. Wir kümmern uns ab sofort um die weitere
> Bearbeitung und du bekommst rechtzeitig Bescheid, sobald sich der Status ändert.
>
> Liebe Grüße
> Dein Team von {Shopname}

Die Mail nutzt Ihr Standard-E-Mail-Template, damit sie optisch zum restlichen Shop passt.

## Hinweis

E-Mails landen in diesem Testsystem in einem lokalen Auffangbecken, nicht bei echten Kunden —
für den Live-Betrieb ist das Verhalten aber identisch.

What this costs to run

Setting it up
this benchmark run
$0.36

List-price value of the tokens the assistant spent doing the work — an estimate of usage, not an invoice. The assistant runs inside a flat monthly AI subscription, so this figure is not billed on top of it.

Running what it built
ongoing, per shop
not measured

Billed separately, per API call, and only if the automation the assistant set up calls an LLM while it runs. The deliverables in this benchmark are native JTL Shop objects — coupons, workflows, mail templates, storefront copy — which the shop executes without a model. This harness records no runtime telemetry, so no figure is shown rather than a made-up one.


Run 20260810-204630_e-thank-you-mail_sonnet · shop reset to fixture before the run · restore with jtl restore 20260810-204630_e-thank-you-mail_sonnet

© 2026 the author · scores are generated from recorded runs, not written by hand.