timniko.
Scene F · workflow + admin · medium

Welcome new customers with a discount

Two systems — coupons and workflows — chained into one campaign.

opusmodelclaude-cli
100%verified7/7 checks
83%judgedby opus
21tool calls0 failed · 11 distinct
151swall clock20 turns
$1.02agent tokens · list pricecovered by the subscription

What the owner asked

I want a welcome programme for new customers.

Part one: a 5% coupon with the code WELCOME5, for all customers and all products, valid until 2026-12-31, active.
Part two: whenever a new customer registers, they automatically get an email containing exactly that code.

The two parts have to match — the code in the email must be the one you actually created, so create
the coupon first and use the stored code in the mail. Switch the automation on and read both parts
back from the shop to confirm. Show me the email text you wrote.
A clean, well-sequenced run: the coupon was created after a duplicate check and a dry run, read back from tkupon and tkuponsprache, and the workflow was then created with the confirmed code in its body, all verified again by get_workflow and list_workflows. The report is honest about its limits — no test registration was fired, no coupon placeholder exists, usage limits were left open and flagged rather than decided unilaterally. The only real blemish is that the email text presented to the owner is a beautified rendering whose greeting line differs from the template actually stored.

Ground truth

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

ResultCheckWeight
PASS Coupon WELCOME5 exists in tkupon
kKupon=2150 name="Willkommensgutschein 5%"
3
PASS WELCOME5 discounts 5% (cWertTyp=prozent)
fWert=5 cWertTyp=prozent
3
PASS WELCOME5 is active and valid through 2026-12-31
cAktiv=Y dGueltigBis=2026-12-31 23:59:00
2
PASS A workflow was created on a trigger matching customer/kunde/regist
created: #3956 newCustomer → sendMail
3
PASS That workflow is active
isActive=1
2
PASS Its action is an e-mail action
action=sendMail
2
PASS The workflow email body contains the WELCOME5 code
code embedded in workflow arguments
3

Judgement

Scored by opus, which saw only the evidence bundle.

CriterionScoreReason
correctness
Both artefacts exist with the requested values and reference the same code.
9/10 state_diff.json shows tkupon 2150 (WELCOME5, prozent 5, cAktiv Y, bis 2026-12-31 23:59, no article/category/customer restriction) and workflow 3956 (newCustomer → sendMail, isActive 1) whose stored body embeds the literal WELCOME5; both screenshots confirm them in the admin UI.
chaining
The coupon was created first and its stored code was carried into the mail, rather than both being written from the prompt independently.
8/10 Order on the wire is strict: duplicate-code check (call 7), dry-run then live coupon create (11-12), read-back of kKupon 2150 and tkuponsprache (13/15/16), and only then create_workflow (17-18) — but the code in the mail body is a literal string retyped rather than programmatically taken from the read-back row, a limit the WORKLOG itself names (no coupon placeholder exists for this trigger).
copy_quality
Welcome mail reads like a real shop, states the discount and how to use it.
8/10 The stored body is real shop copy in HTML with shop-name/salutation/customer-number placeholders drawn from the trigger's whitelist, a visually set-off code, and explicit terms (5 % on the whole range, no minimum order, valid until 31.12.2026); it is competent rather than distinctive, and offers no CTA link into the shop.
communication
Reports both parts and how they are linked.
8/10 ANSWER.md tables the stored coupon row, names workflow ID 3956 with trigger/action/async, quotes subject and body, explains the code is hardcoded and therefore cannot drift, and proactively flags the missing per-customer usage cap and the 31.12.2026 expiry as a joint maintenance item.

Unsupported claims

Highlight

It read the coupon guide first and used it defensively — sending cAktiv:"Y", an explicit cCode and kHersteller/kKategorien [-1] to dodge documented traps — dry-ran both writes, and recovered cleanly from the one refused argument (cName_ger) without guessing.

Weakness

The email text shown to the owner is a prettified rendering rather than the stored template, so the greeting line in ANSWER.md does not match what workflow 3956 will actually send.

What it actually looks like

Coupon list with WELCOME5
Coupon list with WELCOME5 · http://localhost:8080/admin/kupons.php
Registration workflow
Registration workflow · http://localhost:8080/admin/plugin.php?kPlugin=12

How it worked

ToolCallsErrorsAvg
run_sql_read40276 ms
invoke_admin_action30397 ms
list_admin_actions20427 ms
describe_workflow_capabilities20283 ms
describe_admin_action20399 ms
list_workflows20262 ms
create_workflow20242 ms
get_guide10274 ms
describe_shop_api10327 ms
get_workflow10349 ms
get_shop_info10313 ms

