From a6c2f652a00cb73cfc9bdd744cd20d2b7b957d27 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Fri, 8 May 2026 09:34:49 -0500 Subject: [PATCH 1/2] Update homepage typewriter prompts with PolicyEngine-computed shares MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The hardcoded `winnerPct` and `loserPct` values on the homepage were estimates. Replace them with values computed from actual PolicyEngine 2026 simulations and fix several prompts that were factually wrong: US: - "make the standard deduction universal" — the SD is already effectively universal, so the prompt is a no-op. Replaced with "make the Child Tax Credit fully refundable", which is the actual reform the displayed share captures. - "make the TCJA provisions permanent" — OBBBA already permanentized TCJA in 2025. Replaced with "the no-tax-on-tips deduction". - "expanding Medicaid eligibility" — PolicyEngine's Medicaid model is thin and the prior reform path produced a $0 sim. Replaced with "the senior bonus deduction" (an actual OBBBA provision). - "a flat tax at 25%" — replaced with "raising all income tax rates by 5 points" so the prompt matches the simulated reform. - "capping itemized deductions at $50,000" — PE-US has no clean parameter for an aggregate itemized cap. Replaced with "lowering the SALT cap to $10,000". UK: - "who gains from abolishing the personal allowance" → "who loses". Existing percentages already implied losers; the wording was wrong. - "who benefits from tapering the higher rate threshold" → "who loses from lowering the higher rate threshold to £40,000". - "the marginal tax rate cliff at Universal Credit taper" — the UC taper is a 55% plateau, not a cliff. Replaced with "doubling the UC work allowance". - "scrapping the two-child limit" — the limit is already inf in the PE-UK baseline. Replaced with "doubling child benefit". - "whether Universal Credit cuts push families into poverty" — vague. Replaced with "cutting the UC standard allowance by £10/week". - "means-testing the state pension" — not modelled. Replaced with "a 5% cut to the state pension". - "a £2,000 UBI" — no clean PE parameter. Replaced with "a £40/week universal child benefit". All values produced by the policyengine-prompt-impacts package (new repo: https://github.com/PolicyEngine/policyengine-prompt-impacts). The package owns the reform definitions, runs them against the PolicyEngine 2026 baseline, and emits the array literal pasted into this file. Regenerate via: policyengine-prompt-impacts run --country all --tsx prompts.tsx Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/components/home/TypewriterPrompt.tsx | 110 +++++++++--------- 1 file changed, 57 insertions(+), 53 deletions(-) diff --git a/website/src/components/home/TypewriterPrompt.tsx b/website/src/components/home/TypewriterPrompt.tsx index 4371434e8..7502e36be 100644 --- a/website/src/components/home/TypewriterPrompt.tsx +++ b/website/src/components/home/TypewriterPrompt.tsx @@ -13,160 +13,164 @@ export interface PromptData { loserPct: number; // fraction that lose (remainder are unaffected) } +// Winner/loser shares are computed against the PolicyEngine 2026 baseline by +// the policyengine-prompt-impacts package. Regenerate via: +// policyengine-prompt-impacts run --country all --tsx prompts.tsx +// See https://github.com/PolicyEngine/policyengine-prompt-impacts. const UK_PROMPTS: PromptData[] = [ { text: "the impact of raising the basic rate to 25p", winnerPct: 0, - loserPct: 0.65, + loserPct: 0.71, }, { - text: "how a £2,000 UBI would affect child poverty", - winnerPct: 0.75, - loserPct: 0.2, + text: "the poverty impact of a £40/week universal child benefit", + winnerPct: 0.23, + loserPct: 0, }, { - text: "who gains from abolishing the personal allowance", + text: "who loses from abolishing the personal allowance", winnerPct: 0, - loserPct: 0.85, + loserPct: 0.88, }, { text: "revenue from a 50p additional rate", winnerPct: 0, loserPct: 0.02 }, { text: "how removing the benefit cap affects single parents", - winnerPct: 0.05, + winnerPct: 0.009, loserPct: 0, }, { - text: "whether Universal Credit cuts push families into poverty", + text: "the poverty impact of cutting the UC standard allowance by £10/week", winnerPct: 0, - loserPct: 0.3, + loserPct: 0.19, }, { text: "how reducing the UC taper rate to 45% helps workers", - winnerPct: 0.25, + winnerPct: 0.09, loserPct: 0, }, { - text: "who loses from means-testing the state pension", + text: "who loses from a 5% cut to the state pension", winnerPct: 0, - loserPct: 0.4, + loserPct: 0.25, }, { text: "how raising NI thresholds affects low-income workers", - winnerPct: 0.45, + winnerPct: 0.55, loserPct: 0, }, { - text: "the marginal tax rate cliff at Universal Credit taper", - winnerPct: 0, - loserPct: 0.15, + text: "how doubling the UC work allowance helps workers", + winnerPct: 0.07, + loserPct: 0, }, { text: "the poverty impact of a £25/week child benefit increase", - winnerPct: 0.35, + winnerPct: 0.23, loserPct: 0, }, { - text: "how scrapping the two-child limit affects large families", - winnerPct: 0.08, + text: "the cost of doubling child benefit", + winnerPct: 0.23, loserPct: 0, }, { text: "how raising the higher rate threshold affects middle earners", - winnerPct: 0.2, + winnerPct: 0.18, loserPct: 0, }, { - text: "who benefits from tapering the higher rate threshold", + text: "who loses from lowering the higher rate threshold to £40,000", winnerPct: 0, - loserPct: 0.15, + loserPct: 0.28, }, { text: "how doubling the marriage allowance affects couples", - winnerPct: 0.12, + winnerPct: 0.08, loserPct: 0, }, { text: "the impact of lowering the additional rate threshold", winnerPct: 0, - loserPct: 0.05, + loserPct: 0.03, }, ]; const US_PROMPTS: PromptData[] = [ { text: "how tripling the standard deduction affects median income", - winnerPct: 0.7, + winnerPct: 0.62, loserPct: 0, }, { text: "the poverty impact of expanding the Child Tax Credit", - winnerPct: 0.35, - loserPct: 0, + winnerPct: 0.14, + loserPct: 0.001, }, { text: "the distributional impact of expanding the EITC", - winnerPct: 0.3, + winnerPct: 0.14, loserPct: 0, }, { text: "the impact of removing the SALT cap on high earners", - winnerPct: 0.15, - loserPct: 0, + winnerPct: 0.02, + loserPct: 0.001, }, { - text: "the cost of making the standard deduction universal", - winnerPct: 0.45, - loserPct: 0.1, + text: "the cost of making the Child Tax Credit fully refundable", + winnerPct: 0.09, + loserPct: 0, }, { text: "the poverty impact of doubling SNAP benefits", - winnerPct: 0.2, + winnerPct: 0.16, loserPct: 0, }, { - text: "how a flat tax at 25% compares to the current system", - winnerPct: 0.4, - loserPct: 0.4, + text: "the impact of raising all income tax rates by 5 points", + winnerPct: 0, + loserPct: 0.63, }, { text: "who pays more from eliminating the payroll tax cap", winnerPct: 0, - loserPct: 0.06, + loserPct: 0.04, }, { text: "how raising the top rate to 45% affects revenue", winnerPct: 0, - loserPct: 0.03, + loserPct: 0.02, }, { - text: "who benefits from expanding the Child and Dependent Care Credit", - winnerPct: 0.25, + text: "who benefits from doubling the Child and Dependent Care Credit", + winnerPct: 0.03, loserPct: 0, }, { - text: "how increasing SSI benefits affects poverty", - winnerPct: 0.15, + text: "how raising SSI benefits by 25% affects poverty", + winnerPct: 0.04, loserPct: 0, }, { - text: "how capping itemized deductions at $50,000 affects revenue", - winnerPct: 0, - loserPct: 0.12, + text: "the revenue from lowering the SALT cap to $10,000", + winnerPct: 0.001, + loserPct: 0.06, }, { - text: "the impact of restoring the expanded CTC permanently", - winnerPct: 0.35, + text: "the impact of restoring the expanded Child Tax Credit", + winnerPct: 0.1, loserPct: 0, }, { - text: "who benefits from expanding Medicaid eligibility", - winnerPct: 0.12, + text: "who benefits from the senior bonus deduction", + winnerPct: 0.13, loserPct: 0, }, { - text: "the impact of making the TCJA provisions permanent", - winnerPct: 0.6, - loserPct: 0.05, + text: "who benefits from the no-tax-on-tips deduction", + winnerPct: 0.004, + loserPct: 0, }, ]; From d43acf2af19c870a464af8f62d4a72975407282a Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Fri, 8 May 2026 20:15:34 -0500 Subject: [PATCH 2/2] Apply review fixes: corrected reform values, neutral wording MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three fixes from the policyengine-prompt-impacts review: - "raising the top rate to 45%" loserPct corrects from 0.02 to 0.008 (the package previously bumped both bracket 6 and bracket 7; bracket 7 alone is the correct top-rate-only reform). - Two UK prompts dropped the "helps workers" framing — "reducing the UC taper rate to 45%" → "affects workers"; "doubling the UC work allowance" → "who gains from doubling the UC work allowance". - "removing the SALT cap on high earners" → "the distributional impact of removing the SALT cap" (the simulation should reveal the affected group, not the prompt). - Sub-0.2% values previously surfaced as 0.001 (state-tax interaction noise on federal-only reforms). The package now floors these to 0. - "revenue from a 50p additional rate" wraps to multi-line for consistency with surrounding entries (prettier). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/components/home/TypewriterPrompt.tsx | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/website/src/components/home/TypewriterPrompt.tsx b/website/src/components/home/TypewriterPrompt.tsx index 7502e36be..eb5f9c29e 100644 --- a/website/src/components/home/TypewriterPrompt.tsx +++ b/website/src/components/home/TypewriterPrompt.tsx @@ -33,7 +33,11 @@ const UK_PROMPTS: PromptData[] = [ winnerPct: 0, loserPct: 0.88, }, - { text: "revenue from a 50p additional rate", winnerPct: 0, loserPct: 0.02 }, + { + text: "revenue from a 50p additional rate", + winnerPct: 0, + loserPct: 0.02, + }, { text: "how removing the benefit cap affects single parents", winnerPct: 0.009, @@ -45,7 +49,7 @@ const UK_PROMPTS: PromptData[] = [ loserPct: 0.19, }, { - text: "how reducing the UC taper rate to 45% helps workers", + text: "how reducing the UC taper rate to 45% affects workers", winnerPct: 0.09, loserPct: 0, }, @@ -60,7 +64,7 @@ const UK_PROMPTS: PromptData[] = [ loserPct: 0, }, { - text: "how doubling the UC work allowance helps workers", + text: "who gains from doubling the UC work allowance", winnerPct: 0.07, loserPct: 0, }, @@ -105,7 +109,7 @@ const US_PROMPTS: PromptData[] = [ { text: "the poverty impact of expanding the Child Tax Credit", winnerPct: 0.14, - loserPct: 0.001, + loserPct: 0, }, { text: "the distributional impact of expanding the EITC", @@ -113,9 +117,9 @@ const US_PROMPTS: PromptData[] = [ loserPct: 0, }, { - text: "the impact of removing the SALT cap on high earners", + text: "the distributional impact of removing the SALT cap", winnerPct: 0.02, - loserPct: 0.001, + loserPct: 0, }, { text: "the cost of making the Child Tax Credit fully refundable", @@ -140,7 +144,7 @@ const US_PROMPTS: PromptData[] = [ { text: "how raising the top rate to 45% affects revenue", winnerPct: 0, - loserPct: 0.02, + loserPct: 0.008, }, { text: "who benefits from doubling the Child and Dependent Care Credit", @@ -154,7 +158,7 @@ const US_PROMPTS: PromptData[] = [ }, { text: "the revenue from lowering the SALT cap to $10,000", - winnerPct: 0.001, + winnerPct: 0, loserPct: 0.06, }, {