@retiregolden/planner-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +181 -0
  3. package/package.json +77 -0
  4. package/src/App.tsx +246 -0
  5. package/src/RouteErrorBoundary.tsx +45 -0
  6. package/src/assets/hero.png +0 -0
  7. package/src/assets/react.svg +1 -0
  8. package/src/assets/vite.svg +1 -0
  9. package/src/data/fedInvestClient.ts +113 -0
  10. package/src/data/localStore.ts +42 -0
  11. package/src/data/planOrigin.ts +24 -0
  12. package/src/data/planStore.ts +165 -0
  13. package/src/data/v2Backup.ts +101 -0
  14. package/src/import/ImportPage.tsx +347 -0
  15. package/src/import/ReviewChecklistView.tsx +38 -0
  16. package/src/import/brokerCsv.ts +395 -0
  17. package/src/import/csv.ts +133 -0
  18. package/src/import/genericCsv.ts +224 -0
  19. package/src/import/projectionLab.ts +350 -0
  20. package/src/import/reviewChecklist.ts +33 -0
  21. package/src/import/tenForty.ts +275 -0
  22. package/src/index.css +630 -0
  23. package/src/index.ts +16 -0
  24. package/src/learn/ArticleBody.tsx +78 -0
  25. package/src/learn/ArticlePage.tsx +57 -0
  26. package/src/learn/GlossaryPage.tsx +33 -0
  27. package/src/learn/LearnAboutScreen.tsx +41 -0
  28. package/src/learn/LearnCards.tsx +41 -0
  29. package/src/learn/LearnLink.tsx +91 -0
  30. package/src/learn/LearningCenterPage.tsx +114 -0
  31. package/src/learn/SourcesPage.tsx +98 -0
  32. package/src/learn/components/ArticleFigure.tsx +34 -0
  33. package/src/learn/components/ArticleShell.tsx +86 -0
  34. package/src/learn/components/ComparisonTable.tsx +42 -0
  35. package/src/learn/components/FormulaBlock.tsx +34 -0
  36. package/src/learn/components/PurchasingPowerChart.tsx +41 -0
  37. package/src/learn/components/RelatedArticles.tsx +27 -0
  38. package/src/learn/components/ScenarioCard.tsx +24 -0
  39. package/src/learn/components/SourceList.tsx +23 -0
  40. package/src/learn/components/charts.tsx +21 -0
  41. package/src/learn/content/about-retiregolden.ts +100 -0
  42. package/src/learn/content/aca-premium-tax-credits-and-magi.ts +103 -0
  43. package/src/learn/content/account-types-overview.ts +106 -0
  44. package/src/learn/content/after-tax-estate.ts +111 -0
  45. package/src/learn/content/agi-magi-and-taxable-income.ts +112 -0
  46. package/src/learn/content/appealing-irmaa-ssa-44.ts +95 -0
  47. package/src/learn/content/assumption-general-inflation.ts +82 -0
  48. package/src/learn/content/assumption-healthcare-inflation.ts +85 -0
  49. package/src/learn/content/assumption-heir-tax-rate.ts +79 -0
  50. package/src/learn/content/assumption-investment-returns.ts +90 -0
  51. package/src/learn/content/assumption-longevity-planning-age.ts +78 -0
  52. package/src/learn/content/assumption-recent-magi.ts +83 -0
  53. package/src/learn/content/assumption-social-security-cola.ts +89 -0
  54. package/src/learn/content/assumption-social-security-trust-fund.ts +83 -0
  55. package/src/learn/content/assumption-state-tax-override.ts +79 -0
  56. package/src/learn/content/beneficiaries-and-account-titling.ts +99 -0
  57. package/src/learn/content/break-even-useful-lens.ts +94 -0
  58. package/src/learn/content/building-a-retirement-spending-budget.ts +100 -0
  59. package/src/learn/content/cola-and-inflation-protection.ts +102 -0
  60. package/src/learn/content/divorced-spousal-and-survivor-records.ts +104 -0
  61. package/src/learn/content/dynamic-spending-guardrails.ts +90 -0
  62. package/src/learn/content/earnings-test-before-fra.ts +100 -0
  63. package/src/learn/content/employer-match-and-contribution-order.ts +104 -0
  64. package/src/learn/content/examplePlanArticles.ts +525 -0
  65. package/src/learn/content/fees-expense-ratios-and-compounding-drag.ts +98 -0
  66. package/src/learn/content/fi-number-and-four-percent-rule.ts +64 -0
  67. package/src/learn/content/filling-a-tax-bracket-with-roth-conversions.ts +98 -0
  68. package/src/learn/content/funded-ratio.ts +70 -0
  69. package/src/learn/content/healthcare-after-65.ts +103 -0
  70. package/src/learn/content/healthcare-before-65.ts +104 -0
  71. package/src/learn/content/historical-vs-random-return-models.ts +101 -0
  72. package/src/learn/content/how-assumptions-change-the-answer.ts +105 -0
  73. package/src/learn/content/how-much-can-i-spend.ts +105 -0
  74. package/src/learn/content/how-social-security-is-taxed.ts +95 -0
  75. package/src/learn/content/how-the-optimizer-thinks.ts +102 -0
  76. package/src/learn/content/how-the-optimizer-values-after-tax-estate.ts +97 -0
  77. package/src/learn/content/how-to-model-accumulation.ts +67 -0
  78. package/src/learn/content/how-to-read-a-retirement-projection.ts +115 -0
  79. package/src/learn/content/hsas-and-qualified-medical-expenses.ts +108 -0
  80. package/src/learn/content/hsas-as-retirement-accounts.ts +101 -0
  81. package/src/learn/content/inflation-risk.ts +98 -0
  82. package/src/learn/content/inherited-ira-10-year-rule.ts +105 -0
  83. package/src/learn/content/insurance-in-your-retirement-plan.ts +103 -0
  84. package/src/learn/content/irmaa-two-year-lookback.ts +99 -0
  85. package/src/learn/content/long-term-care-costs-and-insurance.ts +103 -0
  86. package/src/learn/content/long-term-care-insurance-as-risk-transfer.ts +98 -0
  87. package/src/learn/content/longevity-risk.ts +99 -0
  88. package/src/learn/content/marginal-vs-effective-tax-rate.ts +98 -0
  89. package/src/learn/content/medicare-part-b-vs-part-d-irmaa.ts +102 -0
  90. package/src/learn/content/mortality-weighted-social-security.ts +113 -0
  91. package/src/learn/content/moving-to-retiregolden.ts +86 -0
  92. package/src/learn/content/niit-high-income-investment-tax.ts +98 -0
  93. package/src/learn/content/ordinary-income-vs-capital-gains.ts +103 -0
  94. package/src/learn/content/paying-conversion-taxes-taxable-vs-ira.ts +102 -0
  95. package/src/learn/content/pensions-and-annuities.ts +101 -0
  96. package/src/learn/content/permanent-life-insurance-in-a-plan.ts +106 -0
  97. package/src/learn/content/pia-aime-and-bend-points.ts +103 -0
  98. package/src/learn/content/planner-overview.ts +106 -0
  99. package/src/learn/content/planning-for-couples-and-survivor-years.ts +108 -0
  100. package/src/learn/content/privacy-what-stays-in-your-browser.ts +99 -0
  101. package/src/learn/content/qcds-qualified-charitable-distributions.ts +101 -0
  102. package/src/learn/content/reading-the-results-page.ts +96 -0
  103. package/src/learn/content/reading-the-social-security-analysis-page.ts +106 -0
  104. package/src/learn/content/real-estate-home-equity-and-debt.ts +100 -0
  105. package/src/learn/content/reports-csv-exports-and-sharing.ts +101 -0
  106. package/src/learn/content/risk-based-guardrails.ts +100 -0
  107. package/src/learn/content/rmds-required-minimum-distributions.ts +100 -0
  108. package/src/learn/content/roth-conversion-basics.ts +104 -0
  109. package/src/learn/content/rsus-and-espp.ts +101 -0
  110. package/src/learn/content/rule-of-55-and-72t.ts +107 -0
  111. package/src/learn/content/savings-rate-biggest-lever.ts +66 -0
  112. package/src/learn/content/seed-your-plan-from-your-tax-return.ts +93 -0
  113. package/src/learn/content/sensitivity-testing-what-changes-the-answer.ts +104 -0
  114. package/src/learn/content/sequence-of-returns-risk.ts +98 -0
  115. package/src/learn/content/social-security-bridge.ts +67 -0
  116. package/src/learn/content/social-security-claiming-age-basics.ts +113 -0
  117. package/src/learn/content/social-security-taxes-vs-benefits.ts +76 -0
  118. package/src/learn/content/spending-profiles-and-the-retirement-smile.ts +92 -0
  119. package/src/learn/content/spousal-and-survivor-benefits.ts +120 -0
  120. package/src/learn/content/ssdi-and-retirement-planning.ts +72 -0
  121. package/src/learn/content/standard-deduction-senior-deduction-and-itemizing.ts +97 -0
  122. package/src/learn/content/state-income-taxes-in-retirement.ts +97 -0
  123. package/src/learn/content/step-up-in-basis.ts +102 -0
  124. package/src/learn/content/survivor-planning-for-couples.ts +110 -0
  125. package/src/learn/content/survivor-spending-in-couple-plans.ts +98 -0
  126. package/src/learn/content/tax-cliffs-and-bracket-edges.ts +105 -0
  127. package/src/learn/content/tax-loss-and-gain-harvesting.ts +99 -0
  128. package/src/learn/content/taxable-brokerage-basis-and-capital-gains.ts +99 -0
  129. package/src/learn/content/three-big-questions-spending-time-risk.ts +103 -0
  130. package/src/learn/content/tips-ladders.ts +92 -0
  131. package/src/learn/content/todays-dollars-vs-future-dollars.ts +107 -0
  132. package/src/learn/content/traditional-vs-roth-contributions.ts +113 -0
  133. package/src/learn/content/troubleshooting-surprising-results.ts +105 -0
  134. package/src/learn/content/trust-fund-haircut-scenarios.ts +101 -0
  135. package/src/learn/content/understanding-monte-carlo-success-rate.ts +118 -0
  136. package/src/learn/content/understanding-your-plan-assumptions.ts +134 -0
  137. package/src/learn/content/using-assumptions-and-provenance.ts +98 -0
  138. package/src/learn/content/using-scenarios-to-compare-choices.ts +99 -0
  139. package/src/learn/content/what-changes-when-you-move-states.ts +141 -0
  140. package/src/learn/content/what-is-fire.ts +65 -0
  141. package/src/learn/content/what-monte-carlo-proves.ts +98 -0
  142. package/src/learn/content/what-retiregolden-models.ts +103 -0
  143. package/src/learn/content/what-retirement-healthcare-really-costs.ts +117 -0
  144. package/src/learn/content/why-95-percent-is-not-a-guarantee.ts +98 -0
  145. package/src/learn/content/why-roth-conversions-raise-other-costs.ts +106 -0
  146. package/src/learn/content/why-small-tax-cliffs-can-matter.ts +109 -0
  147. package/src/learn/content/widows-penalty-and-survivor-brackets.ts +106 -0
  148. package/src/learn/content/withdrawal-order-basics.ts +105 -0
  149. package/src/learn/glossary.ts +191 -0
  150. package/src/learn/inlineMarkdown.tsx +54 -0
  151. package/src/learn/learn.css +537 -0
  152. package/src/learn/learningRegistry.ts +502 -0
  153. package/src/longevity/LongevityResults.tsx +85 -0
  154. package/src/longevity/LongevityWizard.tsx +305 -0
  155. package/src/longevity/constants.ts +15 -0
  156. package/src/longevity/factors.ts +125 -0
  157. package/src/longevity/model.ts +31 -0
  158. package/src/longevity/persistedGuard.ts +129 -0
  159. package/src/longevity/storage.ts +40 -0
  160. package/src/mc/messages.ts +118 -0
  161. package/src/mc/monteCarlo.worker.ts +44 -0
  162. package/src/mc/pool.ts +267 -0
  163. package/src/mc/runRequest.ts +125 -0
  164. package/src/optimize/messages.ts +84 -0
  165. package/src/optimize/optimize.worker.ts +29 -0
  166. package/src/optimize/runOptimize.ts +92 -0
  167. package/src/optimize/runSpendingSolve.ts +47 -0
  168. package/src/optimize/runner.ts +21 -0
  169. package/src/optimize/spendingMessages.ts +44 -0
  170. package/src/optimize/spendingRunner.ts +21 -0
  171. package/src/optimize/spendingSolve.worker.ts +18 -0
  172. package/src/planner/AssumptionsCardPage.tsx +136 -0
  173. package/src/planner/BucketLensCard.tsx +114 -0
  174. package/src/planner/ComparePlansPage.tsx +219 -0
  175. package/src/planner/DisclaimerPage.tsx +88 -0
  176. package/src/planner/HowTestedPage.tsx +159 -0
  177. package/src/planner/LiveStatus.tsx +15 -0
  178. package/src/planner/LongevityModal.tsx +55 -0
  179. package/src/planner/Modal.tsx +97 -0
  180. package/src/planner/MonteCarloPage.tsx +907 -0
  181. package/src/planner/OptimizePage.tsx +611 -0
  182. package/src/planner/PlanContext.tsx +198 -0
  183. package/src/planner/PlanPickerPage.tsx +124 -0
  184. package/src/planner/PlanWorkspace.tsx +290 -0
  185. package/src/planner/ProvenancePanel.tsx +45 -0
  186. package/src/planner/RelocationComparePage.tsx +485 -0
  187. package/src/planner/ReportPage.tsx +375 -0
  188. package/src/planner/ResultsPage.tsx +817 -0
  189. package/src/planner/ScenariosPage.tsx +285 -0
  190. package/src/planner/SocialSecuritySection.tsx +556 -0
  191. package/src/planner/SpendingSolverPage.tsx +512 -0
  192. package/src/planner/SsAnalysisPage.tsx +1134 -0
  193. package/src/planner/SurvivalPercentileModal.tsx +161 -0
  194. package/src/planner/SurvivorTransitionPage.tsx +286 -0
  195. package/src/planner/assumptionsExport.ts +371 -0
  196. package/src/planner/bucketLens.ts +89 -0
  197. package/src/planner/chartFrame.ts +8 -0
  198. package/src/planner/chartStyle.ts +11 -0
  199. package/src/planner/dialogViews.tsx +184 -0
  200. package/src/planner/dialogs.tsx +133 -0
  201. package/src/planner/examples/ExampleLibrary.tsx +189 -0
  202. package/src/planner/examples/ExamplePreviewBanner.tsx +55 -0
  203. package/src/planner/examples/ExamplesPage.tsx +25 -0
  204. package/src/planner/examples/OpenExampleButton.tsx +61 -0
  205. package/src/planner/examples/buildAggressiveSaver.ts +102 -0
  206. package/src/planner/examples/buildAnnuityEstate.ts +137 -0
  207. package/src/planner/examples/buildBaristaFire.ts +115 -0
  208. package/src/planner/examples/buildBracketFillRoth.ts +65 -0
  209. package/src/planner/examples/buildBridgeEarlyRetirement.ts +94 -0
  210. package/src/planner/examples/buildBrokerageNoHsa.ts +109 -0
  211. package/src/planner/examples/buildCoastFire.ts +88 -0
  212. package/src/planner/examples/buildContext.ts +20 -0
  213. package/src/planner/examples/buildEarlyCareerMatch.ts +93 -0
  214. package/src/planner/examples/buildEarlyRetireeAca.ts +61 -0
  215. package/src/planner/examples/buildExampleCouple.ts +103 -0
  216. package/src/planner/examples/buildFixedTargetSpending.ts +74 -0
  217. package/src/planner/examples/buildGlidepathAllocation.ts +131 -0
  218. package/src/planner/examples/buildGuardrailsFlex.ts +120 -0
  219. package/src/planner/examples/buildHsaPropertyDepth.ts +109 -0
  220. package/src/planner/examples/buildHsaStealthRetirement.ts +97 -0
  221. package/src/planner/examples/buildLeanFatFire.ts +109 -0
  222. package/src/planner/examples/buildLtcShock.ts +62 -0
  223. package/src/planner/examples/buildMovingStateTax.ts +53 -0
  224. package/src/planner/examples/buildNoAnnuityBrokerage.ts +92 -0
  225. package/src/planner/examples/buildRmdIrmaa.ts +55 -0
  226. package/src/planner/examples/buildSalaryGrowthEscalation.ts +96 -0
  227. package/src/planner/examples/buildStaticAllocationControl.ts +96 -0
  228. package/src/planner/examples/buildSurvivorYears.ts +62 -0
  229. package/src/planner/examples/buildUnderSavedSingle.ts +51 -0
  230. package/src/planner/examples/exampleCopy.ts +23 -0
  231. package/src/planner/examples/loadExample.ts +90 -0
  232. package/src/planner/examples/registry.ts +313 -0
  233. package/src/planner/explainPanels.tsx +233 -0
  234. package/src/planner/fields.tsx +381 -0
  235. package/src/planner/format.ts +33 -0
  236. package/src/planner/home/DataAndPrivacyCard.tsx +56 -0
  237. package/src/planner/home/GettingStartedPaths.tsx +46 -0
  238. package/src/planner/home/GettingStartedReopener.tsx +32 -0
  239. package/src/planner/home/StartHereLinks.tsx +22 -0
  240. package/src/planner/home/WelcomeHero.tsx +39 -0
  241. package/src/planner/home/YourPlans.tsx +72 -0
  242. package/src/planner/home/importErrorMessage.ts +22 -0
  243. package/src/planner/home/startHereSlugs.ts +7 -0
  244. package/src/planner/home/useHomeData.ts +190 -0
  245. package/src/planner/home/useHomeMode.ts +47 -0
  246. package/src/planner/householdActions.ts +22 -0
  247. package/src/planner/insights/InsightCardView.tsx +340 -0
  248. package/src/planner/insights/InsightsPage.tsx +204 -0
  249. package/src/planner/insights/categoryLabels.ts +11 -0
  250. package/src/planner/learnLinks.ts +85 -0
  251. package/src/planner/marketModelPicker.ts +172 -0
  252. package/src/planner/optimizePageChart.ts +40 -0
  253. package/src/planner/optimizePageClaim.ts +64 -0
  254. package/src/planner/planCompleteness.ts +27 -0
  255. package/src/planner/planContextCore.ts +26 -0
  256. package/src/planner/planner.css +2304 -0
  257. package/src/planner/provenanceLinks.ts +25 -0
  258. package/src/planner/sections/AccountFields.tsx +872 -0
  259. package/src/planner/sections/AccountsSection.tsx +89 -0
  260. package/src/planner/sections/AllocationPanel.tsx +261 -0
  261. package/src/planner/sections/AssumptionsSection.tsx +256 -0
  262. package/src/planner/sections/HouseholdSection.tsx +243 -0
  263. package/src/planner/sections/IncomeFloorSection.tsx +418 -0
  264. package/src/planner/sections/IncomeSection.tsx +170 -0
  265. package/src/planner/sections/InsuranceSection.tsx +362 -0
  266. package/src/planner/sections/SpendingSection.tsx +904 -0
  267. package/src/planner/sections/StrategySection.tsx +349 -0
  268. package/src/planner/sections/UpdateBalancesPanel.tsx +182 -0
  269. package/src/planner/sections/sectionHelpers.ts +48 -0
  270. package/src/planner/sections/shared.tsx +15 -0
  271. package/src/planner/sections.tsx +15 -0
  272. package/src/planner/ssAnalysis.ts +325 -0
  273. package/src/planner/successBand.ts +20 -0
  274. package/src/planner/survivorAnalysis.ts +277 -0
  275. package/src/planner/usStates.ts +19 -0
  276. package/src/planner/useMcSuccessRate.ts +77 -0
  277. package/src/planner/useProjection.ts +63 -0
  278. package/src/relocation/messages.ts +21 -0
  279. package/src/relocation/relocation.worker.ts +18 -0
  280. package/src/relocation/runRelocation.ts +17 -0
  281. package/src/relocation/runner.ts +22 -0
  282. package/src/report/brandingContext.ts +15 -0
  283. package/src/report/downloadReport.ts +34 -0
  284. package/src/report/reportHtml.ts +547 -0
  285. package/src/routes/LearnRoutes.tsx +46 -0
  286. package/src/routes/PlanRoutes.tsx +55 -0
  287. package/src/routes/RouteFallback.tsx +9 -0
  288. package/src/socialSecurity/breakEven.ts +107 -0
  289. package/src/socialSecurity/expectedPv.ts +164 -0
  290. package/src/socialSecurity/explain.ts +92 -0
  291. package/src/socialSecurity/ficaReturn.ts +81 -0
  292. package/src/socialSecurity/persistedSsGuard.ts +138 -0
  293. package/src/socialSecurity/ssFormUtils.ts +48 -0
  294. package/src/socialSecurity/ssaStatementXml.ts +156 -0
  295. package/src/socialSecurity/storage.ts +69 -0
  296. package/src/socialSecurity/survivorSwitching.ts +153 -0
  297. package/src/testSupport/samplePlan.ts +2 -0
  298. package/src/workers/run.ts +45 -0