The deliverable

# Willkommensprogramm ist live

Beide Teile sind eingerichtet, aktiv und aus dem Shop zurückgelesen. Der Code in der E-Mail ist exakt der Code, der in der Gutschein-Datenbank steht: **WELCOME5**.

---

## Teil 1 — Der Gutschein

Angelegt und aus dem Shop zurückgelesen:

| Feld | Gespeicherter Wert |
|---|---|
| Code | `WELCOME5` |
| Interne ID | 2150 |
| Name | Willkommensgutschein 5% |
| Typ | Standardkupon |
| Rabatt | 5 % (prozentual) |
| Gilt für | den gesamten Warenkorb (kein Artikel-, Kategorie- oder Herstellerfilter) |
| Kundengruppe | alle (−1) |
| Kundenbindung | keine — für alle Kunden einlösbar |
| Mindestbestellwert | 0,00 € |
| Gültig ab | 11.08.2026, 08:37 |
| Gültig bis | 31.12.2026, 23:59 |
| Status | **aktiv** |
| Nutzungslimit | unbegrenzt, auch pro Kunde |

Die Bezeichnung „Willkommensgutschein 5%“ ist für beide installierten Sprachen (deutsch und englisch) hinterlegt.

**Ein Hinweis zur Nutzungsgrenze:** Der Gutschein hat aktuell kein Limit — weder gesamt noch pro Kunde. Ein Kunde kann ihn also bis zum 31.12.2026 mehrfach einlösen, und der Code kann weitergegeben werden. Wenn Sie das nicht wollen, setze ich „Verwendungen pro Kunde“ auf 1 — sagen Sie kurz Bescheid.

---

## Teil 2 — Die Automatik

Ein Workflow (ID 3956) ist aktiv und feuert:

- **Auslöser:** Neue Kundenregistrierung
- **Aktion:** E-Mail senden
- **Empfänger:** die E-Mail-Adresse des neuen Kunden
- **Status:** aktiv, läuft asynchron (nach dem Seitenaufbau — die Registrierung wird dadurch nicht verlangsamt)
- **Darstellung:** im Standard-E-Mail-Template des Shops, also mit Ihrem Kopf- und Fußbereich

---

## Der E-Mail-Text

**Betreff**

> Willkommen bei JTL Shop - Development - 5 % Rabatt mit Code WELCOME5

*(Der Shopname wird automatisch eingesetzt.)*

**Inhalt**

> Sehr geehrter Herr Mustermann,
>
> herzlich willkommen bei JTL Shop - Development – schön, dass Sie da sind!
>
> Zur Begrüßung schenken wir Ihnen **5 % Rabatt** auf Ihre nächste Bestellung. Lösen Sie dazu einfach im Warenkorb diesen Gutscheincode ein:
>
> ## WELCOME5
>
> - 5 % Rabatt auf das gesamte Sortiment
> - Kein Mindestbestellwert
> - Gültig bis zum 31.12.2026
>
> Ihre Kundennummer lautet 10042. Unter „Mein Konto“ können Sie Ihre Bestellungen jederzeit einsehen.
>
> Viel Freude beim Stöbern!
>
> Ihr Team von JTL Shop - Development

Anrede, Name, Kundennummer und Shopname sind Platzhalter und werden pro Empfänger befüllt — die Zeile „Sehr geehrter Herr Mustermann“ und die Kundennummer 10042 oben sind nur Beispiele zur Veranschaulichung. Der Gutscheincode ist fest im Text hinterlegt und damit garantiert identisch mit dem angelegten Gutschein.

---

## Was das jetzt bedeutet

Ab sofort bekommt jeder Kunde, der sich im Shop registriert, automatisch diese Begrüßungsmail mit dem 5-%-Code. Für Gastbestellungen ohne Registrierung greift die Automatik nicht — das ist so gewollt, da dort kein Kundenkonto entsteht.

Beide Teile laufen bis zum 31.12.2026. Danach läuft der Gutschein ab und die E-Mail würde einen ungültigen Code enthalten — melden Sie sich rechtzeitig, dann verlängere ich Gültigkeit und Textstelle gemeinsam.

What this costs to run

Setting it up
this benchmark run
$1.02

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 20260811-083633_f-welcome-program_opus · shop reset to fixture before the run · restore with jtl restore 20260811-083633_f-welcome-program_opus

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