@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,113 @@
1
+ /**
2
+ * "Social Security claiming age basics" - a Social Security P0 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const socialSecurityClaimingAgeArticle: LearningArticle = {
8
+ slug: 'social-security-claiming-age-basics',
9
+ title: 'Social Security claiming age basics',
10
+ description: 'How the age you claim changes your monthly benefit for life.',
11
+ category: 'social-security',
12
+ tags: ['social security', 'claiming age', 'full retirement age', 'delayed credits', 'retirement benefit'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-19',
16
+ reviewCadence: 'annual',
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
+ 'pia-aime-and-bend-points',
23
+ 'break-even-useful-lens',
24
+ 'spousal-and-survivor-benefits',
25
+ 'cola-and-inflation-protection',
26
+ ],
27
+ relatedPlannerRoutes: ['/plan/:planId/social-security', '/plan/:planId/social-security-analysis'],
28
+ currentYearSensitive: true,
29
+ priority: 'P0',
30
+ featured: true,
31
+ blocks: [
32
+ {
33
+ type: 'prose',
34
+ md: 'Your Social Security claiming age is the age you start retirement benefits. It does not change the work record that created your benefit, but it does change the monthly check built from that record.',
35
+ },
36
+ { type: 'heading', text: 'Quick takeaways' },
37
+ {
38
+ type: 'list',
39
+ items: [
40
+ 'Claiming before full retirement age starts checks sooner, but with a permanent monthly reduction.',
41
+ 'Claiming at full retirement age gives your base retirement benefit, also called your primary insurance amount.',
42
+ 'Waiting after full retirement age can add delayed retirement credits until age 70.',
43
+ ],
44
+ },
45
+ { type: 'heading', text: 'The basic idea' },
46
+ {
47
+ type: 'prose',
48
+ md: 'Social Security has a timing tradeoff. An earlier claim can help cash flow now. A later claim can raise the monthly benefit for the rest of your life.\n\nThat tradeoff is not only about one person living to a certain age. Taxes, portfolio withdrawals, Roth conversions, survivor years, and inflation protection can all change which claiming age fits the full plan.',
49
+ },
50
+ {
51
+ type: 'figure',
52
+ image: { src: '/learn/images/social-security-claiming-age.webp' },
53
+ caption:
54
+ 'Claiming age trades smaller checks sooner against larger checks later, with full retirement age as the base checkpoint.',
55
+ alt: 'A timeline with three gates showing early, base, and later claiming choices, where the later path produces a larger benefit stream.',
56
+ },
57
+ { type: 'heading', text: 'Before, at, and after full retirement age' },
58
+ {
59
+ type: 'table',
60
+ caption: 'How claiming age changes the retirement benefit.',
61
+ columns: ['Claim timing', 'What happens', 'Planning question'],
62
+ rows: [
63
+ [
64
+ 'Before full retirement age',
65
+ 'Checks begin sooner, but the monthly benefit is reduced.',
66
+ 'Do you need income now, and what does the smaller lifetime check cost later?',
67
+ ],
68
+ [
69
+ 'At full retirement age',
70
+ 'The monthly benefit equals the base benefit from your earnings record.',
71
+ 'Is the base check a good balance between current cash flow and later protection?',
72
+ ],
73
+ [
74
+ 'After full retirement age',
75
+ 'Delayed credits raise the monthly benefit until age 70.',
76
+ 'Can the portfolio bridge the gap, and does the larger check help survivor years?',
77
+ ],
78
+ ],
79
+ },
80
+ { type: 'heading', text: 'A worked example' },
81
+ {
82
+ type: 'scenario',
83
+ name: 'The Harris household',
84
+ assumptions: [
85
+ { label: 'Age 62 claim', value: '$1,700 a month, starting sooner' },
86
+ { label: 'Age 67 claim', value: '$2,400 a month, but requires five bridge years' },
87
+ { label: 'Age 70 claim', value: '$3,000 a month, but uses even more portfolio before checks begin' },
88
+ ],
89
+ summary:
90
+ 'The age 70 check is $1,300 more per month than age 62, but the Harrises must fund the waiting years first. RetireGolden compares both the bridge cost and the later income floor.',
91
+ },
92
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
93
+ {
94
+ type: 'prose',
95
+ md: 'On the **Social Security** screen, you enter each person\'s benefit source and claim age. On the **Social Security analysis** screen, RetireGolden sweeps claim-age combinations through the full plan and ranks them by ending after-tax estate. It also has a benefits-only view that isolates the Social Security value of the choice.',
96
+ },
97
+ { type: 'heading', text: 'Common mistakes' },
98
+ {
99
+ type: 'list',
100
+ items: [
101
+ 'Assuming the largest monthly check is always the best plan choice.',
102
+ 'Ignoring the years before the later claim starts, when the portfolio must cover more spending.',
103
+ 'For couples, looking only at the first spouse instead of the survivor check after one death.',
104
+ 'Using break-even age as the whole answer instead of one useful lens.',
105
+ ],
106
+ },
107
+ { type: 'heading', text: 'Where to use this in the app' },
108
+ {
109
+ type: 'prose',
110
+ md: 'Start on **Social Security** to enter the benefit and claim age. Then open **Social Security analysis** to compare claim ages in the full plan, the benefits-only view, and the break-even view.',
111
+ },
112
+ ],
113
+ }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * "Social Security taxes vs. benefits" - a Social Security article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const socialSecurityTaxesVsBenefitsArticle: LearningArticle = {
8
+ slug: 'social-security-taxes-vs-benefits',
9
+ title: 'Social Security taxes vs. benefits',
10
+ description: 'What you paid in (OASDI) versus what you get back — and why the comparison is imperfect.',
11
+ category: 'social-security',
12
+ tags: ['social security', 'fica', 'oasdi', 'payroll tax', 'self-employment', 'taxable wage base', 'return'],
13
+ audience: 'intermediate',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-29',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: [
18
+ 'https://www.ssa.gov/news/en/cola/factsheets/2026.html',
19
+ 'https://www.ssa.gov/oact/ProgData/taxRates.html',
20
+ 'https://www.ssa.gov/benefits/retirement/planner/applying7.html',
21
+ ],
22
+ relatedArticles: [
23
+ 'pia-aime-and-bend-points',
24
+ 'social-security-claiming-age-basics',
25
+ 'mortality-weighted-social-security',
26
+ 'how-social-security-is-taxed',
27
+ ],
28
+ relatedPlannerRoutes: ['/plan/:planId/social-security-analysis', '/plan/:planId/social-security'],
29
+ currentYearSensitive: true,
30
+ priority: 'P2',
31
+ blocks: [
32
+ {
33
+ type: 'prose',
34
+ md: 'A natural question: "Did I get back what I put into Social Security?" The answer is more nuanced than dividing your benefits by your taxes, because Social Security is **insurance**, not an investment. A "what you paid in vs. what you get back" view is still a useful illustration, as long as you know what it does and does not capture.',
35
+ },
36
+ { type: 'heading', text: 'Quick takeaways' },
37
+ {
38
+ type: 'list',
39
+ items: [
40
+ 'You paid the **OASDI** payroll tax (6.2% as an employee, 12.4% if self-employed) on covered earnings up to each year’s **taxable wage base**.',
41
+ 'The "get back" side is the **survival-weighted expected value** of your lifetime benefits — not a literal account balance.',
42
+ 'The ratio is an **individual-level illustration**, not the program’s actuarial return, and it excludes the value of disability and survivor insurance, spousal benefits, and Medicare.',
43
+ ],
44
+ },
45
+ { type: 'heading', text: 'What you paid in' },
46
+ {
47
+ type: 'prose',
48
+ md: 'Each paycheck, 6.2% of your covered wages (up to the annual taxable wage base — $184,500 in 2026) goes to the OASDI part of FICA. Your employer pays another 6.2%; the self-employed pay both halves (12.4%) as SECA. This view sums the OASDI tax over your earnings history and **intentionally excludes the 1.45% Medicare HI tax**, because the "get back" side is the retirement benefit, not Medicare. The employer share is shown as context, not added to what you paid.',
49
+ },
50
+ { type: 'heading', text: 'What you get back' },
51
+ {
52
+ type: 'prose',
53
+ md: 'The "get back" figure is the **mortality-weighted expected present value** of your lifetime retirement benefits at your chosen claim age — the same method used by the actuarial "Benefits only" view. Each future year’s benefit is multiplied by the probability you survive to receive it and discounted to today’s dollars at a real rate. This is the *expected* value, not a guarantee; living longer raises it, dying sooner lowers it.',
54
+ },
55
+ { type: 'heading', text: 'What the ratio does not capture' },
56
+ {
57
+ type: 'list',
58
+ items: [
59
+ '**Insurance value:** the payroll tax also buys disability and survivor protection you may never draw but that has real expected value.',
60
+ '**Spousal and family benefits:** a non-working or lower-earning spouse can receive benefits on your record, which the individual ratio ignores.',
61
+ '**Employer share:** if you’re an employee, your employer paid half the OASDI tax — not "your" contribution, but part of the cost of your labor.',
62
+ '**Medicare:** the HI tax funds Medicare, which is excluded from both sides here.',
63
+ ],
64
+ },
65
+ {
66
+ type: 'callout',
67
+ tone: 'note',
68
+ md: 'This is why a low lifetime ratio doesn’t mean Social Security is a "bad deal" for you — the program transfers value toward lower earners, the disabled, survivors, and longer-lived spouses in ways a single ratio can’t show.',
69
+ },
70
+ { type: 'heading', text: 'Where to use this in the app' },
71
+ {
72
+ type: 'prose',
73
+ md: 'On **Social Security analysis** (the Benefits-only tab), expand "What you paid in vs. what you get back." It uses the earnings history you entered on the Social Security step, so enter an earnings record (or import your mySSA statement) to see it. A self-employed toggle applies the 12.4% rate.',
74
+ },
75
+ ],
76
+ }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * "Spending profiles and the retirement smile" - a Using RetireGolden P1 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const spendingProfilesAndRetirementSmileArticle: LearningArticle = {
8
+ slug: 'spending-profiles-and-the-retirement-smile',
9
+ title: 'Spending profiles and the retirement smile',
10
+ description: 'How flat, smile, and front-loaded spending profiles become editable phase rows.',
11
+ category: 'using-retiregolden',
12
+ tags: ['spending', 'retirement smile', 'phases', 'travel', 'budget'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-07-06',
16
+ reviewCadence: 'stable',
17
+ sourceUrls: [
18
+ 'https://www.financialplanningassociation.org/sites/default/files/2020-09/MAY14%20JFP%20Blanchett_0.pdf',
19
+ 'https://www.bls.gov/cex/',
20
+ ],
21
+ relatedArticles: [
22
+ 'building-a-retirement-spending-budget',
23
+ 'dynamic-spending-guardrails',
24
+ 'using-scenarios-to-compare-choices',
25
+ 'three-big-questions-spending-time-risk',
26
+ ],
27
+ relatedPlannerRoutes: ['/plan/:planId/spending', '/plan/:planId/results', '/plan/:planId/scenarios'],
28
+ currentYearSensitive: false,
29
+ priority: 'P1',
30
+ blocks: [
31
+ {
32
+ type: 'prose',
33
+ md: 'A spending profile is a starting shape for recurring lifestyle spending. Instead of asking you to enter every future year, RetireGolden can write a few phase rows that change baseline spending at selected ages.',
34
+ },
35
+ { type: 'heading', text: 'Quick takeaways' },
36
+ {
37
+ type: 'list',
38
+ items: [
39
+ 'Profiles are shortcuts, not hidden model settings: they write ordinary Spending phase rows.',
40
+ 'The retirement smile preset lowers recurring lifestyle spending at ages 75 and 85.',
41
+ 'Front-loaded travel raises early retirement spending, then returns to baseline at 75.',
42
+ ],
43
+ },
44
+ { type: 'heading', text: 'The basic idea' },
45
+ {
46
+ type: 'prose',
47
+ md: 'Many retirement plans are easier to understand as phases. Some households want a flat real budget. Others expect higher go-go spending early in retirement, lower slow-go spending later, or a front-loaded travel window before age 75.\n\nRetireGolden keeps this simple: choosing a profile replaces the current phase rows with visible rows you can edit or remove. The engine still sees only baseline spending plus phase multipliers.',
48
+ },
49
+ {
50
+ type: 'table',
51
+ caption: 'What each Spending profile writes.',
52
+ columns: ['Profile', 'Rows RetireGolden creates', 'Use when'],
53
+ rows: [
54
+ ['Flat', 'No phase rows', 'You want recurring lifestyle spending to stay level in real terms'],
55
+ ['Retirement smile', '0.90 from age 75, then 0.80 from age 85', 'You want to test lower slow-go and no-go lifestyle spending'],
56
+ ['Front-loaded travel', '1.10 from retirement until age 75, then 1.00 from age 75', 'You want a larger early travel or project budget that later settles back'],
57
+ ],
58
+ },
59
+ { type: 'heading', text: 'A worked example' },
60
+ {
61
+ type: 'scenario',
62
+ name: 'The Patel household',
63
+ assumptions: [
64
+ { label: 'Baseline spending', value: '$100,000 per year in today\'s dollars' },
65
+ { label: 'Profile', value: 'Retirement smile' },
66
+ { label: 'Age 75 phase', value: 'Recurring lifestyle spending becomes $90,000 before inflation' },
67
+ { label: 'Age 85 phase', value: 'Recurring lifestyle spending becomes $80,000 before inflation' },
68
+ ],
69
+ summary:
70
+ 'The profile changes only recurring lifestyle spending. Healthcare premiums, debt payments, property costs, insurance premiums, and one-time goals keep their own schedules.',
71
+ },
72
+ { type: 'heading', text: 'Why this is not a prediction' },
73
+ {
74
+ type: 'prose',
75
+ md: 'The retirement smile is a planning pattern, not a promise that your spending will decline. Travel may fall, but gifts, housing, taxes, healthcare, or care needs may not. Use profiles to test a version of the plan, then check Results and Monte Carlo to see whether the plan still has room if the shape is wrong.',
76
+ },
77
+ { type: 'heading', text: 'Common mistakes' },
78
+ {
79
+ type: 'list',
80
+ items: [
81
+ 'Treating the smile preset as automatic advice instead of a scenario to test.',
82
+ 'Forgetting that a new profile replaces existing phase rows.',
83
+ 'Using a lower phase multiplier to hide a known healthcare, debt, insurance, or long-term-care cost that belongs in its own input.',
84
+ ],
85
+ },
86
+ { type: 'heading', text: 'Where to use this in the app' },
87
+ {
88
+ type: 'prose',
89
+ md: 'Use **Spending** to choose a profile or edit the phase rows directly. Use **Scenarios** to compare flat, smile, and front-loaded versions side by side before changing the base plan.',
90
+ },
91
+ ],
92
+ }
@@ -0,0 +1,120 @@
1
+ /**
2
+ * "Spousal and survivor benefits" - a Social Security P0 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const spousalSurvivorBenefitsArticle: LearningArticle = {
8
+ slug: 'spousal-and-survivor-benefits',
9
+ title: 'Spousal and survivor benefits',
10
+ description: 'How a couple\'s benefits interact while both live and after one dies.',
11
+ category: 'social-security',
12
+ tags: ['social security', 'spousal benefit', 'survivor benefit', 'couples', 'widow', 'widower'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-29',
16
+ reviewCadence: 'rule-change',
17
+ sourceUrls: [
18
+ 'https://www.ssa.gov/benefits/retirement/planner/applying7.html',
19
+ 'https://www.ssa.gov/benefits/survivors/',
20
+ 'https://www.ssa.gov/oact/ProgData/nra.html',
21
+ 'https://secure.ssa.gov/poms.nsf/lnx/0300615100',
22
+ ],
23
+ relatedArticles: [
24
+ 'social-security-claiming-age-basics',
25
+ 'break-even-useful-lens',
26
+ 'planning-for-couples-and-survivor-years',
27
+ 'widows-penalty-and-survivor-brackets',
28
+ ],
29
+ relatedPlannerRoutes: ['/plan/:planId/social-security', '/plan/:planId/social-security-analysis'],
30
+ currentYearSensitive: false,
31
+ priority: 'P0',
32
+ blocks: [
33
+ {
34
+ type: 'prose',
35
+ md: 'For a couple, Social Security is not just two separate checks. Spousal and survivor rules can change the household income while both spouses are alive and after one spouse dies.',
36
+ },
37
+ { type: 'heading', text: 'Quick takeaways' },
38
+ {
39
+ type: 'list',
40
+ items: [
41
+ 'A lower earner may receive a spousal top-up while both spouses are alive.',
42
+ 'After the first death, the survivor generally keeps the larger benefit, not both checks.',
43
+ 'Delaying the higher earner can protect the person who lives longest, even if it looks less attractive for one person alone.',
44
+ ],
45
+ },
46
+ { type: 'heading', text: 'The basic idea' },
47
+ {
48
+ type: 'prose',
49
+ md: 'While both spouses are alive, each person may have their own retirement benefit. If one benefit is much smaller, a spousal rule can lift the lower earner toward a share of the higher earner\'s base benefit.\n\nAfter one spouse dies, the household usually does not keep both checks. The survivor benefit can replace the smaller check with the larger one. That is why a high earner\'s claiming age can be a survivor-protection decision, not just an individual decision.',
50
+ },
51
+ {
52
+ type: 'figure',
53
+ image: { src: '/learn/images/spousal-survivor-benefits.webp' },
54
+ caption:
55
+ 'A couple may have two benefit streams while both are alive; after one death, the survivor keeps one protected larger stream.',
56
+ alt: 'Two benefit ribbons flow through a couple-years gate, then one larger protected ribbon continues through a survivor checkpoint.',
57
+ },
58
+ { type: 'heading', text: 'Two phases to think about' },
59
+ {
60
+ type: 'table',
61
+ caption: 'How couple benefits can change across a retirement.',
62
+ columns: ['Phase', 'What to watch', 'Why it matters'],
63
+ rows: [
64
+ ['Both spouses alive', 'Own benefits plus possible spousal top-up', 'The lower earner may receive more than their own record alone would pay'],
65
+ ['First spouse dies', 'The smaller check may disappear', 'Household income can fall while many expenses remain'],
66
+ ['Survivor years', 'Survivor keeps the larger benefit stream', 'A larger delayed high-earner check can become long-life protection'],
67
+ ],
68
+ },
69
+ { type: 'heading', text: 'A worked example' },
70
+ {
71
+ type: 'scenario',
72
+ name: 'The Morgan household',
73
+ assumptions: [
74
+ { label: 'Higher earner', value: '$2,800 monthly benefit at full retirement age' },
75
+ { label: 'Lower earner', value: '$900 own benefit, with a possible top-up toward $1,400 while both are alive' },
76
+ { label: 'Survivor concern', value: 'After one death, the survivor keeps one larger benefit, not both checks' },
77
+ ],
78
+ summary:
79
+ 'The spousal top-up can raise couple-year income by about **$500** a month. Later, the survivor floor depends heavily on the higher earner\'s benefit, so claim timing affects more than the first check.',
80
+ },
81
+ { type: 'heading', text: 'Survivor precision: early-claim reduction and the widow\u2019s limit' },
82
+ {
83
+ type: 'prose',
84
+ md: 'A survivor benefit is not always 100% of what the deceased would have received. Two SSA rules shape the amount, and RetireGolden models both:',
85
+ },
86
+ {
87
+ type: 'list',
88
+ items: [
89
+ '**Early-claim widow(er) reduction.** A survivor can claim as early as age 60, but claiming before the survivor\u2019s own full retirement age reduces the benefit by up to 28.5% at 60 (a floor of 71.5%). The survivor FRA is a separate, earlier schedule than the worker FRA \u2014 it tops out at 66 years and 8 months for those born 1960+, not 67.',
90
+ '**RIB-LIM (the widow\u2019s limit).** If the deceased claimed reduced benefits early, the survivor is capped at the larger of the deceased\u2019s actual reduced benefit or 82.5% of the deceased\u2019s PIA. This usually lifts the survivor above the deceased\u2019s reduced amount but below 100% of the PIA.',
91
+ '**The base is the deceased\u2019s actual benefit.** If the deceased delayed past FRA, those delayed retirement credits pass through to the survivor.',
92
+ ],
93
+ },
94
+ {
95
+ type: 'callout',
96
+ tone: 'note',
97
+ md: 'Example: a deceased worker with a $2,400 PIA who claimed at 62 was receiving 70% ($1,680). At the survivor FRA, the widow\u2019s limit floors the survivor at 82.5% of PIA \u2014 $1,980 \u2014 even though the deceased only got $1,680. If instead the deceased had delayed to 70, the survivor would receive the full delayed amount (about 124% of PIA).',
98
+ },
99
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
100
+ {
101
+ type: 'prose',
102
+ md: 'RetireGolden models a current-spouse top-up while both spouses are alive and both have claimed. It also models a survivor step-up so the surviving spouse keeps the larger benefit, computed with full precision \u2014 the deceased\u2019s claim-age-adjusted base, the RIB-LIM widow\u2019s-limit cap, and the early-claim widow(er) reduction. The Social Security entry screen can store former-spouse records (including the deceased ex\u2019s claim age) for divorced-spousal or survivor cases.',
103
+ },
104
+ { type: 'heading', text: 'Common mistakes' },
105
+ {
106
+ type: 'list',
107
+ items: [
108
+ 'Optimizing each spouse as if they were single.',
109
+ 'Forgetting that one check can disappear after the first death.',
110
+ 'Assuming a spousal benefit earns delayed retirement credits the same way a worker benefit does.',
111
+ 'Leaving out former-spouse records that may matter for a single divorced or widowed person.',
112
+ ],
113
+ },
114
+ { type: 'heading', text: 'Where to use this in the app' },
115
+ {
116
+ type: 'prose',
117
+ md: 'Use **Social Security** to enter both spouses and any former-spouse records that may apply. Use **Social Security analysis** to compare claim-age combinations and read the couple strategy notes.',
118
+ },
119
+ ],
120
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * "SSDI and retirement planning" - a Social Security article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const ssdiAndRetirementPlanningArticle: LearningArticle = {
8
+ slug: 'ssdi-and-retirement-planning',
9
+ title: 'SSDI and retirement planning',
10
+ description: 'How Social Security disability bridges to retirement at full retirement age.',
11
+ category: 'social-security',
12
+ tags: ['social security', 'ssdi', 'disability', 'full retirement age', 'sga', 'pia'],
13
+ audience: 'intermediate',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-29',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: [
18
+ 'https://www.ssa.gov/benefits/disability/',
19
+ 'https://www.ssa.gov/oact/cola/sga.html',
20
+ 'https://www.ssa.gov/oact/ProgData/nra.html',
21
+ ],
22
+ relatedArticles: [
23
+ 'social-security-claiming-age-basics',
24
+ 'pia-aime-and-bend-points',
25
+ 'spousal-and-survivor-benefits',
26
+ 'earnings-test-before-fra',
27
+ ],
28
+ relatedPlannerRoutes: ['/plan/:planId/social-security'],
29
+ currentYearSensitive: true,
30
+ priority: 'P2',
31
+ blocks: [
32
+ {
33
+ type: 'prose',
34
+ md: 'Social Security Disability Insurance (SSDI) is a separate benefit from retirement, but it matters to a retirement planner for one key reason: **at full retirement age, SSDI converts to the retirement benefit at the same dollar amount.** If you become disabled before your retirement-claim age, SSDI is the bridge that pays you until then.',
35
+ },
36
+ { type: 'heading', text: 'Quick takeaways' },
37
+ {
38
+ type: 'list',
39
+ items: [
40
+ 'SSDI pays your **full PIA** — the benefit you would get at full retirement age — with no early-retirement reduction, even if your disability began years before 62.',
41
+ 'At full retirement age it **converts automatically** to the retirement benefit at the same dollar amount (no jump, no paperwork).',
42
+ 'Before FRA, earning over the **Substantial Gainful Activity (SGA)** limit suspends SSDI; this is not the same as the retirement earnings test.',
43
+ 'Because SSDI pays the full PIA, you do **not** earn delayed-retirement credits by "waiting" — the benefit is already being paid.',
44
+ ],
45
+ },
46
+ { type: 'heading', text: 'Why SSDI pays the full PIA' },
47
+ {
48
+ type: 'prose',
49
+ md: 'When you claim *retirement* benefits before full retirement age, your benefit is permanently reduced. SSDI is different: a disabled worker receives their full Primary Insurance Amount (PIA) regardless of age at onset. The PIA is computed the same way (your average indexed monthly earnings through the bend-point formula), but the early reduction does not apply. In practice this means someone disabled at 55 receives the same monthly amount they would have gotten by waiting until FRA.',
50
+ },
51
+ {
52
+ type: 'callout',
53
+ tone: 'note',
54
+ md: 'A "disability freeze" excludes low or zero-earning months during the disability period from the AIME average, so time out of the workforce does not drag your PIA down. RetireGolden uses the PIA you enter or derive from earnings and does not recompute the freeze.',
55
+ },
56
+ { type: 'heading', text: 'The SGA gate (before FRA)' },
57
+ {
58
+ type: 'prose',
59
+ md: 'While receiving SSDI before FRA, earning above the Substantial Gainful Activity limit generally stops the benefit. In 2026, SGA is $1,620 per month for non-blind work ($2,700 if statutorily blind). SSA also offers a trial work period and extended Medicare, which RetireGolden does not model — the planner applies a simple annual check: if your wages exceed SGA × 12, SSDI is suspended for that year.',
60
+ },
61
+ { type: 'heading', text: 'Conversion at FRA' },
62
+ {
63
+ type: 'prose',
64
+ md: 'In the month you reach full retirement age, SSDI automatically becomes a retirement benefit. The dollar amount is unchanged — both are the PIA — so there is no discontinuity in your income. From FRA onward, the usual retirement rules apply: no earnings test (it ends at FRA), but also no further delayed credits, because you are already receiving the benefit.',
65
+ },
66
+ { type: 'heading', text: 'How to use this in RetireGolden' },
67
+ {
68
+ type: 'prose',
69
+ md: 'On the Social Security step, expand **Disability (SSDI)** and enter your disability onset age. The planner pays your full PIA from that age (instead of your retirement claim age), applies the SGA gate before FRA, and continues the same amount through FRA conversion — flowing into the normal tax, IRMAA, and ACA cascade like any other Social Security income.',
70
+ },
71
+ ],
72
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * "Standard deduction, senior deduction, and itemizing" - a Taxes P1 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const standardDeductionSeniorDeductionItemizingArticle: LearningArticle = {
8
+ slug: 'standard-deduction-senior-deduction-and-itemizing',
9
+ title: 'Standard deduction, senior deduction, and itemizing',
10
+ description: 'How deductions lower taxable income and when itemizing wins.',
11
+ category: 'taxes',
12
+ tags: ['standard deduction', 'senior deduction', 'itemized deductions', 'salt', 'taxable income'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: ['https://www.irs.gov/filing/federal-income-tax-rates-and-brackets'],
18
+ relatedArticles: [
19
+ 'agi-magi-and-taxable-income',
20
+ 'marginal-vs-effective-tax-rate',
21
+ 'ordinary-income-vs-capital-gains',
22
+ 'tax-cliffs-and-bracket-edges',
23
+ ],
24
+ relatedPlannerRoutes: ['/plan/:planId/strategy', '/plan/:planId/assumptions', '/plan/:planId/results'],
25
+ currentYearSensitive: true,
26
+ priority: 'P1',
27
+ blocks: [
28
+ {
29
+ type: 'prose',
30
+ md: 'Deductions do not erase income. They reduce the income that federal brackets apply to. In retirement, deductions matter because they can change the tax cost of withdrawals, Roth conversions, capital gains, and Social Security taxation.',
31
+ },
32
+ { type: 'heading', text: 'Quick takeaways' },
33
+ {
34
+ type: 'list',
35
+ items: [
36
+ 'The standard deduction is the default deduction amount based on filing status and age.',
37
+ 'Itemizing can win when deductible expenses are larger than the standard deduction.',
38
+ 'RetireGolden compares standard and itemized deductions, then applies the modeled senior deduction when current-law rules allow it.',
39
+ ],
40
+ },
41
+ { type: 'heading', text: 'The basic idea' },
42
+ {
43
+ type: 'prose',
44
+ md: 'Taxable income is generally income after deductions. The standard deduction is simple and available to many households. Itemized deductions are specific expenses, such as deductible state and local taxes, mortgage interest, and charitable giving. The better choice is usually the larger deduction, but the exact rules and limits change over time.',
45
+ },
46
+ {
47
+ type: 'figure',
48
+ image: { src: '/learn/images/deductions-itemizing.webp' },
49
+ caption:
50
+ 'Deductions sit between income and taxable income; the larger standard or itemized base wins before brackets apply.',
51
+ alt: 'Income flows into a deduction filter with two competing paths, one standard and one itemized, before a smaller stream reaches a tax-bracket ladder.',
52
+ },
53
+ {
54
+ type: 'table',
55
+ caption: 'How deduction pieces affect the modeled tax year.',
56
+ columns: ['Deduction piece', 'What it means', 'Planning note'],
57
+ rows: [
58
+ ['Standard deduction', 'A filing-status amount with age-based additions', 'Often wins when itemized expenses are modest'],
59
+ ['Itemized deductions', 'Specific deductible expenses entered in the plan', 'Can win in high property-tax, mortgage-interest, or giving years'],
60
+ ['SALT cap', 'A limit on deductible state and local tax in the itemized total', 'RetireGolden caps the SALT component using the year\'s parameter pack'],
61
+ ['Senior deduction', 'A current-law extra deduction for eligible older taxpayers', 'Modeled with phaseout and expiration rules from the parameter pack'],
62
+ ],
63
+ },
64
+ { type: 'heading', text: 'A worked example' },
65
+ {
66
+ type: 'scenario',
67
+ name: 'The Alvarez household',
68
+ assumptions: [
69
+ { label: 'Retirement income', value: 'Pension, IRA withdrawals, and $12,000 of taxable gains' },
70
+ { label: 'Itemized total', value: '$21,000 of property tax, mortgage interest, and giving' },
71
+ { label: 'Standard deduction estimate', value: '$30,000 for their filing status and ages' },
72
+ ],
73
+ summary:
74
+ 'Because $21,000 is below the $30,000 standard deduction estimate, itemizing would not lower taxable income here. A later year with a larger gift could flip that comparison.',
75
+ },
76
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
77
+ {
78
+ type: 'prose',
79
+ md: 'RetireGolden uses the federal parameter pack for the standard deduction, age-65 additions, SALT cap, and senior deduction. The tax engine compares standard and itemized deductions, adds the modeled senior deduction when applicable, and then applies ordinary-income and capital-gain tax rules to taxable income.',
80
+ },
81
+ { type: 'heading', text: 'Common mistakes' },
82
+ {
83
+ type: 'list',
84
+ items: [
85
+ 'Using AGI or MAGI as if deductions had already been applied.',
86
+ 'Assuming itemizing wins just because one deductible expense is large.',
87
+ 'Forgetting that deduction rules can expire or change.',
88
+ 'Expecting RetireGolden to replace tax-preparation software for every form-level limitation.',
89
+ ],
90
+ },
91
+ { type: 'heading', text: 'Where to use this in the app' },
92
+ {
93
+ type: 'prose',
94
+ md: 'Use **Strategy** for itemized-deduction inputs such as deductible state and local tax, mortgage interest, and charitable giving. Use **Results** to inspect deduction, taxable income, ordinary tax, and capital-gain tax by year.',
95
+ },
96
+ ],
97
+ }