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
| Type | Metric | Definition | Rationale |
|---|---|---|---|
| :--- | :--- | :--- | :--- |
| Primary | User Conversion Rate (CVR) | Unique users placing $\ge 1$ order / Unique users viewing the basket | Captures the net effect of reduced final-step drop-off vs. potential early basket abandonment. |
| Secondary | Basket-to-Checkout Rate | Users starting checkout / Users viewing basket | Quantifies the stated risk: how many users leave early when seeing the fee upfront. |
| Secondary | Checkout-to-Order Rate | Orders completed / Checkout sessions started | Tests the core mechanism: whether final-step abandonment drops. |
| Secondary | Orders per User | Total orders / Unique users in experiment | Captures repeat purchasing effects within the test window. |
| Guardrail | Average Order Value (AOV) | Total Gross Merchandise Value / Total orders (Baseline: $64) | Ensures users don't shrink basket sizes to offset the visible fee. |
| Guardrail | Revenue per User | Total GMV / Unique users in experiment | Ensures 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
- 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.
- Kill / Roll back: Primary metric is significantly negative ($p < 0.05$) due to early basket abandonment, OR Revenue per User drops significantly.
- 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