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 16 graded outputs by 8 models. 31% 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. Addresses the actual decision91% pass
    Commits to a clear experiment plan with a decision rule that maps every outcome (ship, don't ship, kill, extend) to an action.
    Sonnet 5.5 · API · Show the fee sooner

Where it slips

  1. Guardrails with thresholds50% 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
  2. Says why a test is worth it here59% 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
  3. Uses the supplied evidence correctly64% pass
    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.1 Sol · API · 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.0

The outputs

8 setups answered this brief.

Needs more than a quick edit9 of 14 checks passed

The baseline numbers are miscalculated, making the sample size and duration unreliable, and a trust check for the primary metric is missing.

Output

Experiment Spec: Upfront Delivery Fee & Date on Basket

Squad: Checkout Author: PM, Checkout Date: October 5, 2026

---

1. Hypothesis & Context

  • Hypothesis: Displaying the delivery date and delivery fee upfront on the basket page (instead of at the final checkout step) will reduce unexpected cost friction at checkout, decreasing last-step abandonment and increasing overall basket-to-order conversion.
  • Risk: Showing fees earlier may induce immediate drop-off on the basket page, reducing the number of checkout sessions started.
  • Core Question: Does the increase in final checkout completion compensate for any drop in basket-to-checkout progression?

---

2. Randomisation & Allocation

  • Unit of Randomisation: User ID (with persistent Device/Visitor ID fallback for non-logged-in users).
  • Why: Data shows 31% of monthly buyers shop on both the app and the website, and users average 3.8 checkout sessions/month. Randomising by session or device would cause severe cross-platform contamination and inconsistent user experiences.
  • Split: 50% Control, 50% Treatment, stratified by platform (iOS, Android, Web).
  • Variants:
  • Control (A): Current flow. Delivery date and fee revealed on final checkout step.
  • Treatment (B): Delivery date and calculated fee dynamically displayed on the basket page prior to entering checkout.

---

3. Metrics Framework

* Primary Metric: * Basket-to-Order Conversion Rate (Orders / Unique Basket Sessions): Note: We must not use Checkout-to-Order CVR alone as the primary metric, because filtering out users on the basket page could inflate downstream checkout conversion while reducing total orders. * Secondary Metrics (Funnel Diagnostics): * Basket-to-Checkout Initiation Rate: Measures upfront drop-off risk (Basket views $\to$ Checkout step 1). * Final-Step Checkout Abandonment Rate: Anticipated to drop as fee surprises are eliminated. * Average Order Value (AOV): Baseline is $64; monitors whether upfront fees alter basket composition. * Guardrail Metrics: * Total Orders & Revenue per User: Must not see a statistically significant decrease. * Basket Page P95 Latency: Fee lookup API must not add $>150\text{ ms}$ to basket load time. * CS Contact Rate: Delivery fee disputes/inquiries per 1,000 orders.

---

4. Traffic Sums, Sample Size & Duration

#### A. Baseline Traffic & Conversion (from 8-week data: Aug 10 – Oct 4, 2026) * Total 8-week volume: * App checkout sessions: $1,202,306$ | App orders: $85,466$ ($7.11\%$ CVR) * Web checkout sessions: $874,188$ | Web orders: $46,756$ ($5.35\%$ CVR) * Combined totals: $2,076,494$ checkout sessions | $132,222$ orders * Weekly averages: * Sessions: $\approx 259,560$ sessions/week ($\approx 37,080$ sessions/day) * Orders: $\approx 16,528$ orders/week ($\approx 2,360$ orders/day) * Baseline Checkout Conversion Rate ($p$): $$p = \frac{132,222}{2,076,494} = 6.37\%$$

#### B. Sample Size Calculation Using standard two-tailed hypothesis testing parameters: * Significance level ($\alpha$): $0.05$ ($Z{\alpha/2} = 1.96$) * Statistical power ($1 - \beta$): $80\%$ ($Z{\beta} = 0.84$) * Minimum Detectable Effect (MDE): $2.5\%$ relative lift ($\Delta = 6.37\% \times 0.025 = 0.159\%$ absolute $\to p_2 = 6.53\%$)

$$\text{Sample size per variant } n = \frac{(Z{\alpha/2} + Z\beta)^2 \cdot 2 \cdot p(1 - p)}{\Delta^2}$$ $$n = \frac{(1.96 + 0.84)^2 \cdot 2 \cdot (0.0637 \cdot 0.9363)}{(0.00159)^2} = \frac{7.84 \cdot 2 \cdot 0.05964}{0.000002528} \approx 369,980 \text{ sessions/variant}$$

  • Total required sessions (Control + Treatment): $\approx 740,000$ checkout/basket sessions.

#### C. Duration * Total traffic per week $\approx 259,560$ sessions. * Required weeks: $740,000 / 259,560 \approx 2.85$ weeks. * To eliminate day-of-week seasonality (e.g., weekend drop to $\approx 28\text{k}$ sessions/day vs. weekday $\approx 41\text{k}$), we set the duration to exactly 3 full calendar weeks (21 days), providing $\approx 778,000$ sessions and achieving an MDE of $\approx 2.4\%$.

---

5. Calendar & Schedule

``` [Oct 5] Spec Approval & QA [Oct 12] Launch Experiment (Day 1) ├── Oct 12 – Nov 1: 3-Week Test Window └── Concurrently: Orthogonal to Payments "Pay later" [Nov 1] Conclude Test & Analysis [Nov 2 – Nov 6] Squad Review & Rollout Decision [Nov 9 – Nov 13] 100% Rollout (if successful) [Nov 16] CODE FREEZE for Black Friday ```

  • Constraints & Conflicts:
  • Code Freeze: Begins 16 November.
  • Payments Squad ("Pay later" on checkout): Live for 50% of users until 9 November. We cannot wait until Nov 9, as that leaves only 7 days before code freeze.
  • Search Ranking Test: Ends 30 October on search result pages only (no direct conflict).
  • Interference Mitigation:
  • Randomise our test on an orthogonal hash layer to Payments. Because assignment is independent, exposure to "Pay later" will balance evenly (50/50) across both our Control and Treatment groups.
  • Check for an interaction effect via a $2 \times 2$ factorial ANOVA post-test.

---

6. Decision Rules

OutcomeCriteriaAction
:---:---:---
Statistically Significant PositivePrimary Metric (CVR) $p < 0.05$ with lift $\ge +1.5\%$; Guardrails neutral/positive.Ship to 100% across App & Web before Nov 16 code freeze.
Statistically Significant NegativePrimary Metric or Total Orders $p < 0.05$ negative; OR Basket P95 latency $> +150\text{ ms}$.Roll back immediately. Retain Control.
Inconclusive / Neutral$\text{Lift}$ not statistically significant ($p \ge 0.05$).Default to Control. Re-evaluating cost transparency does not justify UX change before peak Black Friday.

Claims the judge couldn’t find in the brief

  • App orders total 85,466 over 8 weeks
  • Baseline checkout conversion rate p = 6.37%
  • Combined sessions 2,076,494 and orders 132,222

Grades and run details

Decision model 89 · LLM judge 60
Decision model checks
  • partialUses the supplied evidence correctly4%
  • passAddresses the actual decision65%
  • passRespects explicit constraints13%
  • passIdentifies material uncertainty28%
  • passAvoids unsupported claims31%
  • passProduces the required deliverable57%
  • passRandomises by user100%
  • passWorks around the calendar99%
  • passDoesn't let the metric flatter the change96%
  • partialAn unambiguous primary metric82%
  • passDecision rule written before the test100%
  • passSized from the real traffic47%
  • partialGuardrails with thresholds82%
  • passSays why a test is worth it here73%
Run
Run
#1
API response time
53 s
Submitted
6 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 89 · LLM judge 60
Decision model checks
  • passUses the supplied evidence correctly31%
  • passAddresses the actual decision14%
  • partialRespects explicit constraints29%
  • passIdentifies material uncertainty87%
  • passAvoids unsupported claims70%
  • partialProduces the required deliverable84%
  • passRandomises by user93%
  • passWorks around the calendar98%
  • passDoesn't let the metric flatter the change82%
  • passAn unambiguous primary metric65%
  • passDecision rule written before the test77%
  • partialSized from the real traffic85%
  • passGuardrails with thresholds61%
  • passSays why a test is worth it here32%
Run
Run
#1
API response time
1.6 min
Submitted
6 Oct 2026

Needs more than a quick edit3 of 14 checks passed

The traffic numbers are wrong, the primary metric is flawed, and the calendar plan is unworkable; a PM would need to redo the analysis.

Output

Experiment Specification: Early Delivery Fee & Date Preview

Author: PM, Checkout Squad Date: October 2026

---

1. Hypothesis

Showing the delivery date and delivery fee on the basket page (pre-checkout) will reduce final-step checkout abandonment by setting upfront expectations. * Core Hypothesis: The reduction in late-stage drop-off outweighs any early-stage basket abandonment caused by friction, resulting in a net positive impact on overall checkout conversion.

2. Randomisation Strategy & Unit

  • Unit of Randomization: User ID (sticky across app and web platforms, given 31% multi-platform usage).
  • Allocation: 50% Control (status quo: fee shown on final checkout step), 50% Treatment (fee and date visible on the basket page).

3. Metrics

  • Primary Metric: Checkout Conversion Rate (Completed Orders / Unique Checkout Sessions).
  • Secondary Metrics:
  • Basket-to-Checkout Drop-off Rate (users leaving before entering checkout).
  • Average Order Value (AOV).
  • Guardrail Metrics:
  • Total Orders / Gross Merchandise Value (GMV).
  • 30-day Repeat Purchase Rate.

---

4. Traffic Analysis & Sample Size Sizing (The Sums)

Real Traffic Baseline (from past 8 weeks data): * Summing the 8-week dataset (56 days): * Total App Checkout Sessions = 1,304,784 (~23,300/day) * Total Web Checkout Sessions = 959,183 (~17,128/day) * Total Combined Sessions (8 weeks) = 2,263,967 * Daily Average Traffic = 40,428 checkout sessions/day * Total Orders = 155,752 * Baseline Conversion Rate ($p$) = $155,752 / 2,263,967 \approx 6.88\%$

Sample Size Calculations: To detect a relative change of 2% in conversion rate (e.g., from 6.88% to 7.02%) with $\alpha = 0.05$ (two-tailed) and power $(1-\beta) = 0.80$: * Using standard sample size formulas for proportions, we require approximately 375,000 users per variant (~750,000 total sessions). * At our baseline traffic of ~40,428 sessions/day (split 50/50 = ~20,214 sessions per variant daily): * Required Duration = $750,000 / 40,428 \approx 18.5$ days. * We will round up to 3 full weeks (21 days) to cleanly account for day-of-week seasonality (grocery ordering behaves very differently on Saturdays vs. Mondays).

---

5. Calendar & Timing

  • Overlaps & Conflicts:
  • Search squad: Runs exclusively on search results pages. Zero overlap with checkout/basket flows. Safe to run concurrently.
  • Payments squad ("Pay later"): Runs on the checkout page (affecting 50% of users) until 9 November. Because the checkout page is downstream of our intervention (basket page), running both creates a multi-variate interaction risk if not accounted for.
  • Holiday/Promo Constraints:
  • Black Friday promotions start November 20.
  • Code freeze begins November 16.
  • Proposed Window:
  • Start: Monday, October 12, 2026
  • End: Monday, November 2, 2026 (Exactly 21 days).
  • Note: This completely clears the Payments squad end-date (Nov 9) by launching earlier, and sits safely clear of the November 16 code freeze.

---

6. Decision Rule

We will evaluate the experiment after exactly 21 days of data collection.

  1. Ship (Rollout 100%): If the Primary Metric (Checkout Conversion Rate) shows a statistically significant positive lift ($p < 0.05$), and no guardrail metrics (GMV, 30-day repeat rate) drop significantly.
  2. Iterate / Inconclusive: If the primary metric shows no statistically significant change ($p \ge 0.05$), but secondary metrics show positive intent shifts, review basket abandonment drop-offs and redesign the UI placement.
  3. Rollback: If the Primary Metric drops significantly ($p < 0.05$) due to early basket abandonment outweighing final-step savings, or if guardrail metrics degrade, immediately halt the experiment and revert to control.

Claims the judge couldn’t find in the brief

  • Total Combined Sessions (8 weeks) = 2,263,967
  • Total Orders = 155,752
  • Daily Average Traffic = 40,428 checkout sessions/day
  • Baseline Conversion Rate = 6.88%

Grades and run details

Decision model 57 · LLM judge 27
Decision model checks
  • failUses the supplied evidence correctly25%
  • passAddresses the actual decision37%
  • failRespects explicit constraints20%
  • partialIdentifies material uncertainty86%
  • partialAvoids unsupported claims23%
  • partialProduces the required deliverable62%
  • passRandomises by user75%
  • passWorks around the calendar72%
  • partialDoesn't let the metric flatter the change34%
  • partialAn unambiguous primary metric87%
  • passDecision rule written before the test94%
  • partialSized from the real traffic46%
  • partialGuardrails with thresholds95%
  • partialSays why a test is worth it here47%
Run
Run
#1
Time to output
5 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 11

Uses the supplied evidence correctlyWrongMixedWrong
Gemini 3.8 Flash · API

Critical numbers (app orders, total orders, conversion rate) are miscalculated from the supplied traffic data.

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.

Gemini 3.5 Flash-Lite · Gemini

The traffic totals (2,263,967 sessions, 155,752 orders) are not supported by the data; the correct sums are about 2,083,390 sessions and 132,196 orders.

Respects explicit constraintsRightRightMixed
Gemini 3.8 Flash · API

Stays within 900 words, uses a user-level randomisation unit, and designs a schedule that respects the conflicts.

GPT-6.1 Sol · API

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

Gemini 3.5 Flash-Lite · Gemini

Respects word limit, includes all required sections, and randomises by user not session.

Identifies material uncertaintyRightRightWrong
Gemini 3.8 Flash · API

Flags interaction with the payments test and the risk of earlier drop-off, and specifies how to resolve them.

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.

Gemini 3.5 Flash-Lite · Gemini

Acknowledges interaction risk with the payments test but does not say how to resolve it, and incorrectly claims the window clears the payments test.

Avoids unsupported claimsRightMixedWrong
Gemini 3.8 Flash · API

Hypotheses and risks are clearly labelled as such, and no unlabelled forecasts are presented as facts.

GPT-6.1 Sol · API

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

Gemini 3.5 Flash-Lite · Gemini

Presents incorrect traffic numbers as facts without labelling them as estimates.

Produces the required deliverableRightRightWrong
Gemini 3.8 Flash · API

Provides a complete experiment spec covering all required sections in a usable format.

GPT-6.1 Sol · API

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

Gemini 3.5 Flash-Lite · Gemini

The sample size and duration are based on incorrect traffic data, so a PM would need to redo the sums.

Works around the calendarRightRightMixed
Gemini 3.8 Flash · API

Acknowledges both the payments test and the code freeze, and runs concurrently with independent assignment, avoiding the prohibited 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.

Gemini 3.5 Flash-Lite · Gemini

Proposes a window that overlaps with the payments test and does not provide a workable plan like independent assignment or interaction check.

Doesn't let the metric flatter the changeRightMixedWrong
Gemini 3.8 Flash · API

Primary metric is basket-to-order conversion, with explicit explanation of why last‑step completion would mislead.

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.

Gemini 3.5 Flash-Lite · Gemini

Primary metric is orders per checkout session, which can be flattered if users drop off before checkout; does not use orders per user reaching the basket.

An unambiguous primary metricWrongRightWrong
Gemini 3.8 Flash · API

Does not describe how the trustworthiness of the primary metric result will be checked (e.g., sample ratio mismatch).

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).

