Skip to content

Add San Mateo County General Assistance#8360

Open
hua7450 wants to merge 9 commits into
PolicyEngine:mainfrom
hua7450:ca-smc-ga
Open

Add San Mateo County General Assistance#8360
hua7450 wants to merge 9 commits into
PolicyEngine:mainfrom
hua7450:ca-smc-ga

Conversation

@hua7450
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 commented May 20, 2026

Fixes #8359.

Summary

Adds San Mateo County General Assistance (SMC GA) as a local California cash assistance program. Also fixes two pre-existing Alameda County GA bugs surfaced during review (see Related Fixes).

Regulatory Authority

  • San Mateo County HSA General Assistance Fact Sheet (Feb 2025)
  • San Mateo County HSA Standards of Assistance Chart (C-335 Rev. 12.2025)
  • San Mateo County Board Resolution 21-720, Modifications A–O (Sept 2021, full implementation March 1, 2022)
  • San Mateo County Board File 26-290 (Apr 7, 2026 Board Memo) — NMOHC-with-BHRS/SMMC-referral COLA increase to $1,626.07 effective Jan 1, 2026

Eligibility

Requirement Source How Modeled
San Mateo County residency Fact Sheet p.1 in_smc
At least 18 years old Fact Sheet p.1 age >= minimum_age (parameter)
Qualified immigration status Fact Sheet p.1 ca_smc_general_assistance_immigration_status_eligible_person
No minor children in SPM unit Resolution 21-720 p.2 WHEREAS clause: "individuals who have no minor children" ~has_minor_child
Not currently receiving SSI Board Memo p.1 (Interim Aid Reimbursement framing) ssi == 0 (already implies categorical + income test + takeup)
Meets work requirement Fact Sheet p.1 ca_smc_general_assistance_meets_work_requirements (see Work Requirement)
Countable income strictly below payment standard Fact Sheet p.2 "Maximum Aid Payment"; the property limit "must be under" parallel Strict < (per-applicant after scaling)
Countable property strictly below $1,464 Fact Sheet p.2; C-335 chart Strict < against flat limit

Payment Standards

Per the C-335 chart, by living arrangement:

Living arrangement Maximum Aid Payment Effective Date
Independent Living $732 2023-10-01
Drug & Alcohol Treatment Center $732 2023-10-01
NMOHC without BHRS/SMMC referral $732 2023-10-01
NMOHC with BHRS/SMMC referral $1,599.07 → $1,626.07 2025-01-01 → 2026-01-01

NMOHC-with-referral tracks the California SSI NMOHC rate (CDSS-set, annual Jan-1 COLA). Pre-2025 amounts are not in the available source PDFs; noted with an inline comment in payment_standard.yaml.

Property Rules

  • Flat $1,464 limit (not scaled by number of applicants) — household-level resource pooling matches SSI/SNAP/TANF; couples cannot double the limit by breaking out.
  • Vehicle exemption: one vehicle per SPM unit excluded at the household average value, plus a partial exclusion of $2,928 against the combined equity of additional vehicles. Computed as max(additional_vehicle_equity - $2,928, 0). PolicyEngine has only aggregate household_vehicles_value and household_vehicles_owned, so the average-based proportional approximation is the only viable approach.

Income and Benefit

  • Earned-income deduction: 20% (Resolution Modification E aligns SMC with CalFresh; cross-cites 7 CFR § 273.9(d)(2)).
  • Income pooling: all SPM-unit member income is summed (regardless of categorical eligibility) — a unit with a high-income member should not qualify regardless of who applies.
  • Per-applicant scaling: payment standard and benefit are per eligible person; total benefit = (standard − per-person countable income) × n_eligible.

Work Requirement

The Fact Sheet requires "available for full-time employment" plus VRS Work Center participation. Exemptions:

Exemption Modeled
Employed full-time Yes — any earned income > 0 (matches Riverside General Relief)
Age 65+ Yes (senior_exemption_age parameter)
Disabled Yes (is_disabled)
Attending school for HS diploma Approximated via is_full_time_student
Limited English proficiency Yes — household-level is_non_english_speaking_home (defaults to False, so doesn't silently exempt everyone)
Participating in work program Yes — via new generic is_in_work_program input (see below)
Caregiver for ill household member Not tracked at the moment
Child under 16 Moot — minor children disqualify the SPM unit anyway
HSA-approved training program Not tracked at the moment

New cross-program input: is_in_work_program

A generic Person/MONTH boolean input letting callers explicitly mark work-program participation (VRS Work Center, CalWORKs Welfare-to-Work, SNAP E&T, TANF work activities, ABAWD work-program participation). Lives in variables/household/demographic/person/ alongside is_disabled, is_full_time_student, etc. Reusable across SMC GA, Riverside GR, and federal/state programs that currently model work compliance only through observable proxies.

Related Fixes (Alameda County)

Two pre-existing bugs in Alameda General Assistance surfaced during review and are fixed in this PR:

  1. in_ala.py typo: county == "Alameda_COUNTY_CA""ALAMEDA_COUNTY_CA". The mixed-case string never matched the all-caps enum, silently making every Alameda household ineligible.
  2. programs.yaml parameter prefix: gov.local.ca.ala.gagov.local.ca.ala.general_assistance to match the actual parameter folder structure.

Changelog: changelog.d/fixed/8360.md.

Not Modeled (by design)

Requirement Source Reason
15-day county residency Fact Sheet p.1 We don't track length-of-county-residency at the moment
Identification / SSN verification Fact Sheet p.1 Verification flows are administrative
Interview, QR-7 reporting, renewal Fact Sheet p.2 Administrative process
Application for other potential income Fact Sheet p.1 (and Board Memo IAR framing) Modeled indirectly via ssi == 0; CAPI not separately gated
Drug-felon / fleeing-felon disqualifications Fact Sheet p.2 (Client Responsibility) Not in available source data
Pre-October 2023 historical amounts C-335 chart Authoritative pre-Oct-2023 amounts not in available sources; verified_start_year: 2023 in programs.yaml
Pre-January 2025 NMOHC-with-referral rates C-335 chart CDSS sets the rate annually; pre-2025 values not in available sources

Files

parameters/gov/local/ca/smc/general_assistance/
variables/gov/local/ca/smc/general_assistance/
tests/policy/baseline/gov/local/ca/smc/general_assistance/
variables/household/demographic/person/is_in_work_program.py
variables/gov/local/ca/ala/in_ala.py            (typo fix)
programs.yaml                                    (SMC entry + Alameda parameter_prefix fix)
changelog.d/fixed/8360.md

Test plan

  • 68 SMC GA tests pass
  • 18 Alameda GA tests still pass after the typo fix
  • make format clean
  • CI passes

@codecov
Copy link
Copy Markdown

codecov Bot commented May 20, 2026

Codecov Report

❌ Patch coverage is 99.45946% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 98.96%. Comparing base (92fdab8) to head (5a51d79).
⚠️ Report is 21 commits behind head on main.

Files with missing lines Patch % Lines
...licyengine_us/variables/gov/local/ca/ala/in_ala.py 0.00% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##              main    #8360      +/-   ##
===========================================
- Coverage   100.00%   98.96%   -1.04%     
===========================================
  Files            2       15      +13     
  Lines           57      193     +136     
  Branches         1        0       -1     
===========================================
+ Hits            57      191     +134     
- Misses           0        2       +2     
Flag Coverage Δ
unittests 98.96% <99.45%> (-1.04%) ⬇️

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 May 22, 2026 20:28
@hua7450 hua7450 requested a review from PavelMakarchuk May 25, 2026 13:34
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 San Mateo County General Assistance

1 participant