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=2149 name="Willkommen 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 00:00: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 | Coupon kKupon=2149 WELCOME5 (prozent/5, cAktiv=Y, dGueltigBis=2026-12-31, kKundengruppe=-1, kKategorien/kHersteller=[-1]) and active async workflow 3956 newCustomer→sendMail both exist, and get_workflow (call 13) shows the body carrying the exact same code WELCOME5. | |
chainingThe coupon was created first and its stored code was carried into the mail, rather than both being written from the prompt independently. |
6/10 | Order was right — coupon created at 06:42:55 (call 5) before the workflow at 06:43:33 (call 9) — but the code in the mail body was typed from the prompt, not read out of tkupon: the run_sql_read readback (call 12) only happened after the workflow already existed, so the two artefacts were never truly wired through stored state. | |
copy_qualityWelcome mail reads like a real shop, states the discount and how to use it. |
7/10 | Real shop-grade German HTML mail with personalised {$customer->cVorname} greeting, bold code, explicit 5%/valid-until-31.12.2026 statement and a 4-step redemption list; marred by the typo "Geniße" (Genieße) and a generic unsigned {$global->shopName} sign-off. | |
communicationReports both parts and how they are linked. |
8/10 | ANSWER.md gives both parts as clean tables (coupon values; workflow 3956, trigger, action, active), prints the full email text as asked, and has an explicit 'How It Works' plus verification section naming WELCOME5 as the shared code. |
Every claim in ANSWER.md maps to a real tool call — the coupon values, the workflow id 3956 and the code inside the mail body were all read back from the shop (run_sql_read on tkupon, get_workflow 3956) before being reported.
The link between the two parts is asserted rather than built: the mail body was written from the prompt's WELCOME5 string and the coupon readback came only after the workflow was already saved, so nothing would have caught a shop-side code mismatch.
| Tool | Calls | Errors | Avg |
|---|---|---|---|
run_sql_read | 3 | 2 | 175 ms |
list_admin_actions | 2 | 0 | 408 ms |
invoke_admin_action | 2 | 1 | 510 ms |
describe_workflow_capabilities | 2 | 0 | 299 ms |
describe_admin_action | 1 | 0 | 406 ms |
list_workflows | 1 | 0 | 333 ms |
create_workflow | 1 | 0 | 321 ms |
get_workflow | 1 | 0 | 263 ms |
# Welcome Program - Setup Complete ## ✓ Part 1: Coupon Created The 5% welcome coupon has been created and is **active**. | Property | Value | |----------|-------| | **Code** | `WELCOME5` | | **Discount** | 5% | | **Applies to** | All customers, all products | | **Valid from** | Immediately | | **Valid until** | 2026-12-31 | | **Status** | Active ✓ | | **Type** | Standard coupon | ## ✓ Part 2: Automated Email for New Customers A workflow has been created and activated that sends an automated welcome email to every new customer upon registration. | Property | Value | |----------|-------| | **Workflow ID** | 3956 | | **Trigger** | New customer registration | | **Action** | Send email | | **Status** | Active ✓ | | **Execution** | Asynchronous (after page load) | | **Coupon code in email** | `WELCOME5` | ### Email Template **Subject:** Willkommen! Hier ist dein Rabattcode **Body:** --- Liebe/r [Kundenvorname], herzlich willkommen in unserem Online-Shop! Wir freuen uns, dich als neuen Kunden begrüßen zu dürfen. Um dir einen guten Start zu ermöglichen, haben wir einen exklusiven Rabattcode speziell für dich vorbereitet. **Rabattcode: WELCOME5** Mit diesem Code erhältst du **5% Rabatt** auf alle Produkte in unserem Shop. Der Code ist gültig bis zum 31.12.2026. **So einfach kannst du deinen Rabatt einlösen:** 1. Wähle deine gewünschten Produkte aus 2. Gehe zum Warenkorb 3. Gib den Code WELCOME5 beim Checkout ein 4. Geniße deinen Rabatt! Viel Spaß beim Einkaufen und falls du Fragen hast, stehen wir gerne zur Verfügung. Viele Grüße, dein [Shop-Name] Team --- ## How It Works 1. A new customer registers 2. The system detects the registration via the "newCustomer" trigger 3. An email is automatically sent with: - Customer's first name in the greeting - The coupon code **WELCOME5** - Clear instructions on how to use the code 4. Customer uses the code at checkout for 5% discount ## Verification Both components have been verified as active and correctly configured in the shop system: - Coupon `WELCOME5` confirmed in database: active, 5% discount, valid until 2026-12-31 - Workflow ID 3956 confirmed: active, fires on newCustomer trigger, uses sendMail action The welcome program is now live and will activate for all new customer registrations.
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.
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-084212_f-welcome-program_haiku · shop reset to fixture before the run · restore with jtl restore 20260811-084212_f-welcome-program_haiku
© 2026 the author · scores are generated from recorded runs, not written by hand.