Gemini 3.5 Flash-Lite · Gemini

Does not explain why an increase is unambiguously good or include a trust check like sample ratio mismatch.

Sized from the real trafficMixedWrongWrong
Gemini 3.8 Flash · API

The baseline conversion rate used (6.37%) is incorrect; the sample size calculation therefore does not reflect the real traffic data.

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.

Gemini 3.5 Flash-Lite · Gemini

Sample size and duration are derived from incorrect traffic totals, not the real data.

Guardrails with thresholdsWrongRightWrong
Gemini 3.8 Flash · API

CS contact rate is listed as a guardrail but no threshold is given that would block the rollout.

GPT-6.1 Sol · API

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

Gemini 3.5 Flash-Lite · Gemini

Guardrails lack specific thresholds; only says 'drop significantly'.

Says why a test is worth it hereMixedMixedWrong
Gemini 3.8 Flash · API

The spec does not explain why a test is worth running here given the traffic and stakes, nor does it suggest an alternative.

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.

Gemini 3.5 Flash-Lite · Gemini

Does not discuss whether the test is worth running given traffic and stakes.

All got right 3

Addresses the actual decisionRightRightRight
Gemini 3.8 Flash · API

Commits to running the experiment and provides clear actions based on outcomes.

GPT-6.1 Sol · API

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

