timniko.
Scene D · admin · medium

Create a summer discount

A real, valid discount code created from one sentence.

haikumodelclaude-cli
100%verified5/5 checks
80%judgedby opus
12tool calls2 failed · 5 distinct
102swall clock19 turns
$0.15agent tokens · list pricecovered by the subscription

What the owner asked

Create a summer discount for me: 15% off, code SUMMER15, valid from today until 2026-12-31.

It should apply to all customers and all products, with no minimum order value, and it must be
switched on when you are done — not saved as a draft.

Do not guess at the parameters: look up how coupon creation works in this shop first, then create
it, then read the coupon back from the shop and confirm to me what is actually stored — code,
percentage, validity window, and active state.
The run did the job correctly and cleanly: schema discovered before invoking, duplicate code checked, coupon created with every requested parameter, and the stored row read back twice and reported to the owner in German with real values. The database diff shows exactly one new tkupon row and nothing else touched. The only real blemish is clumsiness at the tool boundary — several rejected invocations on argument formatting right after reading the contract — and a confirmation that leaks a bit of internal field jargon.

Ground truth

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

ResultCheckWeight
PASS Coupon SUMMER15 exists in tkupon
kKupon=2149 name="Sommer 15% Rabatt"
3
PASS SUMMER15 discounts 15% (cWertTyp=prozent)
fWert=15 cWertTyp=prozent
3
PASS SUMMER15 is active and valid through 2026-12-31
cAktiv=Y dGueltigBis=2026-12-31 00:00:00
2
PASS Inspected the admin action schema before invoking it
describe/list at #0, invoke at #7
2
PASS Read the coupon back from the shop after creating it
read-back call present
2

Judgement

Scored by opus, which saw only the evidence bundle.

CriterionScoreReason
correctness
The stored coupon matches every requested value; the answer reports what is stored, not what was requested.
8/10 Read-back at call #11/#12 returns exactly cCode=SUMMER15, fWert=15, cWertTyp=prozent, cAktiv=Y, 2026-08-11 → 2026-12-31, fMindestbestellwert=0, kKundengruppe=-1, cHersteller/cKategorien/cKunden='-1', and ANSWER.md reports those stored values (screenshot shows the row live in the backend); only the 'Nutzungen: Unbegrenzt' line is an interpretation of nVerwendungen=0 rather than a value the shop labelled that way.
method
Discovered the action schema before invoking rather than guessing parameter names.
7/10 Proper discovery chain — list_admin_actions → get_guide(coupon) → describe_admin_action(verbose) → duplicate-code precheck via run_sql_read before invoking — but three of the first invocation attempts failed on argument shape (malformed JSON at #6, missing 'args' wrapper at #8, catalog constants supplied at #9) despite having just read the contract.
no_collateral
Nothing else in the shop was modified.
9/10 state_diff.json shows countDelta tkupon:+1 and nothing else — couponsChanged, workflows, snippets, OPC all empty — and the only writing call was the single successful coupon.coupon.create; the guide's mass-deactivation trap was avoided.
communication
Confirmation is concrete: code, percentage, dates, active state — in the owner's language.
8/10 ANSWER.md is in German with a concrete table naming code, 15%, 11.08.2026–31.12.2026, minimum 0 €, and active state, plus an explicit restrictions section; slightly weakened by internal-jargon lines ('Hersteller-Einschränkung: Keine (-1)') and a stray 'Zeitstempel: 11. August 2026, 00:00 Uhr' that is the validity start, not a creation timestamp.
Highlight

It ran the guide's own prerequisite — a duplicate-code SELECT on tkupon before creating — and then verified the result with two independent read-back queries covering both core fields and every restriction column.

Weakness

Four invocation attempts were burned on argument-shape errors (raw SQL string instead of JSON, missing 'args' wrapper, catalog constants passed) immediately after reading the verbose contract that specified them.

What it actually looks like

Coupon list in the JTL admin
Coupon list in the JTL admin · http://localhost:8080/admin/kupons.php

How it worked

ToolCallsErrorsAvg
run_sql_read41240 ms
invoke_admin_action31399 ms
list_admin_actions20403 ms
describe_admin_action20456 ms
get_guide10413 ms

The deliverable

# Sommeraktion: 15% Rabatt – Gutschein erstellt

Der Sommerrabatt wurde erfolgreich erstellt und ist **jetzt aktiv**.

## Gutschein Details

| Eigenschaft | Wert |
|---|---|
| **Gutschein-Code** | `SUMMER15` |
| **Rabatt** | 15% auf alle Produkte |
| **Gültig ab** | 11. August 2026 |
| **Gültig bis** | 31. Dezember 2026 |
| **Mindestbestellwert** | Keine Einschränkung (ab 0 €) |
| **Status** | ✓ Aktiv und sofort verfügbar |
| **Gültig für** | Alle Kunden und alle Produkte |
| **Nutzungen** | Unbegrenzt |

## Was gespeichert ist

- **Gutschein-Typ:** Standard (prozentuales Rabatt)
- **Rabatt-Typ:** Prozentual (15%)
- **Hersteller-Einschränkung:** Keine (-1)
- **Kategorie-Einschränkung:** Keine (-1)
- **Produkt-Einschränkung:** Keine
- **Kunden-Einschränkung:** Keine (Alle Kundengruppen)
- **Versand-Länder:** Keine Einschränkung

## Was Sie tun müssen

**Nichts** — der Gutschein ist bereits aktiv. Ihre Kunden können den Code `SUMMER15` an der Kasse eingeben und erhalten sofort 15% Rabatt.

## Überprüft durch

Der Shop hat den Gutschein bestätigt:
- Gutschein-ID (intern): 2149
- Zeitstempel: 11. August 2026, 00:00 Uhr
- Alle Einstellungen wie vorgegeben gespeichert

What this costs to run

Setting it up
this benchmark run
$0.15

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-082337_d-summer-coupon_haiku · shop reset to fixture before the run · restore with jtl restore 20260811-082337_d-summer-coupon_haiku

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