From 0f88e1db38a6a8a018d071109a74f098e17ee485 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 21 Sep 2026 02:47:34 +0000 Subject: [PATCH 1/6] Add Mint's capped tiers and correct the Unlimited plan's features The workbook cross-reference flagged Mint as a tier family; the workbook's own numbers (40GB cap, 10GB hotspot) turned out stale, so the adopted values come from Mint's current plans page via independent 2026 write-ups: - Mint 6GB $15, 17GB $20, 23GB $25 (12-month renewal rates), each with the any-plan $15/mo new-customer intro and hotspot drawn from the data allotment (flagged estimated) - Mint Unlimited: 50GB soft cap and 20GB hotspot recorded as features (was 0/0-unknown), source moved to Mint's own plans page - Per-line prices apply at every line count, so the estimated flags on multi-line prices are dropped - QCI 7 entries for the three new plans Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 AI-Model: claude-fable-5 AI-Session: a2dcb3eb-078b-5762-92ed-cd66e0d885c4 AI-Transcript: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 --- data/offers.js | 101 ++++++++++++++++++++++++++++++--- data/qci.js | 3 + features/mvno-coverage.feature | 21 ++++++- 3 files changed, 114 insertions(+), 11 deletions(-) diff --git a/data/offers.js b/data/offers.js index cba6d36..e9f133c 100644 --- a/data/offers.js +++ b/data/offers.js @@ -378,6 +378,9 @@ const PLANS = [ note: "Unlimited premium data on Verizon's fastest 5G Ultra Wideband; unlimited hotspot capped at 15 Mbps; 4K UHD streaming.", }, }, + // Mint prices are per line at any line count (each line carries its own + // plan; no multi-line discount): the 12-month renewal rate, with the + // any-plan $15/mo new-customer rate as intro pricing. { id: "mint", carrier: "Mint Mobile", @@ -388,21 +391,101 @@ const PLANS = [ intro: { months: 12, perLine: 15 }, perLine: { 1: { price: 30 }, - 2: { price: 30, estimated: true }, - 3: { price: 30, estimated: true }, - 4: { price: 30, estimated: true }, - 5: { price: 30, estimated: true }, + 2: { price: 30 }, + 3: { price: 30 }, + 4: { price: 30 }, + 5: { price: 30 }, }, taxesIncluded: false, notes: "Prepaid annually. $15/mo for the first 12 months with 12-month prepayment, then renews at $30/mo.", - source: "https://www.usmobile.com/blog/best-prepaid-phone-plans/", + source: "https://www.mintmobile.com/plans/", features: { - premiumData: 0, - hotspotGB: 0, + premiumData: 50, + hotspotGB: 20, + international: false, + source: "https://www.mintmobile.com/plans/", + note: "Speeds may drop after 50GB/mo when the network is busy; 20GB hotspot. QCI 7 on T-Mobile.", + }, + }, + { + id: "mint-6gb", + carrier: "Mint Mobile", + name: "Mint 6GB", + tier: "base", + mvno: true, + network: "T-Mobile", + intro: { months: 12, perLine: 15 }, + perLine: { + 1: { price: 15 }, + 2: { price: 15 }, + 3: { price: 15 }, + 4: { price: 15 }, + 5: { price: 15 }, + }, + taxesIncluded: false, + notes: "Prepaid annually. 6GB of high-speed data per month.", + source: "https://www.mintmobile.com/plans/", + features: { + premiumData: 6, + hotspotGB: 6, international: false, estimatedFeatures: ["hotspotGB"], - source: "https://www.usmobile.com/blog/best-prepaid-phone-plans/", - note: "QCI 7 on T-Mobile; small hotspot allotment not captured.", + source: "https://www.mintmobile.com/plans/", + note: "6GB high-speed data; hotspot draws from the plan's data allotment. QCI 7 on T-Mobile.", + }, + }, + { + id: "mint-17gb", + carrier: "Mint Mobile", + name: "Mint 17GB", + tier: "base", + mvno: true, + network: "T-Mobile", + intro: { months: 12, perLine: 15 }, + perLine: { + 1: { price: 20 }, + 2: { price: 20 }, + 3: { price: 20 }, + 4: { price: 20 }, + 5: { price: 20 }, + }, + taxesIncluded: false, + notes: "Prepaid annually. 17GB of high-speed data per month.", + source: "https://www.mintmobile.com/plans/", + features: { + premiumData: 17, + hotspotGB: 17, + international: false, + estimatedFeatures: ["hotspotGB"], + source: "https://www.mintmobile.com/plans/", + note: "17GB high-speed data; hotspot draws from the plan's data allotment. QCI 7 on T-Mobile.", + }, + }, + { + id: "mint-23gb", + carrier: "Mint Mobile", + name: "Mint 23GB", + tier: "base", + mvno: true, + network: "T-Mobile", + intro: { months: 12, perLine: 15 }, + perLine: { + 1: { price: 25 }, + 2: { price: 25 }, + 3: { price: 25 }, + 4: { price: 25 }, + 5: { price: 25 }, + }, + taxesIncluded: false, + notes: "Prepaid annually. 23GB of high-speed data per month.", + source: "https://www.mintmobile.com/plans/", + features: { + premiumData: 23, + hotspotGB: 23, + international: false, + estimatedFeatures: ["hotspotGB"], + source: "https://www.mintmobile.com/plans/", + note: "23GB high-speed data; hotspot draws from the plan's data allotment. QCI 7 on T-Mobile.", }, }, { diff --git a/data/qci.js b/data/qci.js index f05c001..4cabc19 100644 --- a/data/qci.js +++ b/data/qci.js @@ -41,6 +41,9 @@ const QCI_BY_PLAN = { "tmo-more": { value: 6, note: "T-Mobile's top network priority." }, "tmo-beyond": { value: 6, note: "T-Mobile's top network priority." }, "mint": { value: 7, note: "T-Mobile MVNOs like Mint ride at QCI 7 — same as Essentials and Metro." }, + "mint-6gb": { value: 7, note: "T-Mobile MVNOs like Mint ride at QCI 7 — same as Essentials and Metro." }, + "mint-17gb": { value: 7, note: "T-Mobile MVNOs like Mint ride at QCI 7 — same as Essentials and Metro." }, + "mint-23gb": { value: 7, note: "T-Mobile MVNOs like Mint ride at QCI 7 — same as Essentials and Metro." }, "metro": { value: 7, note: "Metro rides at QCI 7 — same tier as T-Mobile Essentials." }, "fi-essentials": { value: 6, note: "Google Fi rides at QCI 6 on T-Mobile — the same top priority as T-Mobile's own Experience plans." }, "fi-standard": { value: 6, note: "Google Fi rides at QCI 6 on T-Mobile — the same top priority as T-Mobile's own Experience plans." }, diff --git a/features/mvno-coverage.feature b/features/mvno-coverage.feature index 82a3cfe..78c5d1d 100644 --- a/features/mvno-coverage.feature +++ b/features/mvno-coverage.feature @@ -30,5 +30,22 @@ Feature: MVNO coverage And the "Visible Visible+" plan is included And the "Visible Visible+ Pro" plan is included - Scenario: The catalog covers at least fourteen MVNO plans - Then the data includes at least 14 MVNO plans + Scenario: Mint's capped tiers are priced with the intro rate honored + When the scenarios are computed + Then the "Mint Mobile Mint 6GB" rows have a 24-month plan cost of 360.00 + And the "Mint Mobile Mint 17GB" rows have a 24-month plan cost of 420.00 + And the "Mint Mobile Mint 23GB" rows have a 24-month plan cost of 480.00 + + Scenario: Mint's data caps drive the needs assessment + Given the user needs "moderate" data, 0 GB of hotspot, and no international use + When the scenarios are computed + Then the "Mint Mobile Mint 23GB" plan is excluded by needs + And the "Mint Mobile Mint Unlimited" plan is included + + Scenario: Mint Unlimited's soft cap rules it out for heavy data use + Given the user needs "heavy" data, 0 GB of hotspot, and no international use + When the scenarios are computed + Then the "Mint Mobile Mint Unlimited" plan is excluded by needs + + Scenario: The catalog covers at least seventeen MVNO plans + Then the data includes at least 17 MVNO plans From 35981f9dda4430a6a15527b738f13df3297f1a00 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 21 Sep 2026 02:50:08 +0000 Subject: [PATCH 2/6] Add US Mobile Flex and Premium tiers, correct Starter's features From the workbook cross-reference, verified against US Mobile's plans pages and help docs via 2026 write-ups: - Unlimited Flex $17.50/mo (annual billing): 10GB soft cap, taxes in - Unlimited Premium $44/mo: unlimited premium data, 50GB high-speed hotspot, taxes in; QCI 8 on Warp (Verizon), 7 on Light Speed - Starter corrected: taxes ARE included, and its allotments are published (70GB data + 10GB hotspot on Warp/Light Speed; unlimited + 20GB on Dark Star) - the lower values are recorded, replacing the 0-unknown estimates, so Starter now matches moderate data needs Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 AI-Model: claude-fable-5 AI-Session: a2dcb3eb-078b-5762-92ed-cd66e0d885c4 AI-Transcript: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 --- data/offers.js | 63 ++++++++++++++++++++++++++++++---- data/qci.js | 2 ++ features/mvno-coverage.feature | 20 +++++++++-- 3 files changed, 77 insertions(+), 8 deletions(-) diff --git a/data/offers.js b/data/offers.js index e9f133c..afee65e 100644 --- a/data/offers.js +++ b/data/offers.js @@ -635,16 +635,67 @@ const PLANS = [ 4: { price: 25 }, 5: { price: 25 }, }, - taxesIncluded: false, - notes: "Flat per-line pricing; $22.50/mo on annual prepay. Higher tiers with priority data exist — not yet captured.", - source: "https://www.usmobile.com/blog/cheapest-unlimited-data-plan/", + taxesIncluded: true, + notes: "Taxes and fees included; flat per-line pricing, cheaper on annual prepay.", + source: "https://www.usmobile.com/plans", features: { - premiumData: 0, + premiumData: 70, + hotspotGB: 10, + international: false, + source: "https://www.usmobile.com/help/docs/our-plans/core-plans/unlimited-data-plans", + note: "70GB high-speed data and 10GB hotspot on the Verizon (Warp) and T-Mobile (Light Speed) networks; unlimited high-speed and 20GB hotspot on AT&T (Dark Star). The lower published values are recorded.", + }, + }, + { + id: "us-mobile-flex", + carrier: "US Mobile", + name: "Unlimited Flex", + tier: "base", + mvno: true, + network: "Verizon, T-Mobile, or AT&T (selectable)", + perLine: { + 1: { price: 17.5 }, + 2: { price: 17.5 }, + 3: { price: 17.5 }, + 4: { price: 17.5 }, + 5: { price: 17.5 }, + }, + taxesIncluded: true, + notes: "Taxes and fees included; billed annually at this monthly equivalent.", + source: "https://www.usmobile.com/plans", + features: { + premiumData: 10, hotspotGB: 0, international: false, - estimatedFeatures: ["premiumData", "hotspotGB"], + estimatedFeatures: ["hotspotGB"], source: "https://www.usmobile.com/blog/cheapest-unlimited-data-plan/", - note: "US Mobile lets you pick the underlying network; Premium tiers ride at higher priority.", + note: "10GB soft cap before slowdown; hotspot allotment not captured.", + }, + }, + { + id: "us-mobile-premium", + carrier: "US Mobile", + name: "Unlimited Premium", + tier: "mid", + mvno: true, + network: "Verizon, T-Mobile, or AT&T (selectable)", + perLine: { + 1: { price: 44 }, + 2: { price: 44 }, + 3: { price: 44 }, + 4: { price: 44 }, + 5: { price: 44 }, + }, + taxesIncluded: true, + notes: "Taxes and fees included; flat per-line pricing, cheaper on annual prepay.", + source: "https://www.usmobile.com/plans", + features: { + premiumData: "unlimited", + hotspotGB: 50, + international: false, + estimatedFeatures: ["international"], + source: "https://www.usmobile.com/blog/best-unlimited-data-plan/", + note: "Unlimited premium data; 50GB high-speed hotspot (unlimited at reduced speed after).", }, }, { diff --git a/data/qci.js b/data/qci.js index 4cabc19..6235748 100644 --- a/data/qci.js +++ b/data/qci.js @@ -55,6 +55,8 @@ const QCI_BY_PLAN = { "att-premium": { value: 8, note: "Unlimited premium data at AT&T postpaid priority." }, "att-elite": { value: 8, note: "Unlimited premium data at AT&T postpaid priority, with Turbo prioritization on top." }, "us-mobile-starter": { value: 9, note: "Starter tier is deprioritized; US Mobile's Premium tiers ride higher (QCI 8 on Verizon, QCI 7 on T-Mobile) — verify for your network choice." }, + "us-mobile-flex": { value: 9, note: "Flex is deprioritized like Starter — verify for your network choice." }, + "us-mobile-premium": { value: 8, note: "Premium rides at postpaid-like priority: QCI 8 on Verizon (Warp), QCI 7 on T-Mobile (Light Speed) — verify for your network choice." }, "boost-global": { value: 9, note: "Priority on Boost's own network and roaming partners not published — assumed deprioritized; verify." }, "total-starter": { value: 9, note: "Prepaid MVNO traffic on Verizon is deprioritized." }, "straight-talk-silver": { value: 9, note: "Prepaid MVNO traffic on Verizon is deprioritized." }, diff --git a/features/mvno-coverage.feature b/features/mvno-coverage.feature index 78c5d1d..3bb8a96 100644 --- a/features/mvno-coverage.feature +++ b/features/mvno-coverage.feature @@ -47,5 +47,21 @@ Feature: MVNO coverage When the scenarios are computed Then the "Mint Mobile Mint Unlimited" plan is excluded by needs - Scenario: The catalog covers at least seventeen MVNO plans - Then the data includes at least 17 MVNO plans + Scenario: US Mobile's Flex and Premium tiers are priced + When the scenarios are computed + Then the "US Mobile Unlimited Flex" rows have a 24-month plan cost of 420.00 + And the "US Mobile Unlimited Premium" rows have a 24-month plan cost of 1056.00 + + Scenario: US Mobile's tiers split on data priority under heavy needs + Given the user needs "heavy" data, 0 GB of hotspot, and no international use + When the scenarios are computed + Then the "US Mobile Unlimited Starter" plan is excluded by needs + And the "US Mobile Unlimited Premium" plan is included + + Scenario: US Mobile Starter's published allotment now counts as priority data + Given the user needs "moderate" data, 0 GB of hotspot, and no international use + When the scenarios are computed + Then the "US Mobile Unlimited Starter" plan is included + + Scenario: The catalog covers at least nineteen MVNO plans + Then the data includes at least 19 MVNO plans From 08ead66aa9f4e1b4ce89bc99e397b39e9649756f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 21 Sep 2026 02:51:48 +0000 Subject: [PATCH 3/6] Add Boost's full tier family and correct its network to AT&T From the workbook cross-reference, verified against Boost's help docs and plan pages via 2026 write-ups: - Unlimited $25 (30GB premium data), Unlimited+ $50 (40GB, hotspot included), Unlimited Premium $60 (50GB, hotspot included) join the existing Global Connection $40, which gains its published 40GB premium-data allotment - Hotspot allotments on + and Premium are not published, so they stay 0 with an estimated flag; the $25/$40 tiers note the $10 add-on - Network corrected: Boost connects through AT&T since Nov 2025, not its own network with roaming - QCI entries for the three new plans (assumed deprioritized; verify) Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 AI-Model: claude-fable-5 AI-Session: a2dcb3eb-078b-5762-92ed-cd66e0d885c4 AI-Transcript: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 --- data/offers.js | 90 +++++++++++++++++++++++++++++++--- data/qci.js | 5 +- features/mvno-coverage.feature | 16 +++++- 3 files changed, 101 insertions(+), 10 deletions(-) diff --git a/data/offers.js b/data/offers.js index afee65e..949768a 100644 --- a/data/offers.js +++ b/data/offers.js @@ -698,13 +698,38 @@ const PLANS = [ note: "Unlimited premium data; 50GB high-speed hotspot (unlimited at reduced speed after).", }, }, + { + id: "boost-unlimited", + carrier: "Boost Mobile", + name: "Unlimited", + tier: "base", + mvno: true, + network: "AT&T (Boost connects through AT&T since Nov 2025)", + perLine: { + 1: { price: 25 }, + 2: { price: 25, estimated: true }, + 3: { price: 25, estimated: true }, + 4: { price: 25, estimated: true }, + 5: { price: 25, estimated: true }, + }, + taxesIncluded: false, + notes: "$25/mo with AutoPay; hotspot is a $10/mo add-on on this tier.", + source: "https://www.boostmobile.com/plans/affordable-phone-plan", + features: { + premiumData: 30, + hotspotGB: 0, + international: false, + source: "https://help.boostmobile.com/docs/unlimited-plans", + note: "30GB premium data, then deprioritized; no hotspot included.", + }, + }, { id: "boost-global", carrier: "Boost Mobile", name: "Global Connection", tier: "base", mvno: true, - network: "Boost 5G (own network + AT&T/T-Mobile roaming)", + network: "AT&T (Boost connects through AT&T since Nov 2025)", perLine: { 1: { price: 40 }, 2: { price: 40, estimated: true }, @@ -713,15 +738,66 @@ const PLANS = [ 5: { price: 40, estimated: true }, }, taxesIncluded: false, - notes: "$40/mo with AutoPay ($45 without); built-in international calling from the US.", - source: "https://www.usmobile.com/blog/best-prepaid-phone-plans/", + notes: "$40/mo with AutoPay ($45 without); talk and text from the US to 190+ destinations. Hotspot is a $10/mo add-on.", + source: "https://help.boostmobile.com/docs/unlimited-plans", features: { - premiumData: 0, + premiumData: 40, hotspotGB: 0, international: false, - estimatedFeatures: ["premiumData", "hotspotGB"], - source: "https://www.usmobile.com/blog/best-prepaid-phone-plans/", - note: "International calling from the US is included; international roaming is not — hence not counted as international coverage.", + source: "https://help.boostmobile.com/docs/unlimited-plans", + note: "40GB premium data. International calling FROM the US is included; international roaming is not — hence not counted as international coverage.", + }, + }, + { + id: "boost-plus", + carrier: "Boost Mobile", + name: "Unlimited+", + tier: "mid", + mvno: true, + network: "AT&T (Boost connects through AT&T since Nov 2025)", + perLine: { + 1: { price: 50 }, + 2: { price: 50, estimated: true }, + 3: { price: 50, estimated: true }, + 4: { price: 50, estimated: true }, + 5: { price: 50, estimated: true }, + }, + taxesIncluded: false, + notes: "$50/mo with AutoPay; hotspot included.", + source: "https://help.boostmobile.com/docs/unlimited-plans", + features: { + premiumData: 40, + hotspotGB: 0, + international: false, + estimatedFeatures: ["hotspotGB"], + source: "https://help.boostmobile.com/docs/unlimited-plans", + note: "40GB premium data; hotspot included but its allotment is not published.", + }, + }, + { + id: "boost-premium", + carrier: "Boost Mobile", + name: "Unlimited Premium", + tier: "mid", + mvno: true, + network: "AT&T (Boost connects through AT&T since Nov 2025)", + perLine: { + 1: { price: 60 }, + 2: { price: 60, estimated: true }, + 3: { price: 60, estimated: true }, + 4: { price: 60, estimated: true }, + 5: { price: 60, estimated: true }, + }, + taxesIncluded: false, + notes: "$60/mo with AutoPay; hotspot included.", + source: "https://help.boostmobile.com/docs/unlimited-plans", + features: { + premiumData: 50, + hotspotGB: 0, + international: false, + estimatedFeatures: ["hotspotGB"], + source: "https://help.boostmobile.com/docs/unlimited-plans", + note: "50GB premium data; hotspot included but its allotment is not published.", }, }, { diff --git a/data/qci.js b/data/qci.js index 6235748..4e1db0f 100644 --- a/data/qci.js +++ b/data/qci.js @@ -57,7 +57,10 @@ const QCI_BY_PLAN = { "us-mobile-starter": { value: 9, note: "Starter tier is deprioritized; US Mobile's Premium tiers ride higher (QCI 8 on Verizon, QCI 7 on T-Mobile) — verify for your network choice." }, "us-mobile-flex": { value: 9, note: "Flex is deprioritized like Starter — verify for your network choice." }, "us-mobile-premium": { value: 8, note: "Premium rides at postpaid-like priority: QCI 8 on Verizon (Warp), QCI 7 on T-Mobile (Light Speed) — verify for your network choice." }, - "boost-global": { value: 9, note: "Priority on Boost's own network and roaming partners not published — assumed deprioritized; verify." }, + "boost-unlimited": { value: 9, note: "Priority on AT&T for the premium-data allotment not published — assumed deprioritized; verify." }, + "boost-global": { value: 9, note: "Priority on AT&T for the premium-data allotment not published — assumed deprioritized; verify." }, + "boost-plus": { value: 9, note: "Priority on AT&T for the premium-data allotment not published — assumed deprioritized; verify." }, + "boost-premium": { value: 9, note: "Priority on AT&T for the premium-data allotment not published — assumed deprioritized; verify." }, "total-starter": { value: 9, note: "Prepaid MVNO traffic on Verizon is deprioritized." }, "straight-talk-silver": { value: 9, note: "Prepaid MVNO traffic on Verizon is deprioritized." }, "tello-unlimited": { value: 7, note: "T-Mobile MVNOs ride at QCI 7 — same tier as Essentials and Metro." }, diff --git a/features/mvno-coverage.feature b/features/mvno-coverage.feature index 3bb8a96..7bc581c 100644 --- a/features/mvno-coverage.feature +++ b/features/mvno-coverage.feature @@ -63,5 +63,17 @@ Feature: MVNO coverage When the scenarios are computed Then the "US Mobile Unlimited Starter" plan is included - Scenario: The catalog covers at least nineteen MVNO plans - Then the data includes at least 19 MVNO plans + Scenario: Boost's tier family is priced with AutoPay rates + When the scenarios are computed + Then the "Boost Mobile Unlimited" rows have a 24-month plan cost of 600.00 + And the "Boost Mobile Unlimited+" rows have a 24-month plan cost of 1200.00 + And the "Boost Mobile Unlimited Premium" rows have a 24-month plan cost of 1440.00 + + Scenario: Boost's premium-data allotments drive the needs assessment + Given the user needs "moderate" data, 0 GB of hotspot, and no international use + When the scenarios are computed + Then the "Boost Mobile Unlimited" plan is included + And the "Boost Mobile Global Connection" plan is included + + Scenario: The catalog covers at least twenty-two MVNO plans + Then the data includes at least 22 MVNO plans From d20ece9fba410c84eb3bb11ffed40e4636d57d25 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 21 Sep 2026 02:54:29 +0000 Subject: [PATCH 4/6] Replace Metro's stale single plan with its April 2025 lineup Both our data and the research workbook carried Metro's pre-2025 lineup. The current one, verified via T-Mobile's newsroom, Metro's plans pages, WhistleOut and PhoneScoop write-ups: - Metro Starter Plus $40 flat (35GB, no hotspot, no AutoPay needed), $25/line at 4 lines published; single-line BYOD deal noted - Metro Flex Unlimited $50 (8GB hotspot), $30/line at 4 lines published; keeps the existing "metro" id - Metro Flex Unlimited Plus $60 (70GB premium data, 25GB hotspot, Amazon Prime, international texting) - All taxes-included with the 5-year price guarantee; unpublished 2/3/5-line prices are interpolated and flagged estimated - QCI 7 entries for the two new ids Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 AI-Model: claude-fable-5 AI-Session: a2dcb3eb-078b-5762-92ed-cd66e0d885c4 AI-Transcript: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 --- data/offers.js | 76 ++++++++++++++++++++++++++++------ data/qci.js | 2 + features/mvno-coverage.feature | 22 +++++++++- features/qci-and-data.feature | 2 +- 4 files changed, 87 insertions(+), 15 deletions(-) diff --git a/data/offers.js b/data/offers.js index 949768a..cfa6483 100644 --- a/data/offers.js +++ b/data/offers.js @@ -488,31 +488,83 @@ const PLANS = [ note: "23GB high-speed data; hotspot draws from the plan's data allotment. QCI 7 on T-Mobile.", }, }, + { + id: "metro-starter-plus", + carrier: "Metro", + name: "Metro Starter Plus", + tier: "base", + mvno: true, + network: "T-Mobile", + perLine: { + 1: { price: 40 }, + 2: { price: 35, estimated: true }, + 3: { price: 30, estimated: true }, + 4: { price: 25 }, + 5: { price: 25, estimated: true }, + }, + taxesIncluded: true, + notes: "Taxes and fees included; no AutoPay required. New single-line BYOD customers can get unlimited for $25/mo instead.", + source: "https://www.metrobyt-mobile.com/phone-plans", + features: { + premiumData: 35, + hotspotGB: 0, + priceGuaranteeYears: 5, + international: false, + source: "https://www.metrobyt-mobile.com/phone-plans", + note: "35GB high-speed data; no hotspot on this tier. QCI 7 on T-Mobile.", + }, + }, { id: "metro", carrier: "Metro", - name: "Metro Unlimited", + name: "Metro Flex Unlimited", tier: "base", mvno: true, network: "T-Mobile", perLine: { 1: { price: 50 }, - 2: { price: 50, estimated: true }, - 3: { price: 50, estimated: true }, - 4: { price: 50, estimated: true }, - 5: { price: 50, estimated: true }, + 2: { price: 43, estimated: true }, + 3: { price: 37, estimated: true }, + 4: { price: 30 }, + 5: { price: 30, estimated: true }, }, - taxesIncluded: false, - notes: "T-Mobile's prepaid brand. A $40 lower tier exists; multi-line discounts not yet captured.", - source: "https://www.usmobile.com/blog/best-prepaid-phone-plans/", + taxesIncluded: true, + notes: "AutoPay pricing, taxes and fees included. T-Mobile's prepaid brand, April 2025 lineup.", + source: "https://www.metrobyt-mobile.com/blog/newsroom/metro-new-plans", features: { premiumData: 0, - hotspotGB: 0, + hotspotGB: 8, priceGuaranteeYears: 5, international: false, - estimatedFeatures: ["hotspotGB"], - source: "https://www.usmobile.com/blog/best-prepaid-phone-plans/", - note: "QCI 7 on T-Mobile; hotspot allotment not captured.", + estimatedFeatures: ["premiumData"], + source: "https://www.metrobyt-mobile.com/blog/newsroom/metro-new-plans", + note: "Unlimited data with an unpublished priority allotment; 8GB hotspot. QCI 7 on T-Mobile.", + }, + }, + { + id: "metro-flex-plus", + carrier: "Metro", + name: "Metro Flex Unlimited Plus", + tier: "mid", + mvno: true, + network: "T-Mobile", + perLine: { + 1: { price: 60 }, + 2: { price: 53, estimated: true }, + 3: { price: 47, estimated: true }, + 4: { price: 40, estimated: true }, + 5: { price: 40, estimated: true }, + }, + taxesIncluded: true, + notes: "AutoPay pricing, taxes and fees included; Amazon Prime membership included.", + source: "https://www.metrobyt-mobile.com/blog/newsroom/metro-new-plans", + features: { + premiumData: 70, + hotspotGB: 25, + priceGuaranteeYears: 5, + international: false, + source: "https://www.metrobyt-mobile.com/blog/newsroom/metro-new-plans", + note: "70GB high-speed data; 25GB hotspot; unlimited texting from the US to 210+ destinations (roaming not included). QCI 7 on T-Mobile.", }, }, { diff --git a/data/qci.js b/data/qci.js index 4e1db0f..66edd31 100644 --- a/data/qci.js +++ b/data/qci.js @@ -44,7 +44,9 @@ const QCI_BY_PLAN = { "mint-6gb": { value: 7, note: "T-Mobile MVNOs like Mint ride at QCI 7 — same as Essentials and Metro." }, "mint-17gb": { value: 7, note: "T-Mobile MVNOs like Mint ride at QCI 7 — same as Essentials and Metro." }, "mint-23gb": { value: 7, note: "T-Mobile MVNOs like Mint ride at QCI 7 — same as Essentials and Metro." }, + "metro-starter-plus": { value: 7, note: "Metro rides at QCI 7 — same tier as T-Mobile Essentials." }, "metro": { value: 7, note: "Metro rides at QCI 7 — same tier as T-Mobile Essentials." }, + "metro-flex-plus": { value: 7, note: "Metro rides at QCI 7 — same tier as T-Mobile Essentials." }, "fi-essentials": { value: 6, note: "Google Fi rides at QCI 6 on T-Mobile — the same top priority as T-Mobile's own Experience plans." }, "fi-standard": { value: 6, note: "Google Fi rides at QCI 6 on T-Mobile — the same top priority as T-Mobile's own Experience plans." }, "fi-premium": { value: 6, note: "Google Fi rides at QCI 6 on T-Mobile — the same top priority as T-Mobile's own Experience plans." }, diff --git a/features/mvno-coverage.feature b/features/mvno-coverage.feature index 7bc581c..d4c8685 100644 --- a/features/mvno-coverage.feature +++ b/features/mvno-coverage.feature @@ -75,5 +75,23 @@ Feature: MVNO coverage Then the "Boost Mobile Unlimited" plan is included And the "Boost Mobile Global Connection" plan is included - Scenario: The catalog covers at least twenty-two MVNO plans - Then the data includes at least 22 MVNO plans + Scenario: Metro's 2026 lineup is priced with its published rates + When the scenarios are computed + Then the "Metro Metro Starter Plus" rows have a 24-month plan cost of 960.00 + And the "Metro Metro Flex Unlimited Plus" rows have a 24-month plan cost of 1440.00 + + Scenario: Metro's published four-line rate is used and not estimated + Given 4 lines with no new devices + And MVNOs are included + When the scenarios are computed + Then the "Metro Metro Flex Unlimited" rows have a 24-month plan cost of 2880.00 + And the "Metro Metro Flex Unlimited" rows are not flagged as estimated + + Scenario: Metro's data allotments drive the needs assessment + Given the user needs "moderate" data, 0 GB of hotspot, and no international use + When the scenarios are computed + Then the "Metro Metro Starter Plus" plan is included + And the "Metro Metro Flex Unlimited Plus" plan is included + + Scenario: The catalog covers at least twenty-four MVNO plans + Then the data includes at least 24 MVNO plans diff --git a/features/qci-and-data.feature b/features/qci-and-data.feature index a4c134b..94fcc3b 100644 --- a/features/qci-and-data.feature +++ b/features/qci-and-data.feature @@ -14,7 +14,7 @@ Feature: QCI reference and offer data integrity | plan | qci | | Visible Visible Unlimited | 9 | | Mint Mobile Mint Unlimited | 7 | - | Metro Metro Unlimited | 7 | + | Metro Metro Flex Unlimited | 7 | | Cricket Cricket Unlimited | 9 | Scenario: Every plan has a QCI entry in the reference file From 74303322be43d07c4c691fe5ffdedf13920c28e7 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 21 Sep 2026 02:56:23 +0000 Subject: [PATCH 5/6] Replace Cricket's stale single plan with its current three tiers Both our data and the research workbook predate Cricket's plan re-shuffle. Current lineup verified via Cricket's plan and family-plan pages, WhistleOut, UpPhone and PhoneScoop: - Sensible 10GB $30 (flat - no multi-line discount on capped plans) - Smart Unlimited $45, 15GB hotspot, $27.50/line published at 4 lines - Supreme Unlimited $55 (keeps the "cricket" id), 50GB hotspot, $32.50/line published at 4 lines; rides QCI 8 as the successor to the old Unlimited + 15GB Hotspot tier - All AutoPay, taxes-and-fees-included pricing; Mexico/Canada use on the unlimited tiers noted but not counted as international coverage, matching the AT&T-postpaid convention Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 AI-Model: claude-fable-5 AI-Session: a2dcb3eb-078b-5762-92ed-cd66e0d885c4 AI-Transcript: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 --- data/offers.js | 78 ++++++++++++++++++++++++++++------ data/qci.js | 4 +- features/mvno-coverage.feature | 18 +++++++- features/qci-and-data.feature | 2 +- 4 files changed, 85 insertions(+), 17 deletions(-) diff --git a/data/offers.js b/data/offers.js index cfa6483..780d666 100644 --- a/data/offers.js +++ b/data/offers.js @@ -568,29 +568,81 @@ const PLANS = [ }, }, { - id: "cricket", + id: "cricket-sensible", carrier: "Cricket", - name: "Cricket Unlimited", + name: "Sensible 10GB", tier: "base", mvno: true, network: "AT&T", perLine: { - 1: { price: 55 }, - 2: { price: 55, estimated: true }, - 3: { price: 55, estimated: true }, - 4: { price: 55, estimated: true }, - 5: { price: 55, estimated: true }, + 1: { price: 30 }, + 2: { price: 30 }, + 3: { price: 30 }, + 4: { price: 30 }, + 5: { price: 30 }, }, - taxesIncluded: false, - notes: "AT&T's prepaid brand. $55/mo with autopay ($60 without); multi-line discounts not yet captured.", - source: "https://www.usmobile.com/blog/best-prepaid-phone-plans/", + taxesIncluded: true, + notes: "AutoPay pricing ($35 without), taxes and fees included. Only Cricket's unlimited plans carry multi-line discounts, so this one is flat.", + source: "https://www.cricketwireless.com/cell-phone-plans", features: { - premiumData: 0, + premiumData: 10, hotspotGB: 0, international: false, estimatedFeatures: ["hotspotGB"], - source: "https://www.usmobile.com/blog/best-prepaid-phone-plans/", - note: "Mostly deprioritized on AT&T; hotspot allotment not captured.", + source: "https://www.cricketwireless.com/cell-phone-plans", + note: "10GB of data, then slowed; no Mexico/Canada use on this tier.", + }, + }, + { + id: "cricket-smart", + carrier: "Cricket", + name: "Smart Unlimited", + tier: "base", + mvno: true, + network: "AT&T", + perLine: { + 1: { price: 45 }, + 2: { price: 40, estimated: true }, + 3: { price: 33, estimated: true }, + 4: { price: 27.5 }, + 5: { price: 27.5, estimated: true }, + }, + taxesIncluded: true, + notes: "AutoPay pricing ($50 without), taxes and fees included. Calling/texting/data in Mexico and Canada.", + source: "https://www.cricketwireless.com/support/plans-and-features/family-plans.html", + features: { + premiumData: 0, + hotspotGB: 15, + international: false, + estimatedFeatures: ["premiumData"], + source: "https://www.whistleout.com/CellPhones/Guides/best-cricket-wireless-plans", + note: "Unlimited data, priority allotment not published; 15GB hotspot. Mexico/Canada use included (not counted as international coverage).", + }, + }, + { + id: "cricket", + carrier: "Cricket", + name: "Supreme Unlimited", + tier: "mid", + mvno: true, + network: "AT&T", + perLine: { + 1: { price: 55 }, + 2: { price: 50, estimated: true }, + 3: { price: 40, estimated: true }, + 4: { price: 32.5 }, + 5: { price: 32.5, estimated: true }, + }, + taxesIncluded: true, + notes: "AutoPay pricing ($60 without), taxes and fees included. Replaces the old Unlimited + 15GB Hotspot plan.", + source: "https://www.cricketwireless.com/support/plans-and-features/family-plans.html", + features: { + premiumData: 0, + hotspotGB: 50, + international: false, + estimatedFeatures: ["premiumData"], + source: "https://www.whistleout.com/CellPhones/Guides/best-cricket-wireless-plans", + note: "Unlimited data at Cricket's highest priority; 50GB hotspot; international texting and Mexico/Canada use included (roaming-based coverage not counted).", }, }, { diff --git a/data/qci.js b/data/qci.js index 66edd31..da65a51 100644 --- a/data/qci.js +++ b/data/qci.js @@ -75,7 +75,9 @@ const QCI_BY_PLAN = { "tmo-student": { value: 7, note: "Essentials-family priority (QCI 7) — verify." }, "vzw-55plus": { value: 9, note: "Priority level not published — assumed deprioritized like Verizon's base plans; verify." }, "att-55plus": { value: 9, note: "Priority level not published — assumed deprioritized; verify." }, - "cricket": { value: 9, note: "Most Cricket lines are deprioritized on AT&T (the Unlimited + 15GB hotspot tier rides at QCI 8)." }, + "cricket-sensible": { value: 9, note: "Cricket's capped tier is deprioritized on AT&T." }, + "cricket-smart": { value: 9, note: "Smart Unlimited is deprioritized on AT&T." }, + "cricket": { value: 8, note: "Supreme Unlimited (successor to Unlimited + 15GB Hotspot) rides at QCI 8 on AT&T — verify." }, }; // Node export for the BDD suite (features/); ignored in the browser. diff --git a/features/mvno-coverage.feature b/features/mvno-coverage.feature index d4c8685..a608c94 100644 --- a/features/mvno-coverage.feature +++ b/features/mvno-coverage.feature @@ -93,5 +93,19 @@ Feature: MVNO coverage Then the "Metro Metro Starter Plus" plan is included And the "Metro Metro Flex Unlimited Plus" plan is included - Scenario: The catalog covers at least twenty-four MVNO plans - Then the data includes at least 24 MVNO plans + Scenario: Cricket's 2026 lineup is priced with AutoPay, taxes-in rates + When the scenarios are computed + Then the "Cricket Sensible 10GB" rows have a 24-month plan cost of 720.00 + And the "Cricket Smart Unlimited" rows have a 24-month plan cost of 1080.00 + And the "Cricket Supreme Unlimited" rows have a 24-month plan cost of 1320.00 + + Scenario: Cricket's published four-line rates are used and not estimated + Given 4 lines with no new devices + And MVNOs are included + When the scenarios are computed + Then the "Cricket Smart Unlimited" rows have a 24-month plan cost of 2640.00 + And the "Cricket Supreme Unlimited" rows have a 24-month plan cost of 3120.00 + And the "Cricket Supreme Unlimited" rows are not flagged as estimated + + Scenario: The catalog covers at least twenty-six MVNO plans + Then the data includes at least 26 MVNO plans diff --git a/features/qci-and-data.feature b/features/qci-and-data.feature index 94fcc3b..615a3c5 100644 --- a/features/qci-and-data.feature +++ b/features/qci-and-data.feature @@ -15,7 +15,7 @@ Feature: QCI reference and offer data integrity | Visible Visible Unlimited | 9 | | Mint Mobile Mint Unlimited | 7 | | Metro Metro Flex Unlimited | 7 | - | Cricket Cricket Unlimited | 9 | + | Cricket Supreme Unlimited | 8 | Scenario: Every plan has a QCI entry in the reference file Then every plan in the offer data has a QCI entry From e83f71597bb4dd9d937bc4f8ffc89431d53a6b7c Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 21 Sep 2026 02:58:08 +0000 Subject: [PATCH 6/6] Add T-Mobile Essentials Saver 2.0 The workbook listed Essentials Saver at $55/1L; the current 2.0 plan (Aug 2026) is $50/line with AutoPay, verified via WhistleOut, UpPhone, SaveOnPhone and PhoneArena: - 50GB premium data (QCI 7 within the allotment), hotspot at 3G speeds only, 480p video; multi-line prices unpublished, flat-rate estimated - It ties AT&T Value 2.0 at $50 for one line and takes the cheapest- option slot in the classification scenario Skipped deliberately: the Walmart-only "Super Essentials Saver" $25 plan (in-store exclusive, 2-line cap, new accounts only) and the $20 Talk & Text plan (no data, outside a data-plan comparison). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 AI-Model: claude-fable-5 AI-Session: a2dcb3eb-078b-5762-92ed-cd66e0d885c4 AI-Transcript: https://claude.ai/code/session_01Ub7JVrQCdsgShcLwA6G579 --- data/offers.js | 23 +++++++++++++++++++++++ data/qci.js | 1 + features/needs-assessment.feature | 10 ++++++++++ features/plan-costs.feature | 5 +++++ features/results-classification.feature | 4 ++-- 5 files changed, 41 insertions(+), 2 deletions(-) diff --git a/data/offers.js b/data/offers.js index 780d666..33f35b0 100644 --- a/data/offers.js +++ b/data/offers.js @@ -131,6 +131,29 @@ const PLANS = [ note: "Lower priority than Experience plans; hotspot at reduced speeds only.", }, }, + { + id: "tmo-essentials-saver", + carrier: "T-Mobile", + name: "Essentials Saver", + tier: "base", + perLine: { + 1: { price: 50 }, + 2: { price: 50, estimated: true }, + 3: { price: 50, estimated: true }, + 4: { price: 50, estimated: true }, + 5: { price: 50, estimated: true }, + }, + taxesIncluded: false, + notes: "Essentials Saver 2.0 (Aug 2026): $50/line with AutoPay, $55 without. Taxes and fees extra.", + source: "https://www.whistleout.com/CellPhones/Carriers/T-Mobile/Personal/T-Mobile-Essentials-Savings", + features: { + premiumData: 50, + hotspotGB: 0, + international: false, + source: "https://saveonphone.com/plans/t-mobile-essentials-saver/", + note: "50GB premium data, then may slow during congestion; unlimited hotspot at 3G speeds only (no high-speed allotment); 480p video.", + }, + }, { id: "tmo-more", carrier: "T-Mobile", diff --git a/data/qci.js b/data/qci.js index da65a51..37c73a0 100644 --- a/data/qci.js +++ b/data/qci.js @@ -38,6 +38,7 @@ const QCI_BY_PLAN = { // T-Mobile network: QCI 6 = postpaid Experience; QCI 7 = Essentials, Metro, T-Mobile MVNOs "tmo-essentials": { value: 7, note: "One step below T-Mobile's top postpaid priority." }, + "tmo-essentials-saver": { value: 7, note: "Essentials-family priority (QCI 7) for the 50GB premium-data allotment.", allotment: true }, "tmo-more": { value: 6, note: "T-Mobile's top network priority." }, "tmo-beyond": { value: 6, note: "T-Mobile's top network priority." }, "mint": { value: 7, note: "T-Mobile MVNOs like Mint ride at QCI 7 — same as Essentials and Metro." }, diff --git a/features/needs-assessment.feature b/features/needs-assessment.feature index 52deb67..8a895fc 100644 --- a/features/needs-assessment.feature +++ b/features/needs-assessment.feature @@ -72,6 +72,16 @@ Feature: Needs-based plan recommendation And the "Google Fi Unlimited Standard" plan is excluded by needs And the "Google Fi Unlimited Premium" plan is included + Scenario: Essentials Saver's 50GB allotment sits between moderate and heavy + Given the user needs "moderate" data, 0 GB of hotspot, and no international use + When the scenarios are computed + Then the "T-Mobile Essentials Saver" plan is included + + Scenario: Essentials Saver drops out under heavy data needs + Given the user needs "heavy" data, 0 GB of hotspot, and no international use + When the scenarios are computed + Then the "T-Mobile Essentials Saver" plan is excluded by needs + Scenario: MVNOs without priority data are excluded when priority data is needed Given MVNOs are included And the user needs "moderate" data, 0 GB of hotspot, and no international use diff --git a/features/plan-costs.feature b/features/plan-costs.feature index d38d2a3..87db663 100644 --- a/features/plan-costs.feature +++ b/features/plan-costs.feature @@ -33,6 +33,11 @@ Feature: 24-month plan cost calculation Then the "Google Fi Unlimited Essentials" rows have a 24-month plan cost of 1920.00 And the "Google Fi Unlimited Essentials" rows are not flagged as estimated + Scenario: T-Mobile Essentials Saver single-line pricing + Given 1 line with no new devices + When the scenarios are computed + Then the "T-Mobile Essentials Saver" rows have a 24-month plan cost of 1200.00 + Scenario: A price the source did not publish is flagged as estimated Given 3 lines with no new devices When the scenarios are computed diff --git a/features/results-classification.feature b/features/results-classification.feature index 3d68ad5..7773373 100644 --- a/features/results-classification.feature +++ b/features/results-classification.feature @@ -13,8 +13,8 @@ Feature: Result classification — best option, cheapest option, differentiators Scenario: The cheapest option has the lowest true cost and is labeled When the results are classified - Then the cheapest option is "AT&T Value 2.0" - And the "AT&T Value 2.0" option carries the "Cheapest overall" differentiator + Then the cheapest option is "T-Mobile Essentials Saver" + And the "T-Mobile Essentials Saver" option carries the "Cheapest overall" differentiator Scenario: The best option maximizes plan features, tie broken by cost When the results are classified