Two systems — coupons and workflows — chained into one campaign.
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.
Read back from the database, the rendered storefront and the local mail sink. No model involved.
| Result | Check | Weight |
|---|---|---|
| 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 |
Scored by opus, which saw only the evidence bundle.
| Criterion | Score | Reason | |
|---|---|---|---|
correctnessBoth artefacts exist with the requested values and reference the same code. |
9/10 | state_diff.json shows tkupon 2150 WELCOME5 5% prozent cAktiv=Y bis 2026-12-31 23:59 with kKundengruppe=-1/cHersteller=-1/cKategorien=-1 and workflow 3956 newCustomer→sendMail isActive=1 carrying WELCOME5, both visible in admin_coupons.png and admin_workflows.png; only nit is the requested 23:59:59 being stored as 23:59:00 (shop-side truncation, reported correctly as 23:59). | |
chainingThe coupon was created first and its stored code was carried into the mail, rather than both being written from the prompt independently. |
8/10 | calls.jsonl order is unambiguous: coupon created at 09:58:55 (kKupon 2150), read back from tkupon WHERE cCode="WELCOME5" at 09:58:59, and only then create_workflow at 09:59:10 with the code in the body, plus get_workflow(3956) as a final readback — the dependency is real, though the code itself was also literally in the prompt so the link is procedural rather than forced. | |
copy_qualityWelcome mail reads like a real shop, states the discount and how to use it. |
7/10 | The German mail greets by name, names the 5% benefit, lists validity to 31.12.2026 and "gültig für alle Produkte", and tells the customer to enter the code at checkout with a {$global->shopName} sign-off — competent but plain HTML-only, no minimum-order/one-per-customer note and no plain-text part. | |
communicationReports both parts and how they are linked. |
8/10 | ANSWER.md splits the report into coupon (ID 2150, all fields), automation (workflow 3956, trigger, action, recipient placeholders), full subject and body, and a section 3 stating both were re-read from tkupon and the workflow engine — every stated fact matches a tool result; only a typo ("einlöser") and the absence of any caveat about the 23:59:59→23:59:00 shift keep it off 9. |
It hit the kKundengruppe=-1 validator rejection, checked how existing coupons store that field, and proved -1 works with a dryRun invoke before writing for real — a diagnosis rather than a guess.
Five near-identical get_guide("coupon") calls and a run_sql_read invoked with the wrong argument name show sloppy tool handling (2 of 22 calls failed, 4 exact repeats), and the mail copy stays generic with no redemption caveats.
| Tool | Calls | Errors | Avg |
|---|---|---|---|
get_guide | 5 | 0 | 303 ms |
run_sql_read | 5 | 2 | 218 ms |
list_admin_actions | 2 | 0 | 413 ms |
invoke_admin_action | 2 | 0 | 425 ms |
describe_workflow_capabilities | 2 | 0 | 286 ms |
create_workflow | 2 | 0 | 288 ms |
describe_admin_action | 1 | 0 | 379 ms |
validate_admin_action | 1 | 0 | 471 ms |
list_workflows | 1 | 0 | 275 ms |
get_workflow | 1 | 0 | 262 ms |
# Einrichtungsbericht: Willkommensprogramm für Neukunden
Das Willkommensprogramm für Ihren JTL Shop wurde erfolgreich eingerichtet und aktiviert. Neue Kundinnen und Kunden erhalten ab sofort direkt nach der Registrierung automatisch einen 5%-Gutscheincode per E-Mail.
---
## 1. Erstellter Willkommens-Gutschein
Der Rabattgutschein wurde im Shop-System angelegt und ist sofort einlöser.
* **Gutscheincode:** `WELCOME5`
* **Bezeichnung:** Willkommensgutschein 5%
* **Rabattwert:** 5% (prozentual)
* **Mindestbestellwert:** 0,00 €
* **Gültigkeitszeitraum:** Ab sofort (11.08.2026) bis 31.12.2026, 23:59 Uhr
* **Gültigkeitsbereich:** Alle Kundengruppen, alle Kategorien und alle Hersteller (keine Produkteinschränkungen)
* **Status:** Aktiv (`Y`)
* **Interne Gutschein-ID:** `2150`
---
## 2. Automatisierter E-Mail-Versand (Neukunden-Registrierung)
Eine Automatisierung für das Ereignis „Neue Kundenregistrierung“ wurde eingerichtet und eingeschaltet.
* **Auslöser:** Neue Kundenregistrierung (`newCustomer`)
* **Aktion:** E-Mail versenden (`sendMail`)
* **Status:** Aktiviert und betriebsbereit (`fires: true`)
* **Workflow-ID:** `3956`
* **Empfänger:** `{$customer->cMail}`
* **Empfänger-Name:** `{$customer->cVorname} {$customer->cNachname}`
### E-Mail-Betreff
`Willkommen bei uns! Ihr 5% Willkommensgutschein WELCOME5`
### E-Mail-Text (Inhalt)
```html
<p>Hallo {$customer->cVorname} {$customer->cNachname},</p>
<p>vielen Dank für Ihre Registrierung und herzlich willkommen in unserem Shop!</p>
<p>Als kleines Begrüßungsgeschenk schenken wir Ihnen einen Rabattgutschein von 5% auf Ihren nächsten Einkauf.</p>
<p><strong>Ihr Gutscheincode: WELCOME5</strong></p>
<p>Details zum Gutschein:</p>
<ul>
<li>Rabatt: 5%</li>
<li>Gültig bis: 31.12.2026</li>
<li>Gültig für alle Produkte</li>
</ul>
<p>Geben Sie den Code einfach während des Bestellvorgangs ein.</p>
<p>Viel Spaß beim Stöbern!</p>
<p>Mit freundlichen Grüßen,<br>{$global->shopName}</p>
```
---
## 3. Bestätigung des System-Zustands
Beide Teile des Willkommensprogramms wurden nach der Erstellung direkt aus der Shop-Datenbank und der Workflow-Engine ausgelesen und verifiziert:
1. Der Gutschein `WELCOME5` existiert in der Tabelle `tkupon` mit Status `Y` und Ablaufdatum `2026-12-31 23:59:00`.
2. Der Workflow `3956` verweist exakt auf den Gutscheincode `WELCOME5` und ist im Shop aktiv geschaltet.
This model was driven from outside the harness (runner external), which reports no token usage. Its work is likewise covered by that tool's own subscription.
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-115754_f-welcome-program_gemini-flash · shop reset to fixture before the run · restore with jtl restore 20260811-115754_f-welcome-program_gemini-flash
© 2026 the author · scores are generated from recorded runs, not written by hand.