Gemini 3.5 Flash-Lite · Gemini

Commits to a 21-day experiment starting Oct 12 with a clear decision rule.

Randomises by userRightRightRight
Gemini 3.8 Flash · API

Randomises by user ID, citing cross-platform usage and multiple sessions as 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.

Gemini 3.5 Flash-Lite · Gemini

Randomises by user ID and cites the 31% cross-platform usage.

Decision rule written before the testRightRightRight
Gemini 3.8 Flash · API

Includes a table with actions for positive, negative, and inconclusive outcomes and the thresholds that separate them.

GPT-6.1 Sol · API

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

Gemini 3.5 Flash-Lite · Gemini

Maps ship, iterate, and rollback to p-value thresholds and guardrail degradation.

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 85% of 39 checks.

#Model · HarnessTask scoreDecision modelLLM judgeRunsCritical failures
1Sonnet 5.5withAPI92.696.42None
2Haiku 5.5withAPI83.496.72None
3Opus 5.5withClaude88.779.02None
4GPT-6 AstrawithChatGPT88.976.02None
5GPT-6 LunawithAPI89.165.22None
6GPT-6.1 SolwithAPI83.169.32None
7Gemini 3.8 FlashwithAPI77.347.92None
8Gemini 3.5 Flash-LitewithGemini47.813.321 capped

What you get for the cost

No setup scores within 5 points of the leader at half its cost or less here, so the leader is also the best value.

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 95, 33× the cheapestHaiku 5.5 · API: task score 89, 2.7× the cheapestOpus 5.5 · Claude: task score 81, 49× the cheapestGPT-6 Astra · ChatGPT: task score 79, 79× the cheapestGPT-6 Luna · API: task score 76, the cheapestGPT-6.1 Sol · API: task score 75, 13× the cheapestGemini 3.8 Flash · API: task score 60, 7.4× the cheapestGemini 3.5 Flash-Lite · Gemini: task score 29, 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 3.8 Flash · APIGemini 3.5 Flash-Lite · Gemini
Nobody 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 · API761.0×
Gemini 3.5 Flash-Lite · Gemini292.1×
Haiku 5.5 · API892.7×
Gemini 3.8 Flash · API607.4×
GPT-6.1 Sol · API7513×
Sonnet 5.5 · API9533×
Opus 5.5 · Claude8149×
GPT-6 Astra · ChatGPT7979×

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