Tasks / Metrics & Experimentation

Experiment specification

Can the model design a test that could actually change the decision?

Task type v1.0 · 2 tasksLast changed 6 Oct 2026 · ChangelogDifficulty

What AI gets right here, and what you’ll still have to catch

From 18 graded outputs by 9 models. 28% were usable with at most a quick edit.

Reliably right

  1. Randomises by user100% pass
    Randomises by logged-in user ID across platforms, explicitly citing cross-platform usage and session non-independence.
    Sonnet 5.5 · API · Show the fee sooner
  2. Works around the calendar94% pass
    Addresses both the payments test and the Black Friday freeze, proposes concurrent independent assignment with an interaction check, and avoids a one-week squeeze.
    Sonnet 5.5 · API · Show the fee sooner
  3. Tests one change at a time89% pass
    The free-delivery banner is explicitly excluded from the variant, with an explanation that bundling would prevent attribution, and a separate test is proposed.
    Sonnet 5.5 · API · Showing the delivery fee up front

Where it slips

  1. Says why a test is worth it here42% pass
    The output does not explain why this decision merits a test given the traffic and stakes, nor does it recommend a cheaper alternative.
    Opus 5.5 · Claude · Show the fee sooner
  2. Guardrails with thresholds56% pass
    Guardrail metrics are named but lack explicit numeric thresholds; 'materially worse' and 'drops meaningfully' are too vague to block rollout without further definition.
    Sonnet 5.5 · API · Showing the delivery fee up front
  3. Doesn't let the metric flatter the change61% pass
    The primary metric is from basket entry and explains why last-step completion misleads, but it does not include a basket drop-off guardrail with a threshold to block rollout.
    GPT-6 Astra · ChatGPT · Show the fee sooner

How it’s graded