@@ -0,0 +1,83 @@
1
+ import type { LearningArticle } from '../learningRegistry'
2
+
3
+ export const assumptionRecentMagiArticle: LearningArticle = {
4
+ slug: 'assumption-recent-magi',
5
+ title: 'Recent MAGI and the IRMAA lookback',
6
+ description: 'Why RetireGolden asks for your recent Modified Adjusted Gross Income, and how it affects your early retirement Medicare costs.',
7
+ category: 'assumptions',
8
+ tags: ['taxes', 'magi', 'irmaa', 'medicare', 'lookback'],
9
+ audience: 'intermediate',
10
+ status: 'ready',
11
+ lastReviewed: '2026-06-30',
12
+ reviewCadence: 'annual',
13
+ sourceUrls: [
14
+ 'https://www.cms.gov/newsroom/fact-sheets/2026-medicare-parts-b-premiums-deductibles',
15
+ ],
16
+ relatedArticles: [
17
+ 'irmaa-two-year-lookback',
18
+ 'medicare-part-b-vs-part-d-irmaa',
19
+ 'understanding-your-plan-assumptions',
20
+ ],
21
+ relatedPlannerRoutes: ['/plan/:planId/assumptions'],
22
+ currentYearSensitive: true,
23
+ priority: 'P1',
24
+ blocks: [
25
+ {
26
+ type: 'prose',
27
+ md: "Medicare premiums for high earners are adjusted upward based on income. These surcharges are called the **Income-Related Monthly Adjustment Amount (IRMAA)**. Because the government determines IRMAA using tax returns from **two years prior**, your plan needs a seed value to model your Medicare costs in the first few years of retirement.",
28
+ },
29
+ { type: 'heading', text: 'Quick takeaways' },
30
+ {
31
+ type: 'list',
32
+ items: [
33
+ 'RetireGolden defaults **Recent annual MAGI** to **$0**, meaning no high-income surcharges are modeled for your first two years of Medicare unless you override it.',
34
+ 'Medicare uses a **two-year lookback**: your 2026 premiums are based on the Modified Adjusted Gross Income (MAGI) reported on your 2024 tax return.',
35
+ 'Entering your pre-retirement MAGI here ensures that the initial years of your Medicare projections are accurate, capturing any lag between high employment earnings and retirement.',
36
+ ],
37
+ },
38
+ { type: 'heading', text: 'Why is there a lookback?' },
39
+ {
40
+ type: 'prose',
41
+ md: "When you enroll in Medicare at age 65 (or continue coverage), the Social Security Administration retrieves your tax data from the IRS. Because of processing lag, the most recent finalized tax return is from two years ago. For example:",
42
+ },
43
+ {
44
+ type: 'list',
45
+ items: [
46
+ '**2026 Medicare premiums** look back to your **2024 tax return**.',
47
+ '**2027 Medicare premiums** look back to your **2025 tax return**.',
48
+ ],
49
+ },
50
+ {
51
+ type: 'table',
52
+ caption: 'How the seed rolls off.',
53
+ columns: ['Projection year', 'MAGI source RetireGolden uses', 'What it affects'],
54
+ rows: [
55
+ ['First Medicare year', 'Recent annual MAGI seed', 'Initial IRMAA tier and Medicare premium estimate'],
56
+ ['Second Medicare year', 'Prior-year plan MAGI or the recent seed where applicable', 'The remaining lookback transition'],
57
+ ['Later years', 'MAGI generated by the projection itself', 'Ongoing IRMAA and tax-driven healthcare costs'],
58
+ ],
59
+ },
60
+ {
61
+ type: 'prose',
62
+ md: "This two-year lag means that if you retire at 65 and transition from a high salary to a low retirement income, your Medicare premiums for the first two years will still reflect your high working years. RetireGolden uses the **Recent annual MAGI** field as the input for this two-year-prior income to model the correct premiums for those initial years.",
63
+ },
64
+ { type: 'heading', text: 'Life-changing events (Form SSA-44)' },
65
+ {
66
+ type: 'prose',
67
+ md: "If your income drops significantly due to a qualifying \"life-changing event\" (such as retirement, marriage, or loss of income), you can file Form SSA-44 with the Social Security Administration to request a premium reduction. RetireGolden does not automatically model this appeal, but you can simulate it by entering a lower MAGI value in this field if you plan to appeal.",
68
+ },
69
+ { type: 'heading', text: 'Watch-outs' },
70
+ {
71
+ type: 'list',
72
+ items: [
73
+ 'Recent MAGI is an input seed, not an ongoing income forecast.',
74
+ 'If you expect a successful SSA-44 appeal, model the lower recent MAGI you expect Medicare to use.',
75
+ ],
76
+ },
77
+ { type: 'heading', text: 'Where this shows up in the app' },
78
+ {
79
+ type: 'prose',
80
+ md: 'You can enter your pre-retirement income under **Recent annual MAGI** on the **Assumptions** screen. This value is used solely as a starting seed for the lookback calculation and does not affect the engine\'s ongoing income projections.',
81
+ },
82
+ ],
83
+ }
@@ -0,0 +1,89 @@
1
+ import type { LearningArticle } from '../learningRegistry'
2
+
3
+ export const assumptionSocialSecurityColaArticle: LearningArticle = {
4
+ slug: 'assumption-social-security-cola',
5
+ title: 'The Social Security COLA',
6
+ description: 'How RetireGolden models the Social Security Cost-of-Living Adjustment (COLA) and how it protects your benefits.',
7
+ category: 'assumptions',
8
+ tags: ['social security', 'cola', 'inflation', 'cpi-w'],
9
+ audience: 'intermediate',
10
+ status: 'ready',
11
+ lastReviewed: '2026-06-30',
12
+ reviewCadence: 'annual',
13
+ sourceUrls: [
14
+ 'https://www.ssa.gov/cola/',
15
+ 'https://www.ssa.gov/news/en/cola/factsheets/2026.html',
16
+ 'https://www.ssa.gov/oact/TR/2025/2025_Long-Range_Economic_Assumptions.pdf',
17
+ ],
18
+ relatedArticles: [
19
+ 'cola-and-inflation-protection',
20
+ 'assumption-general-inflation',
21
+ 'understanding-your-plan-assumptions',
22
+ ],
23
+ relatedPlannerRoutes: ['/plan/:planId/assumptions', '/plan/:planId/social-security'],
24
+ currentYearSensitive: true,
25
+ priority: 'P1',
26
+ blocks: [
27
+ {
28
+ type: 'prose',
29
+ md: "Social Security is one of the few retirement income sources that is legally guaranteed to rise with inflation. This protection is delivered through the annual **Cost-of-Living Adjustment (COLA)**, which adjusts monthly benefits to keep pace with rising consumer prices.",
30
+ },
31
+ { type: 'heading', text: 'Quick takeaways' },
32
+ {
33
+ type: 'list',
34
+ items: [
35
+ 'By default, RetireGolden\'s Social Security COLA is set to **match inflation** (automatically syncing with the general inflation rate, which is 2.5% by default).',
36
+ 'Social Security COLA is statutorily tied to the annual change in the **CPI-W** (Consumer Price Index for Urban Wage Earners and Clerical Workers).',
37
+ 'The official COLA for **2026 is 2.8%**. Over the long term, the Social Security Trustees assume an ultimate COLA of **2.4%**.',
38
+ ],
39
+ },
40
+ { type: 'heading', text: 'How COLA is calculated' },
41
+ {
42
+ type: 'prose',
43
+ md: "Every October, the Social Security Administration measures price changes using the CPI-W. It compares the average CPI-W from the third quarter (July, August, September) of the current year to the third quarter of the prior year. The percentage increase is the COLA applied to benefits starting the following January. If prices do not rise (or fall), the COLA is 0%.",
44
+ },
45
+ {
46
+ type: 'prose',
47
+ md: "Because COLA is designed to keep your real buying power flat, RetireGolden's neutral default is **Match Inflation**. This means that if you change your plan's general inflation rate, your projected Social Security benefit increases accordingly in nominal terms, keeping its real value in today's dollars constant.",
48
+ },
49
+ {
50
+ type: 'table',
51
+ caption: 'How the COLA setting changes the projection.',
52
+ columns: ['Setting', 'What RetireGolden does', 'When it is useful'],
53
+ rows: [
54
+ ['Match inflation', 'Benefits grow with the general inflation assumption', 'Neutral baseline; keeps real Social Security buying power flat'],
55
+ ['Fixed rate', 'Benefits grow at the annual rate you enter', 'Stress-testing policy changes or a gap between benefit COLA and personal inflation'],
56
+ ],
57
+ },
58
+ { type: 'heading', text: 'When to override the default' },
59
+ {
60
+ type: 'prose',
61
+ md: "RetireGolden allows you to set a **Fixed Rate** COLA override. This is useful for modeling specific policy changes or personal expectations:",
62
+ },
63
+ {
64
+ type: 'list',
65
+ items: [
66
+ '**Chained CPI Reform:** Some policymakers propose switching to the ' +
67
+ '"Chained CPI" index, which typically runs about 0.25 percentage points ' +
68
+ 'lower than traditional CPI-W. You can model this by setting a fixed COLA rate ' +
69
+ 'slightly below your inflation assumption (e.g., a 2.2% COLA under 2.5% inflation).',
70
+ '**Fixed Divergence:** If you believe inflation indexes understate your ' +
71
+ 'personal expenses or that healthcare costs will outpace your benefit growth, ' +
72
+ 'adjusting the COLA mode can reveal the long-term impact on your income.',
73
+ ],
74
+ },
75
+ { type: 'heading', text: 'Watch-outs' },
76
+ {
77
+ type: 'list',
78
+ items: [
79
+ 'A fixed COLA is a scenario assumption, not a forecast of future SSA announcements.',
80
+ 'Changing COLA can matter most for households that rely heavily on Social Security late in retirement.',
81
+ ],
82
+ },
83
+ { type: 'heading', text: 'Where this shows up in the app' },
84
+ {
85
+ type: 'prose',
86
+ md: 'You can adjust the **Social Security COLA** mode on the **Assumptions** screen. It defaults to "Match inflation," but you can toggle it to "Fixed rate" and enter a custom percentage.',
87
+ },
88
+ ],
89
+ }
@@ -0,0 +1,83 @@
1
+ import type { LearningArticle } from '../learningRegistry'
2
+
3
+ export const assumptionSocialSecurityTrustFundArticle: LearningArticle = {
4
+ slug: 'assumption-social-security-trust-fund',
5
+ title: 'The Social Security trust-fund shortfall',
6
+ description: 'Why RetireGolden allows you to model a Social Security benefit cut, and the data behind the solvency projections.',
7
+ category: 'assumptions',
8
+ tags: ['social security', 'trust fund', 'haircut', 'solvency', 'benefit cut'],
9
+ audience: 'intermediate',
10
+ status: 'ready',
11
+ lastReviewed: '2026-07-08',
12
+ reviewCadence: 'rule-change',
13
+ sourceUrls: [
14
+ 'https://www.ssa.gov/news/en/press/releases/2026-06-09.html',
15
+ 'https://www.ssa.gov/oact/TR/2026/',
16
+ 'https://www.everycrsreport.com/reports/IF13256.html',
17
+ ],
18
+ relatedArticles: [
19
+ 'trust-fund-haircut-scenarios',
20
+ 'social-security-claiming-age-basics',
21
+ 'understanding-your-plan-assumptions',
22
+ ],
23
+ relatedPlannerRoutes: ['/plan/:planId/assumptions', '/plan/:planId/social-security'],
24
+ currentYearSensitive: true,
25
+ priority: 'P1',
26
+ blocks: [
27
+ {
28
+ type: 'prose',
29
+ md: "One of the most common anxieties in retirement planning is the long-term solvency of Social Security. RetireGolden includes a built-in toggle that allows you to stress-test your plan against a statutory benefit cut if Congress does not act to resolve the trust fund shortfall.",
30
+ },
31
+ { type: 'heading', text: 'Quick takeaways' },
32
+ {
33
+ type: 'list',
34
+ items: [
35
+ 'By default, RetireGolden\'s solvency cut toggle is **off** (modeling scheduled benefits).',
36
+ 'When turned on, the default settings model a **17% cut starting in 2034**, directly matching the findings of the **2026 Social Security Trustees Report**.',
37
+ 'If the retirement-only fund (OASI) is viewed in isolation, reserves deplete in **2032** with a **22% cut** required to match ongoing revenues.',
38
+ ],
39
+ },
40
+ { type: 'heading', text: 'Solvency data from the 2026 Trustees Report' },
41
+ {
42
+ type: 'prose',
43
+ md: "Social Security is funded on a pay-as-you-go basis, supplemented by reserves held in trust funds. Due to demographic shifts (a larger retiree cohort relative to workers), the system is paying out more than it collects. According to the 2026 Trustees Report:",
44
+ },
45
+ {
46
+ type: 'list',
47
+ items: [
48
+ '**Combined OASDI Depletion:** The Old-Age and Survivors Insurance (OASI) and Disability Insurance (DI) trust funds, if combined, will exhaust their reserves in **2034**. At that point, ongoing tax revenues will cover **83%** of scheduled benefits, requiring a **17% cut** across the board.',
49
+ '**Retirement-Only (OASI) Depletion:** If the DI fund is not merged with OASI, the retirement fund alone depletes in **2032** — one quarter earlier than the prior year\'s projection — with ongoing revenues covering **78%** of benefits (a **22% cut**).',
50
+ '**Year-over-year movement:** the combined depletion year has held at 2034 across recent reports, while the payable share moves a point or two as economic assumptions update — which is why RetireGolden re-verifies these defaults against each annual report.',
51
+ ],
52
+ },
53
+ { type: 'heading', text: 'How to model this in RetireGolden' },
54
+ {
55
+ type: 'prose',
56
+ md: "Many planners choose to model a cut to be conservative. In RetireGolden, you can toggle this on to see how a benefit cut affects your overall retirement success rate. If you turn on the haircut, the engine will pay your full scheduled benefit up to the specified year, then reduce all benefits (including spousal and survivor benefits) by the haircut percentage for the remaining years of your projection.",
57
+ },
58
+ {
59
+ type: 'scenario',
60
+ name: 'solvency haircut scenarios',
61
+ assumptions: [
62
+ { label: 'Standard Plan', value: '100% scheduled benefits' },
63
+ { label: 'Combined OASDI (Trustees Default)', value: '17% cut starting in 2034' },
64
+ { label: 'OASI Isolation (Conservative)', value: '22% cut starting in 2032' },
65
+ { label: 'Custom Stress Test', value: 'e.g., 25% or 30% cut' },
66
+ ],
67
+ summary: 'Modeling a 17% or 22% cut helps identify if your plan relies too heavily on Social Security and whether you need to increase savings or delay claiming.',
68
+ },
69
+ { type: 'heading', text: 'Watch-outs' },
70
+ {
71
+ type: 'list',
72
+ items: [
73
+ 'The haircut toggle is a stress test, not a prediction of what Congress will do.',
74
+ 'Scheduled benefits remain the default because current law has not changed benefits yet.',
75
+ ],
76
+ },
77
+ { type: 'heading', text: 'Where this shows up in the app' },
78
+ {
79
+ type: 'prose',
80
+ md: 'Under the **Social Security trust fund** heading on the **Assumptions** screen, check "Model a benefit cut." Once checked, you can customize the start year and the cut percentage.',
81
+ },
82
+ ],
83
+ }
@@ -0,0 +1,79 @@
1
+ import type { LearningArticle } from '../learningRegistry'
2
+
3
+ export const assumptionStateTaxOverrideArticle: LearningArticle = {
4
+ slug: 'assumption-state-tax-override',
5
+ title: 'The state tax override',
6
+ description: 'How RetireGolden models state income taxes in retirement and when to apply a flat-rate override.',
7
+ category: 'assumptions',
8
+ tags: ['taxes', 'state tax', 'effective tax', 'override'],
9
+ audience: 'intermediate',
10
+ status: 'ready',
11
+ lastReviewed: '2026-06-30',
12
+ reviewCadence: 'stable',
13
+ sourceUrls: [
14
+ 'https://taxfoundation.org/data/all/state/state-income-tax-rates/',
15
+ ],
16
+ relatedArticles: [
17
+ 'state-income-taxes-in-retirement',
18
+ 'marginal-vs-effective-tax-rate',
19
+ 'understanding-your-plan-assumptions',
20
+ ],
21
+ relatedPlannerRoutes: ['/plan/:planId/assumptions'],
22
+ currentYearSensitive: false,
23
+ priority: 'P1',
24
+ blocks: [
25
+ {
26
+ type: 'prose',
27
+ md: "State income taxes can vary widely. While some states have progressive brackets similar to the federal system, others have flat rates, and several have no income tax at all. In addition, many states exempt or partially exclude retirement income (like Social Security or pensions) from taxation.",
28
+ },
29
+ { type: 'heading', text: 'Quick takeaways' },
30
+ {
31
+ type: 'list',
32
+ items: [
33
+ 'RetireGolden defaults the **state effective tax override** to **0%**, which commands the engine to use its modeled, state-specific brackets.',
34
+ 'If you set the override to a rate greater than 0% (e.g., 4%), the engine will ignore the per-state models and apply that flat rate to all taxable income.',
35
+ 'Use the override if you live in a state that is not yet modeled in RetireGolden, or if you want to approximate a complex local tax structure.',
36
+ ],
37
+ },
38
+ { type: 'heading', text: 'How RetireGolden models state taxes' },
39
+ {
40
+ type: 'prose',
41
+ md: "By default, the RetireGolden engine uses the state of residence entered on the **Household** screen to apply the correct progressive tax brackets, standard deductions, and retirement exclusions for that state. This data is updated annually from sources like the Tax Foundation.",
42
+ },
43
+ {
44
+ type: 'table',
45
+ caption: 'How to choose the state-tax setting.',
46
+ columns: ['Choice', 'What happens', 'Best use'],
47
+ rows: [
48
+ ['Leave at 0%', 'RetireGolden uses the modeled state tax rules', 'Your state is modeled and the built-in rules fit your plan'],
49
+ ['Enter a flat rate', 'The flat override replaces the modeled state calculation', 'Your state is unmodeled, local taxes matter, or you want a rough move scenario'],
50
+ ],
51
+ },
52
+ { type: 'heading', text: 'When to use the override' },
53
+ {
54
+ type: 'prose',
55
+ md: "A flat rate override is a useful planning shortcut in several scenarios:",
56
+ },
57
+ {
58
+ type: 'list',
59
+ items: [
60
+ '**Unmodeled States:** If your state has complex rules that are not yet fully represented in RetireGolden, you can estimate your average state tax burden and enter it as a flat override.',
61
+ '**Simplifying Moves:** If you plan to move to a different state during retirement and want to approximate the tax change without setting up multi-state movement plans, a flat rate override is a fast way to test the impact.',
62
+ '**Local Taxes:** The built-in state models do not include county or municipal income taxes (such as city tax in New York or local taxes in Ohio/Pennsylvania). You can add a 1% or 2% override to represent these local levies on top of your state brackets.',
63
+ ],
64
+ },
65
+ { type: 'heading', text: 'Watch-outs' },
66
+ {
67
+ type: 'list',
68
+ items: [
69
+ 'The override is a broad effective rate, not a second state tax layered on top of modeled brackets.',
70
+ 'A flat rate cannot capture brackets, deductions, retirement-income exclusions, or local quirks with precision.',
71
+ ],
72
+ },
73
+ { type: 'heading', text: 'Where this shows up in the app' },
74
+ {
75
+ type: 'prose',
76
+ md: 'You can enter a flat percentage under **State effective tax (override)** on the **Assumptions** screen. Leave this field at 0% to use the built-in state brackets. If you choose to override, keep in mind that the flat rate is applied to ordinary taxable income after federal deductions.',
77
+ },
78
+ ],
79
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * "Beneficiaries and account titling basics" - an Insurance and Estate P2 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const beneficiariesAccountTitlingArticle: LearningArticle = {
8
+ slug: 'beneficiaries-and-account-titling',
9
+ title: 'Beneficiaries and account titling basics',
10
+ description: 'Why beneficiary forms and titling can override a will.',
11
+ category: 'insurance-estate',
12
+ tags: ['beneficiaries', 'account titling', 'estate planning', 'inherited ira', 'life insurance'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'rule-change',
17
+ sourceUrls: ['https://www.irs.gov/publications/p559', 'https://www.irs.gov/publications/p590b'],
18
+ relatedArticles: [
19
+ 'inherited-ira-10-year-rule',
20
+ 'step-up-in-basis',
21
+ 'permanent-life-insurance-in-a-plan',
22
+ 'survivor-planning-for-couples',
23
+ 'after-tax-estate',
24
+ ],
25
+ relatedPlannerRoutes: ['/plan/:planId/accounts', '/plan/:planId/insurance', '/plan/:planId/household', '/plan/:planId/report'],
26
+ currentYearSensitive: true,
27
+ priority: 'P2',
28
+ blocks: [
29
+ {
30
+ type: 'prose',
31
+ md: 'A retirement plan can show enough money and still fail operationally if assets do not reach the intended people. Beneficiary forms and account titling are the plumbing of an estate plan: quiet when correct, painful when stale or inconsistent.',
32
+ },
33
+ { type: 'heading', text: 'Quick takeaways' },
34
+ {
35
+ type: 'list',
36
+ items: [
37
+ 'Beneficiary designations often control retirement accounts and life insurance directly.',
38
+ 'Account titling can affect who can act, what happens at death, and whether probate is involved.',
39
+ 'RetireGolden models ownership and some beneficiaries, but it does not model legal title, probate, trusts, or state law.',
40
+ ],
41
+ },
42
+ { type: 'heading', text: 'The basic idea' },
43
+ {
44
+ type: 'prose',
45
+ md: 'A will is important, but many financial assets pass by contract or account form. Retirement accounts, life insurance, transfer-on-death accounts, joint accounts, and trust-owned assets may follow their own paperwork. If that paperwork is out of date, the math in the retirement plan may not match what actually happens.\n\nBeneficiary and titling reviews are especially important after marriage, divorce, death, births, moves, new accounts, and major tax-law changes.',
46
+ },
47
+ {
48
+ type: 'figure',
49
+ image: { src: '/learn/images/beneficiaries-account-titling.webp' },
50
+ caption:
51
+ 'Beneficiary forms and account titles are routing instructions for where assets go when the owner dies.',
52
+ alt: 'Account buckets route through beneficiary forms and title gates toward spouse, heirs, estate, and trust containers, with one stale route marked for review.',
53
+ },
54
+ {
55
+ type: 'table',
56
+ caption: 'Common planning records to keep aligned.',
57
+ columns: ['Record', 'What it controls', 'Why it matters'],
58
+ rows: [
59
+ ['Retirement account beneficiary', 'Who receives IRA or workplace-plan assets', 'Can drive inherited-account rules and tax timing'],
60
+ ['Life insurance beneficiary', 'Who receives the death benefit', 'Can protect a spouse or flow to the estate in the model'],
61
+ ['Account owner', 'Whose age, tax, and RMD rules may apply', 'RetireGolden uses ownership for account behavior'],
62
+ ['Property title', 'Who owns real estate or other titled property', 'May affect control, transfer, and basis treatment'],
63
+ ['Estate or trust documents', 'Fallback and legal structure', 'Not modeled directly in RetireGolden'],
64
+ ],
65
+ },
66
+ { type: 'heading', text: 'A worked example' },
67
+ {
68
+ type: 'scenario',
69
+ name: 'The Martin household',
70
+ assumptions: [
71
+ { label: 'Old form', value: '$240,000 retirement account still names a prior beneficiary' },
72
+ { label: 'Current plan', value: 'The surviving spouse needs about $35,000 a year from that account' },
73
+ { label: 'Risk', value: 'The projection assumes spouse support, but the form could route the asset elsewhere' },
74
+ ],
75
+ summary:
76
+ 'RetireGolden can show the spouse needs the $240,000 account to cover a $35,000 annual gap. The beneficiary review makes sure the real-world form sends the money where the plan assumes.',
77
+ },
78
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
79
+ {
80
+ type: 'prose',
81
+ md: 'RetireGolden uses account ownership for RMDs, penalties, HSA limits, Roth basis ordering, and survivor modeling. It also tracks permanent-life beneficiaries as either a person in the plan or the estate. It does not replace actual beneficiary forms, account titles, trusts, wills, or attorney review.',
82
+ },
83
+ { type: 'heading', text: 'Common mistakes' },
84
+ {
85
+ type: 'list',
86
+ items: [
87
+ 'Assuming a will updates every beneficiary form automatically.',
88
+ 'Forgetting old employer plans, old IRAs, or old life policies.',
89
+ 'Ignoring account ownership when modeling RMDs or survivor years.',
90
+ 'Treating RetireGolden\'s estate numbers as proof that legal documents are aligned.',
91
+ ],
92
+ },
93
+ { type: 'heading', text: 'Where to use this in the app' },
94
+ {
95
+ type: 'prose',
96
+ md: 'Use **Accounts** to confirm owners, inherited-account status, and account types. Use **Insurance** to set permanent-life beneficiaries. Use **Report** as a checklist prompt, then verify the real documents outside the app.',
97
+ },
98
+ ],
99
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * "Break-even: useful lens, incomplete answer" - a Social Security P0 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const breakEvenUsefulLensArticle: LearningArticle = {
8
+ slug: 'break-even-useful-lens',
9
+ title: 'Break-even: useful lens, incomplete answer',
10
+ description: 'Why break-even age helps but should not decide the claim alone.',
11
+ category: 'social-security',
12
+ tags: ['social security', 'break-even', 'claiming age', 'cumulative benefits', 'longevity'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-19',
16
+ reviewCadence: 'stable',
17
+ sourceUrls: [
18
+ 'https://www.ssa.gov/benefits/retirement/planner/agereduction.html',
19
+ 'https://www.ssa.gov/benefits/retirement/planner/delayret.html',
20
+ ],
21
+ relatedArticles: [
22
+ 'social-security-claiming-age-basics',
23
+ 'spousal-and-survivor-benefits',
24
+ 'understanding-monte-carlo-success-rate',
25
+ 'planning-for-couples-and-survivor-years',
26
+ ],
27
+ relatedPlannerRoutes: ['/plan/:planId/social-security-analysis'],
28
+ currentYearSensitive: false,
29
+ priority: 'P0',
30
+ blocks: [
31
+ {
32
+ type: 'prose',
33
+ md: 'A break-even age is the age when a later Social Security claim catches up to an earlier claim in cumulative dollars. It is a helpful picture, but it is not the whole claiming decision.',
34
+ },
35
+ { type: 'heading', text: 'Quick takeaways' },
36
+ {
37
+ type: 'list',
38
+ items: [
39
+ 'Break-even compares cumulative benefit dollars for different claim ages.',
40
+ 'The answer changes when you assume cost-of-living adjustments or investment growth on checks already received.',
41
+ 'Break-even usually ignores taxes, portfolio withdrawals, survivor benefits, and risk.',
42
+ ],
43
+ },
44
+ { type: 'heading', text: 'The basic idea' },
45
+ {
46
+ type: 'prose',
47
+ md: 'An early claim has a head start because checks begin sooner. A later claim has a larger monthly check. The break-even question asks when the larger later checks make up for the missed early checks.\n\nThat is useful, but retirement is not only a race between two benefit lines. A household also has spending needs, taxes, market returns, survivor years, and uncertainty about lifespan.',
48
+ },
49
+ { type: 'heading', text: 'What break-even shows and misses' },
50
+ {
51
+ type: 'table',
52
+ caption: 'Break-even is a lens, not the whole plan.',
53
+ columns: ['Question', 'Break-even view', 'Whole-plan view'],
54
+ rows: [
55
+ ['How long must I live for the later claim to catch up?', 'Good at this', 'Still relevant, but not the only question'],
56
+ ['What happens to taxes and withdrawals before the later claim starts?', 'Usually ignored', 'Included in RetireGolden projections'],
57
+ ['How does a spouse or survivor benefit change the choice?', 'Usually ignored', 'Important for couples and widow(er) years'],
58
+ ['What if markets are good or bad while I bridge to a later claim?', 'Usually ignored', 'Can be tested in plan results and Monte Carlo'],
59
+ ],
60
+ },
61
+ { type: 'heading', text: 'A worked example' },
62
+ {
63
+ type: 'scenario',
64
+ name: 'The Patel household',
65
+ assumptions: [
66
+ { label: 'Early claim', value: '$1,700 a month starting at 62' },
67
+ { label: 'Later claim', value: '$2,400 a month starting at 67' },
68
+ { label: 'Bridge cost', value: 'Waiting five years requires about $102,000 of portfolio withdrawals before checks begin' },
69
+ ],
70
+ summary:
71
+ 'The larger $2,400 check catches up only after enough years of payments. The whole-plan question is whether spending the $102,000 bridge is worth the later income and survivor protection.',
72
+ },
73
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
74
+ {
75
+ type: 'prose',
76
+ md: 'The **Social Security analysis** page includes a break-even tab for education. It also includes an **In your plan** tab that runs claim-age combinations through the full projection and a **Benefits-only** tab that uses mortality-weighted expected value. When the views disagree, that disagreement is the lesson.',
77
+ },
78
+ { type: 'heading', text: 'Common mistakes' },
79
+ {
80
+ type: 'list',
81
+ items: [
82
+ 'Treating break-even age as a recommendation.',
83
+ 'Using one life expectancy date as if it were certain.',
84
+ 'Ignoring the cash needed to delay benefits.',
85
+ 'For couples, ignoring the larger survivor check after one spouse dies.',
86
+ ],
87
+ },
88
+ { type: 'heading', text: 'Where to use this in the app' },
89
+ {
90
+ type: 'prose',
91
+ md: 'Open **Social Security analysis** and compare the break-even tab with the full-plan ranking. Use break-even to understand the tradeoff, then use the full-plan view to decide what the rest of the plan can support.',
92
+ },
93
+ ],
94
+ }
@@ -0,0 +1,100 @@
1
+ import type { LearningArticle } from '../learningRegistry'
2
+
3
+ export const buildingRetirementSpendingBudgetArticle: LearningArticle = {
4
+ slug: 'building-a-retirement-spending-budget',
5
+ title: 'Building a retirement spending budget',
6
+ description: 'What belongs in baseline spending, phases, and one-time goals.',
7
+ category: 'using-retiregolden',
8
+ tags: ['spending', 'budget', 'retirement phases', 'one-time goals', 'retirement smile'],
9
+ audience: 'beginner',
10
+ status: 'ready',
11
+ lastReviewed: '2026-07-02',
12
+ reviewCadence: 'annual',
13
+ sourceUrls: [
14
+ 'https://www.bls.gov/cex/',
15
+ 'https://www.bls.gov/cex/tables.htm',
16
+ 'https://fred.stlouisfed.org/series/CXUTOTALEXPLB0406M',
17
+ 'https://fred.stlouisfed.org/series/CXUTOTALEXPLB0407M',
18
+ 'https://www.financialplanningassociation.org/sites/default/files/2020-09/MAY14%20JFP%20Blanchett_0.pdf',
19
+ ],
20
+ relatedArticles: [
21
+ 'dynamic-spending-guardrails',
22
+ 'three-big-questions-spending-time-risk',
23
+ 'todays-dollars-vs-future-dollars',
24
+ 'long-term-care-costs-and-insurance',
25
+ ],
26
+ relatedPlannerRoutes: ['/plan/:planId/spending', '/plan/:planId/results', '/plan/:planId/scenarios'],
27
+ currentYearSensitive: true,
28
+ priority: 'P1',
29
+ blocks: [
30
+ {
31
+ type: 'prose',
32
+ md: 'A retirement spending budget is not one giant number. It works better when everyday living costs, planned phases, healthcare premiums, insurance premiums, debt service, and one-time goals each sit in the right place.',
33
+ },
34
+ { type: 'heading', text: 'Quick takeaways' },
35
+ {
36
+ type: 'list',
37
+ items: [
38
+ 'Baseline spending should cover recurring lifestyle costs that do not have a separate input.',
39
+ 'Phases let you model a higher early-retirement lifestyle or a later slowdown without changing every year by hand.',
40
+ 'One-time goals belong outside baseline spending so they do not repeat forever.',
41
+ ],
42
+ },
43
+ { type: 'heading', text: 'The basic idea' },
44
+ {
45
+ type: 'prose',
46
+ md: 'Start with normal annual living costs in today\'s dollars. Then remove anything RetireGolden already models somewhere else: mortgage payments, property tax, homeowner\'s insurance, health-insurance premiums, life or long-term-care insurance premiums, and care events.\n\nThat separation matters because each item follows a different rule. A mortgage may end. Property carrying costs may continue after the loan is gone. Medicare premiums begin at 65. Insurance premiums may be level instead of inflation-adjusted. One-time goals happen once.',
47
+ },
48
+ {
49
+ type: 'table',
50
+ caption: 'Where spending belongs in RetireGolden.',
51
+ columns: ['Cost', 'Where to enter it', 'Why'],
52
+ rows: [
53
+ ['Groceries, utilities, transportation, routine travel', 'Baseline annual spending', 'Repeats each year and inflates with the plan'],
54
+ ['Health-insurance premiums before 65', 'Healthcare', 'Can interact with the ACA premium tax credit'],
55
+ ['Medicare supplements, Advantage, or Part D premiums', 'Healthcare', 'Part B and IRMAA are modeled separately'],
56
+ ['Mortgage principal and interest', 'Debt account', 'Can end or be paid off in a specific year'],
57
+ ['Property tax and homeowner\'s insurance', 'Property account', 'May continue after a mortgage is gone'],
58
+ ['Life or LTC policy premiums', 'Insurance', 'Policy premiums feed the spending chart and policy value test'],
59
+ ['Large trips, car replacement, family gifts', 'One-time goals', 'Should not repeat forever unless you add more goals'],
60
+ ],
61
+ },
62
+ { type: 'heading', text: 'Phases and the retirement smile' },
63
+ {
64
+ type: 'prose',
65
+ md: 'Many retirees do not spend the same inflation-adjusted amount every year. Some spend more in the go-go years on travel and projects, less in the slow-go years, and more again if care needs rise later. Research often calls that pattern the retirement spending smile.\n\nA phase multiplier changes baseline spending from a selected age forward. It is a planning input, not a prediction. Use it to test the lifestyle you expect and the backup version you could accept.',
66
+ },
67
+ {
68
+ type: 'scenario',
69
+ name: 'The Nguyen household',
70
+ assumptions: [
71
+ { label: 'Baseline spending', value: '$90,000 per year in today\'s dollars' },
72
+ { label: 'Slow-go phase', value: 'At age 75, multiplier falls to 0.90' },
73
+ { label: 'Later phase', value: 'At age 85, multiplier falls to 0.80 before any separate care event' },
74
+ { label: 'One-time goal', value: '$25,000 family trip in 2029' },
75
+ ],
76
+ summary:
77
+ 'The phase at 75 turns the recurring lifestyle line into $81,000 before inflation. The family trip stays separate, so it appears once instead of becoming part of every future year.',
78
+ },
79
+ { type: 'heading', text: 'What the data can and cannot tell you' },
80
+ {
81
+ type: 'prose',
82
+ md: 'The Bureau of Labor Statistics Consumer Expenditure Survey shows average spending tends to differ by age. In 2024, the 55-64 age group spent about **$84,946** on average, while the 65-and-older group spent about **$61,432**. Those are broad household averages, not a personal target.\n\nUse outside data as a reasonableness check. Your actual budget should start from your housing, location, family support, travel plans, health needs, and taxes.',
83
+ },
84
+ { type: 'heading', text: 'Common mistakes' },
85
+ {
86
+ type: 'list',
87
+ items: [
88
+ 'Putting mortgage payments in baseline spending, then also entering the mortgage as a debt.',
89
+ 'Forgetting property tax and homeowner\'s insurance after a mortgage payoff.',
90
+ 'Treating every dream trip or car replacement as recurring lifestyle spending.',
91
+ 'Using a spending-smile phase to hide a long-term-care cost that should be stress-tested separately.',
92
+ ],
93
+ },
94
+ { type: 'heading', text: 'Where to use this in the app' },
95
+ {
96
+ type: 'prose',
97
+ md: 'Use **Spending** for baseline spending, phases, healthcare premiums, and one-time goals. Use **Accounts** for property and debt costs. Use **Insurance** for life, long-term-care, and care-event modeling. Use **Results** to check the spending-by-category chart for double counting.',
98
+ },
99
+ ],
100
+ }