Skip to content

Conversation

@hua7450
Copy link
Collaborator

@hua7450 hua7450 commented Jan 2, 2026

Summary

Closes #7077

Implements Vermont's Reach Up program (Vermont's TANF) administered by the Department for Children and Families (DCF).

Regulatory Authority

Income Eligibility Tests

Earned Income Disregard (per person)

  • First $350/month disregarded per person (effective Jan 1, 2024; was $250 from 2015-2023)
  • 25% of remaining earnings disregarded
  • Formula: Countable = (Gross - $350) × 0.75 per earner
  • Source: 33 V.S.A. Section 1103(a)(3), Act 133 Section 2

Child Support Disregard

Dependent Care Deduction

Resource Limit

  • $9,000 household asset limit
  • Exclusions: Primary residence, vehicles (one per adult), retirement accounts, 529 plans, burial plots
  • Source: 33 V.S.A. Section 1103(c)(5)(A)

Income Standards

Basic Needs Allowance (effective October 2021)

Family Size Basic Needs
1 $644
2 $942
3 $1,236
4 $1,478
5 $1,733
6 $1,907
7 $2,203
8 $2,458
9+ $2,458 + $236 per additional person

Source: Vermont TANF State Plan 2024-2027, Attachment C

Housing Allowance

County Maximum
Chittenden $450/month
All Others $400/month

Source: Code Vt. R. 13-170-220-X Section 2246

Payment Standard

Family Size Non-Chittenden Chittenden
1 $518 $543
2 $665 $690
3 $811 $836
4 $931 $956
5 $1,058 $1,083
6 $1,144 $1,169
7 $1,291 $1,316
8 $1,417 $1,442

Ratable Reduction: Payment Standard = (Basic Needs + Housing Allowance) × 0.496

Example for family of 3 in Chittenden: ($1,236 + $450) × 0.496 = $836

Source: Vermont TANF State Plan 2024-2027, Rule 2239

Benefit Calculation

Payment Standard = (Basic Needs + min(Housing Cost, Housing Max)) × 0.496
Countable Income = Σ(max(0, (Person Earnings - $350)) × 0.75) + max(0, Unearned - Child Support Disregard)
Benefit = max(Payment Standard - Countable Income, 0)

Historical Values

Basic needs allowances have been frozen and periodically adjusted:

  • March 2004: Values frozen (e.g., $475 for size 1)
  • August 2019: Increased to 2008 adjusted levels (e.g., $585 for size 1)
  • October 2021: Increased to 2019 adjusted levels (e.g., $644 for size 1)

Sources: Reach Up Annual Report 2018, Section 7, Reach Up Annual Report 2020, Section 7

Not Modeled

Minimum Benefit Threshold

Benefits below $10/month are not issued. This implementation calculates the full benefit amount without applying the minimum threshold.

Source: Code Vt. R. 13-170-220-X Rule 2242

Dependent Child Age for Secondary School Students

Act 133 (2021 Adj. Sess.) extended the dependent child age limit from 19 to 22 for full-time secondary school students (or equivalent vocational/technical training), effective January 1, 2024. This implementation uses the federal demographic eligibility (is_demographic_tanf_eligible) which has a 19-year age limit for secondary school students.

Source: 33 V.S.A. § 1101(10)

Subsidized Job Disregard

Subsidized employment receives only a $90/month disregard (vs $350 for unsubsidized). This implementation applies the $350 disregard to all earned income regardless of subsidization status.

Source: 33 V.S.A. § 1103

Education/Training/Employment Stipends Exclusion

Education stipends, employment stipends, and job training stipends should be excluded entirely from income. This implementation counts all earned income without distinguishing stipend types.

Source: 33 V.S.A. § 1103

Incentive Payments Exclusion

Payments for completing required activities should be excluded from income. This implementation does not separately track incentive payments.

Source: 33 V.S.A. § 1103

Files Added

Variables (12 files)

policyengine_us/variables/gov/states/vt/dcf/reach_up/
├── vt_reach_up.py
├── vt_reach_up_basic_needs_allowance.py
├── vt_reach_up_housing_allowance.py
├── vt_reach_up_payment_standard.py
├── eligibility/
│   ├── vt_reach_up_eligible.py
│   ├── vt_reach_up_income_eligible.py
│   └── vt_reach_up_resources_eligible.py
└── income/
    ├── vt_reach_up_countable_earned_income.py
    ├── vt_reach_up_countable_earned_income_person.py
    ├── vt_reach_up_countable_income.py
    ├── vt_reach_up_countable_unearned_income.py
    └── deductions/
        └── vt_reach_up_dependent_care_deduction.py

Parameters (11 files)

policyengine_us/parameters/gov/states/vt/dcf/reach_up/
├── allowance/
│   ├── basic_needs/
│   │   ├── amount.yaml (with historical values: 2004, 2019, 2021)
│   │   ├── additional_person.yaml
│   │   └── max_size.yaml
│   ├── housing/
│   │   ├── chittenden.yaml
│   │   └── non_chittenden.yaml
│   └── ratable_reduction.yaml
├── income/
│   ├── deductions/
│   │   ├── child_support.yaml
│   │   └── dependent_care.yaml
│   └── earned_disregard/
│       ├── flat.yaml
│       └── rate.yaml
└── resources/
    └── limit.yaml

Tests (12 files, 58 test cases)

policyengine_us/tests/policy/baseline/gov/states/vt/dcf/reach_up/
├── integration.yaml (10 complete benefit calculation scenarios)
├── vt_reach_up.yaml
├── vt_reach_up_basic_needs_allowance.yaml
├── vt_reach_up_countable_earned_income.yaml
├── vt_reach_up_countable_earned_income_person.yaml
├── vt_reach_up_countable_unearned_income.yaml
├── vt_reach_up_dependent_care_deduction.yaml
├── vt_reach_up_eligible.yaml
├── vt_reach_up_housing_allowance.yaml
├── vt_reach_up_income_eligible.yaml
├── vt_reach_up_payment_standard.yaml
└── vt_reach_up_resources_eligible.yaml

Key Implementation Details

Geographic Variation

Vermont is one of only seven states where benefit levels vary by geographic region:

  • Chittenden County: Higher housing allowance ($450/month)
  • All Other Counties: Standard housing allowance ($400/month)

Per-Person Earned Income Disregard

Per Section 2252.3, the $350 flat disregard and 25% rate are applied to each eligible household member's earned income separately, then summed to get total countable earned income. This differs from some states that apply disregards at the household level.

Ratable Reduction

The 49.6% factor reduces the payment standard from full need level. Note: H.94 (Act 49 of 2023) directs elimination of this reduction over 5 years by 2030.

Eligibility Components

  • Federal demographic eligibility (uses existing is_demographic_tanf_eligible)
  • Federal immigration eligibility (uses existing is_citizen_or_legal_immigrant)
  • State income eligibility (countable income < payment standard)
  • State resource eligibility ($9,000 limit)

Starting implementation of Vermont's Reach Up program.
Documentation and parallel development will follow.
Implements Vermont's Temporary Assistance for Needy Families program
including income eligibility, earned income disregards, housing allowance
by county (Chittenden vs. non-Chittenden), and benefit calculation with
ratable reduction.

Closes PolicyEngine#7077
@codecov
Copy link

codecov bot commented Jan 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (fc2b613) to head (9a53483).
⚠️ Report is 42 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #7078   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           10        12    +2     
  Lines          144       167   +23     
=========================================
+ Hits           144       167   +23     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@hua7450 hua7450 marked this pull request as ready for review January 6, 2026 04:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Vermont TANF (Reach Up) program

1 participant