Each check is built on how world-class product and growth leaders do this work, as they’ve described it on Lenny’s Podcast, and names the leader it comes from.

  1. An unambiguous primary metric

    Does the spec name one primary metric, explain why an increase is unambiguously good for the user and the business, and say how the result's trustworthiness will be checked?

    Passes when One primary metric with a clear rationale for its direction, plus a planned trust check such as a sample ratio check.

  2. Decision rule written before the test

    Does the spec say, before the test runs, which result leads to which action (ship, don't ship, iterate), including what happens if the result is inconclusive?

    Passes when Every outcome, including an inconclusive one, maps to a stated action, with the thresholds that separate them.

  3. Sized from the real traffic

    Is the sample size and duration worked out from the supplied traffic, baseline and smallest effect worth detecting, run in full weekly cycles?

    Passes when Sample size follows from the baseline and the smallest effect worth acting on, the duration follows from the traffic the brief gives (including how units accumulate), and it runs whole weeks.

  4. Guardrails with thresholds

    Does the spec name the guardrail metrics that would stop a rollout even if the primary metric wins, each with a threshold?

    Passes when The guardrails that matter for this change are named, each with a threshold that would block the rollout.

  5. Says why a test is worth it here

    Does the spec weigh whether a test is worth running here: enough traffic to detect an effect that matters, and a decision the result would actually change, and does it say what it would do instead if not?

    Passes when Explains why this decision merits a test given the traffic and stakes, or recommends a cheaper route where they don't.

Plus our standard checks

Uses the supplied evidence correctly · Addresses the actual decision · Respects explicit constraints · Identifies material uncertainty · Avoids unsupported claims · Produces the required deliverable · and 3 written for each task, which you’ll see in the tasks below.

The tasks

Read the brief, then compare up to three outputs, each with the LLM judge’s verdict on every check. Highlights mark what a PM had to fix.

The brief

You're the PM for checkout at Waymark. Write the experiment spec for the idea below, in no more than 900 words: hypothesis, what's randomised and how, metrics (primary, secondary, guardrails), sample size and duration worked out from our real traffic, when it can run given the calendar, and the decision rule. Show your sums.\n\nThe files are attached.

What the model was given5 items: About Waymark, the_idea.md, checkout_traffic_last_8_weeks.csv (daily, by platform), who_checks_out.md, experiment_calendar.md
About WaymarkOnline groceries, ordered on the app or the website, delivered the next day.
the_idea.md3 lines · Download
# The idea (from the checkout squad)

Show the delivery date and the delivery fee on the basket page, before checkout, instead of on the final checkout step. Hypothesis: fewer people abandon at the last step when they see the fee, and more complete checkout. Risk: some people may leave earlier when they see the fee sooner.
checkout_traffic_last_8_weeks.csv (daily, by platform)date,weekday,platform,checkout_sessions,orders 2026-08-10,Mon,app,23970,1755 2026-08-10,Mon,web,16794,894 2026-08-11,Tue,app,23130,1691 2026-08-11,Tue,web,17534,943 2026-08-12,Wed,app,23807,1689 2026-08-12,Wed,web,16732,906 2026-08-13,Thu,app,23420,1673 2026-08-13,Thu,web,16871,900 2026-08-14,Fri,app,23082,1664 2026-08-14,Fri,web,17728,943 2026-08-15,Sat,app,15784,1039 2026-08-15,Sat,web,11893,600 2026-08-16,Sun,app,15784,1045 2026-08-16,Sun,web,11908,594 2026-08-17,Mon,app,23929,1725 2026-08-17,Mon,web,17584,947 2026-08-18,Tue,app,23133,1674 2026-08-18,Tue,web,17005,935 2026-08-19,Wed,app,23486,1661 2026-08-19,Wed,web,16706,912 2026-08-20,Thu,app,23242,1641 2026-08-20,Thu,web,17473,937 2026-08-21,Fri,app,23435,1719 2026-08-21,Fri,web,17242,946 2026-08-22,Sat,app,16371,1080 2026-08-22,Sat,web,12039,601 2026-08-23,Sun,app,16578,1081 2026-08-23,Sun,web,12044,602 2026-08-24,Mon,app,23475,1663 2026-08-24,Mon,web,17130,916 2026-08-25,Tue,app,23409,1669 2026-08-25,Tue,web,17304,918 2026-08-26,Wed,app,23406,1671 2026-08-26,Wed,web,17152,912 2026-08-27,Thu,app,23921,1724 2026-08-27,Thu,web,16846,915 2026-08-28,Fri,app,24224,1712 2026-08-28,Fri,web,17541,963 2026-08-29,Sat,app,16489,1113 2026-08-29,Sat,web,11921,602 2026-08-30,Sun,app,16065,1080 2026-08-30,Sun,web,11484,570 2026-08-31,Mon,app,23827,1748 2026-08-31,Mon,web,17352,951 2026-09-01,Tue,app,24029,1751 2026-09-01,Tue,web,16781,901 2026-09-02,Wed,app,24327,1766 2026-09-02,Wed,web,16949,908 2026-09-03,Thu,app,23853,1723 2026-09-03,Thu,web,17094,914 2026-09-04,Fri,app,24099,1745 2026-09-04,Fri,web,17509,960 2026-09-05,Sat,app,16493,1114 2026-09-05,Sat,web,11610,575 2026-09-06,Sun,app,16571,1109 2026-09-06,Sun,web,11899,598 2026-09-07,Mon,app,23179,1696 2026-09-07,Mon,web,16836,897 2026-09-08,Tue,app,23301,1689 2026-09-08,Tue,web,17187,937 2026-09-09,Wed,app,24344,1745 2026-09-09,Wed,web,17418,953 2026-09-10,Thu,app,23256,1691 2026-09-10,Thu,web,17123,933 2026-09-11,Fri,app,23911,1693 2026-09-11,Fri,web,17576,961 2026-09-12,Sat,app,16328,1099 2026-09-12,Sat,web,12082,609 2026-09-13,Sun,app,15784,1051 2026-09-13,Sun,web,11496,565 2026-09-14,Mon,app,23716,1722 2026-09-14,Mon,web,16886,905 2026-09-15,Tue,app,23295,1649 2026-09-15,Tue,web,17506,947 2026-09-16,Wed,app,23514,1717 2026-09-16,Wed,web,17152,934 2026-09-17,Thu,app,23714,1714 2026-09-17,Thu,web,17027,929 2026-09-18,Fri,app,23324,1698 2026-09-18,Fri,web,17233,942 2026-09-19,Sat,app,15792,1055 2026-09-19,Sat,web,11457,566 2026-09-20,Sun,app,15795,1044 2026-09-20,Sun,web,11932,596 2026-09-21,Mon,app,24102,1717 2026-09-21,Mon,web,17386,951 2026-09-22,Tue,app,24071,1722 2026-09-22,Tue,web,17445,940 2026-09-23,Wed,app,23672,1712 2026-09-23,Wed,web,17595,966 2026-09-24,Thu,app,24378,1759 2026-09-24,Thu,web,16705,911 2026-09-25,Fri,app,23375,1654 2026-09-25,Fri,web,16941,928 2026-09-26,Sat,app,15807,1053 2026-09-26,Sat,web,11924,601 2026-09-27,Sun,app,16572,1100 2026-09-27,Sun,web,11745,581 2026-09-28,Mon,app,23731,1685 2026-09-28,Mon,web,17480,960 2026-09-29,Tue,app,23336,1710 2026-09-29,Tue,web,17187,940 2026-09-30,Wed,app,24441,1745 2026-09-30,Wed,web,16799,913 2026-10-01,Thu,app,23404,1705 2026-10-01,Thu,web,17529,945 2026-10-02,Fri,app,24389,1789 2026-10-02,Fri,web,16952,900 2026-10-03,Sat,app,16669,1110 2026-10-03,Sat,web,12041,604 2026-10-04,Sun,app,15998,1077 2026-10-04,Sun,web,12088,593
who_checks_out.md6 lines · Download
# Who checks out (from the data team)

- 412,000 people placed at least one order in the last 30 days.
- 31% of them used both the app and the website to shop in that month.
- The average buyer starts 3.8 checkout sessions a month.
- Average order value: $64. Repeat purchase within 30 days: 38%.
experiment_calendar.md5 lines · Download
# Experiment calendar

- Payments squad: "Pay later" option on the checkout page, live for 50% of users until 9 November.
- Search squad: new ranking, runs on search results pages only, until 30 October.
- Black Friday promotions start 20 November; code freeze from 16 November.
What a strong answer doesThe answer key the graders mark against

Randomises by user, not session or platform, because 31% of buyers use both app and web and the average buyer starts 3.8 checkout sessions a month; sessions aren't independent. Uses the traffic file: about 41,000 checkout sessions a weekday and 28,000 at weekends (about 260,000 a week), with session conversion about 6.4% (higher on the app), so sizes on users (about 412,000 buyers a month) with a stated baseline and smallest effect worth detecting, and runs in whole weeks. Primary metric: completed orders per user who reaches the basket (not last-step completion, which the change could flatter by moving drop-off earlier). Guardrails: drop-off at the basket page, delivery fee revenue, average order value. Handles the calendar: the payments test runs on the same checkout until 9 November and the code freeze starts 16 November before Black Friday, so either run alongside payments with independent assignment and check for interaction, or start after the freeze lifts and avoid the promotional weeks; it doesn't squeeze a test into the single week between them. A decision rule for win, loss and inconclusive.

Critical failures (cap the score at 40)
  • Randomises by session
Task

Staff-level · v1.1

The outputs

9 setups answered this brief.

Needs more than a quick edit11 of 14 checks passed

The traffic totals are wrong, so a PM would need to re‑sum the CSV and recalculate sample size before acting on the spec.

Output

Experiment Spec: Upfront Delivery Fee & Date on Basket Page

1. Hypothesis

Showing the next-day delivery date and delivery fee on the basket page (rather than waiting until the final checkout step) will reduce sticker-shock abandonment at the end of the funnel and increase overall order conversion by at least 2% relative, without degrading average order value (AOV) or causing excessive early-funnel drop-off.

  • Control: Delivery date and fee are revealed on the final checkout step.
  • Treatment: Delivery date and fee are displayed directly on the basket page before the user clicks "Proceed to Checkout".

---

2. Randomisation & Unit of Analysis

  • Randomisation Unit: `user_id` (logged-in account).
  • Why: Data shows 31% of buyers use both the app and web in a 30-day period, and the average buyer starts 3.8 checkout sessions/month. Device- or session-level randomisation would expose the same user to both variants, causing UX confusion and contamination. Unauthenticated users will be randomised by a persistent device cookie and stitched upon login at the start of checkout.
  • Trigger Point: First view of the Basket Page during the experiment window.
  • Split: 50% Control / 50% Treatment, stratified by platform (App vs. Web) since baseline conversion differs significantly between the two.

---

3. Metrics

TypeMetricDefinitionRationale
:---:---:---:---
PrimaryUser Conversion Rate (CVR)Unique users placing $\ge 1$ order / Unique users viewing the basketCaptures the net effect of reduced final-step drop-off vs. potential early basket abandonment.
SecondaryBasket-to-Checkout RateUsers starting checkout / Users viewing basketQuantifies the stated risk: how many users leave early when seeing the fee upfront.
SecondaryCheckout-to-Order RateOrders completed / Checkout sessions startedTests the core mechanism: whether final-step abandonment drops.
SecondaryOrders per UserTotal orders / Unique users in experimentCaptures repeat purchasing effects within the test window.
GuardrailAverage Order Value (AOV)Total Gross Merchandise Value / Total orders (Baseline: $64)Ensures users don't shrink basket sizes to offset the visible fee.
GuardrailRevenue per UserTotal GMV / Unique users in experimentEnsures net financial neutrality or positivity.

Note on Denominator: Because Treatment alters the basket page—before a `checkoutsession` starts—using `checkoutsessions` as the primary denominator would introduce post-treatment selection bias. The primary denominator must be users reaching the basket.

---

4. Traffic, Sample Size & Duration (Show Your Sums)

A. Baseline Traffic from CSV (56 days: 10 Aug – 4 Oct 2026)

  • App Totals: 1,196,659 checkout sessions; 85,127 orders $\rightarrow$ 7.11% session CVR (21,369 sessions/day).
  • Web Totals: 875,705 checkout sessions; 46,966 orders $\rightarrow$ 5.36% session CVR (15,638 sessions/day).
  • Combined Totals: 2,072,364 checkout sessions; 132,093 orders.
  • Daily Averages: 37,006 checkout sessions/day and 2,359 orders/day.
  • Weekday vs. Weekend split: Weekdays average ~40,800 sessions/day; weekends average ~28,100 sessions/day. (Must run in full 7-day increments).
  • Session-to-Order Baseline CVR: $132,093 / 2,072,364 = \mathbf{6.374\%}$.

B. Converting Sessions to Unique Users

* Each buyer averages 3.8 checkout sessions per 30 days (~0.95 sessions/week). * In a 14-day window: $37,006 \text{ sessions/day} \times 14 = 518,084 \text{ checkout sessions}$. * Accounting for repeat sessions (~1.6 sessions per user over two weeks), a 14-day window yields approximately 323,800 unique users entering checkout: $$518,084 / 1.6 \approx 323,800 \text{ unique users (161,900 per arm)}$$ * User-level Baseline CVR ($p1$) over 14 days: $$\text{Total 14-day orders} = 2,359 \times 14 = 33,026$$ $$p1 \approx 33,026 / 323,800 \approx \mathbf{10.20\%}$$ (Even if analysed at the session level where $p_1 = 6.374\%$, we calculate both below to ensure statistical power).

C. Sample Size Calculation

Using standard two-tailed parameters: $\alpha = 0.05$ ($Z{\alpha/2} = 1.96$), Power $1 - \beta = 0.80$ ($Z\beta = 0.84$), so $(Z{\alpha/2} + Z\beta)^2 = (1.96 + 0.84)^2 = \mathbf{7.84}$. Target Minimum Detectable Effect (MDE): 2.5% relative lift.

1. At the Session Level ($p_1 = 0.06374$, $\Delta = 0.06374 \times 0.025 = 0.00159$): $$n = \frac{2 \times 7.84 \times 0.06374 \times (1 - 0.06374)}{(0.00159)^2} = \frac{0.9358}{0.00000253} \approx \mathbf{370,000 \text{ sessions/arm}}$$ * With cluster inflation (design effect $\approx 1.3$ for 1.6 sessions/user): $370,000 \times 1.3 = 481,000 \text{ sessions/arm}$ ($962,000$ total). * Days required: $962,000 / 37,006 \text{ sessions/day} = \mathbf{26.0 \text{ days}}$.

2. For a 14-Day Run ($518,084$ total sessions $\rightarrow 259,042$ sessions/arm, or $161,900$ users/arm): * At user level ($p1 = 0.102$, $n = 161,900$/arm): $$\text{MDE}{\text{abs}} = \sqrt{\frac{2 \times 7.84 \times 0.102 \times 0.898}{161,900}} = \sqrt{\frac{1.436}{161,900}} = 0.00298 \text{ (or } \mathbf{2.92\% \text{ relative lift}}\text{)}$$

Duration Decision: Run for 14 full days (2 weeks) to capture two full weekly cycles and detect a $\ge 2.9\%$ relative lift in user conversion ($\sim 68$ extra orders/day, or ~$4,350/day incremental revenue).

---

5. Calendar & Scheduling

  • Constraints:
  • Search squad's ranking test ends 30 Oct (low interaction risk, upstream of basket).
  • Payments squad's "Pay later" test runs on the checkout page at 50/50 until 9 Nov (high interaction risk: changes payment friction on the exact step our test targets).
  • Code freeze starts 16 Nov; Black Friday promos start 20 Nov.
  • Schedule:
  • Waiting until 9 Nov leaves only 7 days before the 16 Nov code freeze—insufficient for a 14-day run.
  • Therefore, we will run orthogonal (cross-factored) to the Payments "Pay later" test for 14 days: Monday 26 October – Sunday 8 November 2026.
  • Implementation: Use an independent hash seed so our 50/50 split is evenly distributed across Control and Treatment of the "Pay later" experiment (25% in each of the 4 cells). This leaves a full week (9–15 Nov) to analyse results and ship or roll back before the 16 Nov code freeze.

---

6. Decision Rule

  1. Ship: Primary metric (User CVR from Basket) is statistically significantly positive ($p < 0.05$, two-tailed), AOV guardrail does not drop by more than 1% ($p < 0.05$), and interaction check with the "Pay later" test shows no severe negative synergy.
  2. Kill / Roll back: Primary metric is significantly negative ($p < 0.05$) due to early basket abandonment, OR Revenue per User drops significantly.
  3. Inconclusive (Flat): If User CVR is flat ($p \ge 0.05$) and guardrails are unharmed, ship Treatment anyway—upfront fee transparency is a better customer experience and aligns with consumer protection best practices.

Claims the judge couldn’t find in the brief

  • App Totals: 1,196,659 checkout sessions
  • Web Totals: 875,705 checkout sessions
  • Combined Totals: 2,072,364 checkout sessions
  • App orders total: 85,127
  • Web orders total: 46,966
  • Combined orders total: 132,093
  • Daily average checkout sessions: 37,006
  • Daily average orders: 2,359
  • Session-to-Order Baseline CVR: 6.374%
  • 14-day checkout sessions: 518,084
  • ~323,800 unique users in a 14-day window
  • User-level Baseline CVR ~10.20%

Grades and run details

Decision model 79 · LLM judge 73
Decision model checks
  • passUses the supplied evidence correctly16%
  • passAddresses the actual decision56%
  • partialRespects explicit constraints20%
  • passIdentifies material uncertainty46%
  • partialAvoids unsupported claims23%
  • passProduces the required deliverable34%
  • passRandomises by user100%
  • passWorks around the calendar100%
  • partialDoesn't let the metric flatter the change45%
  • partialAn unambiguous primary metric59%
  • passDecision rule written before the test95%
  • partialSized from the real traffic30%
  • passGuardrails with thresholds34%
  • partialSays why a test is worth it here89%
Run
Run
#1
API response time
20 s
Submitted
13 Oct 2026

Needs more than a quick edit9 of 14 checks passed

The spec lacks a valid sample size and a basket drop-off guardrail, so a PM would need to redo sizing and add a guardrail before using it.

Output

Experiment: delivery transparency on the basket

Status: Proposed; launch requires a basket-level sizing check and agreement with Payments. The supplied traffic supports a planning estimate, not a defensible final user-level sample size.

Hypothesis and treatment

Showing the next-day delivery date and fee on the basket increases completed orders by removing a late surprise. It may instead move abandonment earlier, so success must be measured from basket exposure, not checkout entry.

  • Control: Date and fee first appear at the final checkout step.
  • Treatment: Show the same date and fee on the basket, before the checkout button. Retain the final-step confirmation.
  • No changes to fees, delivery availability, payment options or other copy. Recalculate both displays consistently if the basket or address changes.

Eligibility and randomisation

Randomise eligible signed-in customers 50:50 at their first basket view, before rendering either experience. Eligibility requires an address sufficient to quote delivery accurately.

Use a persistent customer-ID assignment shared across app and web. Session/device randomisation would contaminate exposure: 31% of buyers use both platforms. Anonymous customers are excluded unless we can reliably preserve and reconcile assignment.

Use an independent experiment hash, balanced within existing Payments assignment and first-exposure platform. Persist assignment throughout the experiment.

Analyse intention-to-treat: include everyone assigned, including customers who never enter checkout. Each customer contributes once to the primary outcome.

Metrics

Primary: Percentage of assigned customers placing at least one order within 24 hours of first eligible basket exposure, on either platform.

Secondary: - Checkout entry within 24 hours. - Basket-to-order conversion and final-step abandonment, with explicit funnel denominators. - Orders and revenue per assigned customer within 24 hours. - Order value, descriptive only: treatment can change who buys. - Repeat ordering within 30 days of assignment, reported after maturation. The supplied 38% is buyer-conditional, not this metric’s baseline.

Guardrails, precommitted proposed tolerances: - Revenue per assigned customer: no more than 1% relative deterioration. - Cancellation/refund incidence per assigned customer: no more than 0.2 percentage-point deterioration. - Checkout technical-error incidence per assigned customer: no more than 0.1 percentage-point deterioration. - Basket p95 latency: no more than 100 ms deterioration. - Any incorrect fee/date presentation is a stop-and-fix issue.

Instrument assignment, basket exposure, checkout steps, displayed quote and orders. Check sample-ratio mismatch, cross-platform consistency and event completeness before interpreting results.

Sample size and duration: sums

Across the supplied 56 days:

PlatformCheckout sessionsOrdersOrders/session
------:---:---:
App1,206,53785,5267.09%
Web876,85346,6705.32%
Total2,083,390132,1966.35%

Average checkout traffic:

\[ 2,083,390/56=37,203\text{ sessions/day}. \]

Planning assumptions: two-sided α=5%, 80% power, 5% relative lift as the minimum detectable effect—not an observed or commercially validated threshold.

Using checkout conversion only as a provisional proxy:

\[ p=132,196/2,083,390=0.063452,\quad \Delta=0.05p=0.003173. \]

Approximate equal-arm sample:

\[ n=\frac{2(1.96+0.84)^2p(1-p)}{\Delta^2} \approx92,600\text{ per arm}. \]

Thus approximately 185,200 independent observations. Naively:

\[ 185,200/37,203=4.98\text{ days}. \]

Five days is not a valid duration. These are checkout sessions, not unique eligible basket visitors; checkout entry is affected by treatment. The 3.8 sessions/month figure applies only to buyers, so dividing total sessions by 3.8 would not repair the denominator. Nor do 412,000 monthly buyers establish eligible traffic.

Pre-launch requirement: Measure deduplicated eligible basket visitors, their 24-hour conversion, and expected new enrolments over the planned window. Recalculate using that conversion rate; separately check guardrail power. Lock the largest required sample before launch.

Proposed maximum enrolment is 28 days, representing:

\[ 28\times37,203\approx1,041,695 \]

checkout sessions as a volume benchmark—not a count of independent participants. Launch only if forecast eligible customers support the locked sample within that window.

Calendar

Propose 12 October–8 November 2026, four complete weeks, with primary outcomes matured by 9 November.

This overlaps Pay Later. Obtain Payments agreement for independent allocation, retain its assignment in analysis, and estimate the treatment-by-payment interaction. Otherwise, do not use this window.

Search ends 30 October; log its assignment and account for calendar-date changes.

The uncontaminated pre-promotion window is only 10–19 November: ten days. The 16 November freeze requires any running experiment and kill switch to be preapproved; it is not automatically a shutdown. Use that alternative only if revised sizing supports it. Otherwise postpone until a confirmed post-promotion window.

Decision rule

At the locked endpoint, ship if the primary lift’s two-sided 95% confidence interval excludes zero positively and all guardrails pass their precommitted non-inferiority checks. Review platform and Payments interactions before broad rollout.

Reject on clear conversion harm or a guardrail breach. Otherwise call it inconclusive—not “no effect.” No efficacy peeking or opportunistic extension; safety monitoring remains continuous.

Claims the judge couldn’t find in the brief

  • The supplied traffic supports a planning estimate, not a defensible final user-level sample size.
  • The 16 November freeze requires any running experiment and kill switch to be preapproved; it is not automatically a shutdown.
  • Nor do 412,000 monthly buyers establish eligible traffic.

Grades and run details

Decision model 79 · LLM judge 60
Decision model checks
  • passUses the supplied evidence correctly43%
  • partialAddresses the actual decision28%
  • partialRespects explicit constraints20%
  • passIdentifies material uncertainty83%
  • passAvoids unsupported claims34%
  • partialProduces the required deliverable45%
  • passRandomises by user94%
  • passWorks around the calendar97%
  • partialDoesn't let the metric flatter the change98%
  • passAn unambiguous primary metric77%
  • passDecision rule written before the test82%
  • partialSized from the real traffic30%
  • passGuardrails with thresholds52%
  • partialSays why a test is worth it here89%
Run
Run
#1
API response time
1.6 min
Submitted
6 Oct 2026

Needs more than a quick edit11 of 14 checks passed

The spec lacks a final sample size and duration, requiring additional data and recalculation, so a PM cannot act on it without major rework.

Output

Experiment spec: earlier delivery-date and fee disclosure

Status: Conditional launch approval. The supplied traffic supports a planning calculation, but not a defensible final sample size for the correct primary metric.

Hypothesis and experience

Showing the next-day delivery date and actual delivery fee on the basket page increases completed purchases by reducing late surprises. Earlier abandonment may increase; the test must measure the net effect from basket entry, not just conversion among people who proceed to checkout.

  • Control: Current disclosure at the final checkout step.
  • Treatment: Disclose on the basket page; retain an accurate fee/date in the final order summary. No changes to prices, delivery eligibility or payment options.
  • Eligibility: identifiable, signed-in customers opening a non-empty basket for which we can calculate the date and fee. Do not introduce a login requirement. Results initially apply only to this population.

Randomisation and analysis

Assign eligible customers 50:50 by persistent account-ID hash, immediately before their first eligible basket renders. Keep assignment sticky across sessions, app and web.

Cross-platform consistency matters: \(412,000 × 31\% = 127,720\) recent buyers used both platforms. Device- or session-level assignment would expose many people to both variants.

Analyse intention-to-treat: everyone assigned remains in their arm, including failed renders and immediate exits. Each customer contributes one primary observation. Pre-specify adjustment for entry platform and enrolment date; report app/web effects as secondary, not independently powered launch decisions.

Validate allocation, identity stitching, exposure events and order attribution before starting.

Metrics

Primary: Percentage of assigned customers placing a paid order within 24 hours of first eligible basket entry, on either platform. This captures both earlier exits and downstream gains without a treatment-selected checkout denominator.

Secondary: - Basket-to-checkout progression and final-step abandonment, as funnel diagnostics. - Orders and net revenue per assigned customer within 24 hours. - Order value among purchasers, labelled a conditional diagnostic. - Thirty-day repeat purchase; the supplied 38% is context, not necessarily this cohort’s baseline. This needs a separate mature readout.

Guardrails — proposed tolerances, requiring sign-off: - Net revenue/customer: no worse than −1% relative. - Payment-error and cancellation/refund incidence per assigned customer: no worse than +0.1 percentage points, using fixed, pre-registered observation windows. - Zero tolerance for confirmed incorrect fee/date disclosure or unintended charges. - Monitor basket latency, crashes and sample-ratio mismatch; material regressions trigger investigation or rollback.

The $64 average order value alone cannot establish revenue variance or power these guardrails.

Sample size and duration: sums

Across the supplied 56 days:

PlatformCheckout sessionsOrders
------:---:
App1,206,53785,526
Web876,85346,670
Total2,083,390132,196

Thus:

\[ p_{\text{checkout}}=132,196/2,083,390=6.345\% \]

\[ \text{sessions/day}=2,083,390/56=37,203 \]

Propose 80% power, two-sided 5% significance, 3% relative minimum detectable uplift, subject to commercial sign-off.

Illustrative checkout-session calculation only:

\[ \Delta=0.06345×0.03=0.0019035 \]

That is 0.190 percentage points.

\[ n_{\text{arm}}\approx \frac{2(1.96+0.84)^2p(1-p)}{\Delta^2} \approx257,200 \]

\[ N\approx514,400;\quad514,400/37,203=13.83\text{ days} \]

Two complete weeks would provide approximately:

\[ 2,083,390/8×2=520,848\text{ checkout sessions} \]

This does not prove the proposed experiment is powered. The intervention precedes checkout, and checkout sessions are neither eligible basket visitors nor independent customers. The 412,000 figure counts buyers only; 3.8 sessions/month describes buyers, not all eligible visitors. Dividing session traffic by 3.8 would be invalid.

Launch-blocking data request: Extract deduplicated eligible basket entrants, their 24-hour purchase rate and cumulative unique entrants over candidate windows. Recalculate:

\[ n{\text{arm}}= \frac{15.68pb(1-pb)}{(0.03pb)^2} \]

Choose a fixed enrolment duration covering at least two complete weeks and enough unique customers, then add 24 hours for primary-outcome maturation.

Calendar

There is no unconditionally clean two-week pre-promotion slot after Payments ends:

  • Payments runs through 9 November.
  • 10–15 November offers only six days before freeze.
  • Even if running tests may continue during freeze, 10–19 November offers only ten days before promotions.

Conditional slot: 31 October–13 November, outcomes mature 14 November, readout 15 November. Search has ended. This requires Payments to hold its configuration through follow-up and agree independent, orthogonal assignment, balanced payment strata and interaction analysis. It also requires the recalculated customer sample to fit.

Otherwise, negotiate isolation earlier or defer until after promotions and freeze; their end dates are not supplied.

Decision rule

No efficacy peeking or early “winner” calls. At the fixed endpoint, ship only if the primary 95% confidence interval excludes zero positively, the estimated uplift meets the agreed 3% business threshold, and guardrail confidence bounds exclude their harm margins. Require valid instrumentation and no material platform/payment interaction harm.

Otherwise retain control: distinguish evidence of harm from an inconclusive result. Missing power, immature guardrails or calendar approval means no launch, not an assumed pass.

Grades and run details

Decision model 86 · LLM judge 73
Decision model checks
  • passUses the supplied evidence correctly62%
  • passAddresses the actual decision34%
  • partialRespects explicit constraints21%
  • passIdentifies material uncertainty97%
  • passAvoids unsupported claims46%
  • partialProduces the required deliverable43%
  • passRandomises by user98%
  • passWorks around the calendar100%
  • partialDoesn't let the metric flatter the change98%
  • passAn unambiguous primary metric82%
  • passDecision rule written before the test97%
  • passSized from the real traffic48%
  • passGuardrails with thresholds70%
  • partialSays why a test is worth it here85%
Run
Run
#1
Time to output
73 s
Submitted
5 Oct 2026

Check by check

Where the outputs differ comes first. Open a check to read the judge’s reasons. “Mixed” means the two graders disagreed.

Where they differ 6

Uses the supplied evidence correctlyMixedMixedRight
Gemini 4 Argon · API

The totals for app, web, and combined sessions/orders are incorrectly summed from the CSV, so key baseline facts are not taken correctly from the supplied evidence.

GPT-6.1 Sol · API

Unsupported claims about the traffic data's adequacy and the code freeze's preapproval requirement are presented as facts, not in the brief.

GPT-6 Astra · ChatGPT

All factual claims about the current situation are taken directly from the supplied context or derived by correct arithmetic.

Avoids unsupported claimsRightMixedRight
Gemini 4 Argon · API

Hypotheses and forecasts are labelled as such; the numerical errors are factual mistakes, not unlabelled interpretations.

GPT-6.1 Sol · API

It presents interpretations (traffic data insufficient for final sizing, freeze requires preapproval) as established facts without support.

GPT-6 Astra · ChatGPT

Hypotheses and limitations are clearly labelled, and no interpretations are presented as established fact.

Doesn't let the metric flatter the changeRightWrongWrong
Gemini 4 Argon · API

Primary metric is orders per user who reach the basket, with an explanation that using checkout sessions would be misleading, and basket‑to‑checkout is a guardrail.

GPT-6.1 Sol · API

Primary metric is from basket exposure, but no basket drop-off guardrail is included; only revenue, cancellations, errors, latency, and incorrect fee are guarded.

GPT-6 Astra · ChatGPT

The primary metric is from basket entry and explains why last-step completion misleads, but it does not include a basket drop-off guardrail with a threshold to block rollout.

An unambiguous primary metricWrongRightRight
Gemini 4 Argon · API

The spec does not mention a trust check (e.g., sample ratio mismatch) to verify the experiment's internal validity.

GPT-6.1 Sol · API

One primary metric with a clear rationale for its direction and a planned trust check (sample-ratio mismatch, cross-platform consistency).

GPT-6 Astra · ChatGPT

One primary metric is named, its direction is unambiguously good, and a sample-ratio mismatch check is planned.

Sized from the real trafficWrongWrongMixed
Gemini 4 Argon · API

The sample size and duration are derived from incorrectly summed traffic numbers, so the sizing is not correctly worked out from the real traffic.

GPT-6.1 Sol · API

Does not provide a valid sample size from the supplied traffic; says the traffic is insufficient and requires pre-launch measurement, so no usable size is given.

GPT-6 Astra · ChatGPT

The spec does not provide a sample size and duration worked out from the supplied traffic; it states the data is insufficient and requests more, without a usable calculation.

Says why a test is worth it hereRightWrongWrong
Gemini 4 Argon · API

The spec shows the traffic can detect a 2.9% lift, gives a revenue estimate, and thus implies the test is worth running; it does not recommend skipping.

GPT-6.1 Sol · API

Does not weigh whether a test is worth running given the traffic and stakes, nor say what to do if not.

GPT-6 Astra · ChatGPT

The output does not explain why this decision merits a test given the traffic and stakes, nor does it recommend a cheaper alternative if not.

All got right 8

Addresses the actual decisionRightRightRight
Gemini 4 Argon · API

The spec commits to running an orthogonal test with a clear schedule and gives a decision rule that maps outcomes to actions.

GPT-6.1 Sol · API

The spec commits to a clear experiment design and a decision rule for shipping, which is the requested deliverable.

GPT-6 Astra · ChatGPT

The output commits to a conditional launch decision and provides a clear decision rule for the test outcome.

Respects explicit constraintsRightRightRight
Gemini 4 Argon · API

The output is an experiment spec under 900 words, includes all required sections, and respects the requested form.

GPT-6.1 Sol · API

The output is within 900 words and includes all required sections of an experiment spec.

GPT-6 Astra · ChatGPT

The spec is within 900 words, includes all requested sections, and respects the form.

Identifies material uncertaintyRightRightRight
Gemini 4 Argon · API

It names the interaction risk with the payments test, the early drop‑off risk, and specifies how these would be addressed (orthogonal design, secondary metrics).

GPT-6.1 Sol · API

It identifies the need for basket-level sizing, interaction checks with Payments, and guardrail power as unknowns to resolve before launch.

GPT-6 Astra · ChatGPT

It identifies the unknown sample size due to missing unique-customer data and the calendar dependency, and says how to resolve them.

Produces the required deliverableRightRightRight
Gemini 4 Argon · API

The experiment spec is complete, usable by a PM, and within the word limit.

GPT-6.1 Sol · API

The experiment spec is complete, in the right form, and a PM could act on it with light edits.

GPT-6 Astra · ChatGPT

The experiment spec is complete in form, within the word limit, and a PM could understand the plan.

Randomises by userRightRightRight
Gemini 4 Argon · API

Randomises by user_id, explicitly citing cross‑platform usage and repeated sessions as the reasons.

GPT-6.1 Sol · API

Randomises by user (customer-ID across app and web) and explains that 31% of buyers use both platforms, so sessions aren't independent.

GPT-6 Astra · ChatGPT

Randomises by persistent account-ID across platforms, explicitly citing the 31% cross-platform usage and multiple sessions per buyer.

Works around the calendarRightRightRight
Gemini 4 Argon · API

Addresses both the payments test until 9 Nov and the Black Friday code freeze, and chooses an orthogonal run with independent assignment, not a one‑week squeeze.

GPT-6.1 Sol · API

Proposes overlapping with Payments using independent assignment and interaction check, and avoids a one-week squeeze between 9 and 16 November.

GPT-6 Astra · ChatGPT

Names both the payments test and the Black Friday freeze, and proposes a conditional slot with independent assignment and interaction check, not a one-week squeeze.

Decision rule written before the testRightRightRight
Gemini 4 Argon · API

Every outcome (win, loss, inconclusive) maps to a stated action with thresholds.

GPT-6.1 Sol · API

Maps every outcome (win, loss, inconclusive) to a stated action with thresholds.

GPT-6 Astra · ChatGPT

The rule maps ship, retain control, and no-launch outcomes to specific conditions, including an inconclusive result.

Guardrails with thresholdsRightRightRight
Gemini 4 Argon · API

Guardrails like AOV and revenue per user are named with thresholds (e.g., AOV drop ≤1%) that would block rollout.

GPT-6.1 Sol · API

Names guardrail metrics (revenue, cancellations, errors, latency, incorrect fee) with explicit thresholds.

GPT-6 Astra · ChatGPT

Guardrails (net revenue, payment errors, incorrect fee) are named with explicit thresholds that would block rollout.

Results

Every setup we’ve tested on this task type, across all its tasks and repeats, graded on the current checklist. Calibrated. Where our PM checked the graders by hand, they agreed on 87% of 39 checks.

#Model · HarnessTask scoreDecision modelLLM judgeRunsCritical failures
1Sonnet 5.5withAPI85.296.42None
2Haiku 5.5withAPI83.196.72None
3Opus 5.5withClaude83.279.02None
4GPT-6 AstrawithChatGPT81.376.02None
5GPT-6 LunawithAPI83.465.22None
6GPT-6.1 SolwithAPI77.769.32None
7Gemini 4 ArgonwithAPI79.758.12None
8Gemini 3.8 FlashwithAPI69.947.92None
9Gemini 3.5 Flash-LitewithGemini55.413.321 capped

What you get for the cost

Haiku 5.5 · API scores within 2 points of Sonnet 5.5 · API at about a tenth of the cost.

Task score against relative cost for each setup. The table below has the same figures.20304050607080901001×3×10×30×100×Cost per output, relative to the cheapest setup (log scale) →↑ Task scoreSonnet 5.5 · API: task score 91, 33× the cheapestHaiku 5.5 · API: task score 89, 2.7× the cheapestOpus 5.5 · Claude: task score 78, 49× the cheapestGPT-6 Astra · ChatGPT: task score 76, 79× the cheapestGPT-6 Luna · API: task score 73, the cheapestGPT-6.1 Sol · API: task score 73, 13× the cheapestGemini 4 Argon · API: task score 66, 11× the cheapestGemini 3.8 Flash · API: task score 56, 7.4× the cheapestGemini 3.5 Flash-Lite · Gemini: task score 32, 2.1× the cheapest, 1 critical failureSonnet 5.5 · APIHaiku 5.5 · APIOpus 5.5 · ClaudeGPT-6 Astra · ChatGPTGPT-6 Luna · APIGPT-6.1 Sol · APIGemini 4 Argon · APIGemini 3.8 Flash · APIGemini 3.5 Flash-Lite · Gemini
Best valueNobody beats these on both score and costAt least one critical failure
Task score and relative cost by setup
SetupTask scoreRelative cost (cheapest = 1)
GPT-6 Luna · API731.0×
Gemini 3.5 Flash-Lite · Gemini322.1×
Haiku 5.5 · API892.7×
Gemini 3.8 Flash · API567.4×
Gemini 4 Argon · API6611×
GPT-6.1 Sol · API7313×
Sonnet 5.5 · API9133×
Opus 5.5 · Claude7849×
GPT-6 Astra · ChatGPT7679×

Cost is each output’s tokens at the model’s list price, shown relative to the cheapest setup. Runs done in an app have no usage meter, so theirs are estimated from the same setup’s measured runs. How we compare cost

About the task

The PM job

Specifying an A/B test before running it.

Why it matters

Most tests are underpowered, or measure a metric nobody agrees is good.

What good looks like

  • One primary metric everyone agrees on the direction of
  • Decision rule stated up front
  • Guardrails
  • Power considered

Deliberately not measured

    Capability tested

    Test design

    The failure we’re looking for

    A test with no decision attached

    Grading

    Decision model and LLM judge, calibrated against a blind PM review