Plan: Caseworker Workflow Guidance Templates
On this page
Status
| Step | Description | Status |
|---|---|---|
1 |
Create rulesets/georgia/workflows/ directory and SNAP intake template |
Done (2026-04-09) — snap-application-intake.toml (9 steps, PAMMS 3105/3110/3035) |
2 |
Create SNAP renewal, change processing, expedited, and ABAWD templates |
Done (2026-04-09) — snap-renewal.toml, snap-change-processing.toml, snap-expedited.toml, snap-abawd-tracking.toml |
3 |
Create TANF intake, work plan, and sanction process templates |
Done (2026-04-09) — tanf-application-intake.toml, tanf-work-plan.toml, tanf-sanction-process.toml |
4 |
Create cross-program referral template |
Done (2026-04-09) — cross-program-referral.toml (6 conditional referral steps) |
5 |
Add workflow loading to canopy-web (optional guidance panel) |
Done (verified 2026-04-26) — workflows loaded at startup as |
6 |
Verify templates render in worker portal |
Deferred (worker-portal-phase3) — requires Askama template for guidance panel; deferred to a post-UAT worker-portal phase per the plan’s stated optional-guidance scope. Tracked at #349. |
Dependency: ADR-011 (complete), canopy-policy crate workflow types (complete)
Branch: feature/workflow-guidance-templates
Context
PAMMS documents step-by-step caseworker procedures for every operation. Per ADR-011 Layer 4, these can be captured as workflow templates that inform (but don’t constrain) the worker portal. A jurisdiction with no workflow files gets no guidance — the portal functions identically.
The canopy-policy crate already defines WorkflowTemplate and WorkflowStep types (see crates/canopy-policy/src/workflow.rs). This plan creates the actual template files and wires them into the worker portal.
Key constraint: Workflow steps are informational only. No action handler checks workflow state. Workers CAN follow the recommended workflow but are never forced to.
Design
Template Structure
Each template is a TOML file following the schema in crates/canopy-policy/src/workflow.rs:
[workflow]
name = "Template Name"
program = "snap" # or "tanf", "medicaid", "cross-program"
trigger = "event.name" # what triggers this workflow
description = "..."
[[steps]]
order = 1
label = "Step label"
description = "What to do"
policy_ref = "dfcs-snap/modules/snap/pages/3105.adoc"
action = "auto" # "auto" = system handles, "worker" = caseworker guidance
required = true # federal requirement (true) or optional (false)
federal_citation = "7 CFR 273.2"
Template Inventory
| Template File | Program | PAMMS Source |
|---|---|---|
|
SNAP |
3105, 3110, 3035 |
|
SNAP |
3710, 3730 |
|
SNAP |
3715, 3720 |
|
SNAP |
3110 |
|
SNAP |
3355 |
|
TANF |
1105, 1394 |
|
TANF |
1815, 1820 |
|
TANF |
1351 |
|
cross-program |
SNAP 3210, TANF 1355, Medicaid 2900 |
Steps
Step 1: SNAP Application Intake Template
File: rulesets/georgia/workflows/snap-application-intake.toml
Steps derived from PAMMS 3105 and 3110:
-
Register application (auto, 24 hours, PAMMS 3105)
-
Screen for expedited service (auto, PAMMS 3110 — 3 criteria paths)
-
Schedule interview (worker, within 30-day SOP, PAMMS 3105)
-
Conduct interview (worker, telephone or face-to-face, PAMMS 3105)
-
Send verification checklist (auto, Form 173, PAMMS 3035 — 10 days to provide)
-
Check IEVS/clearinghouse matches (auto, PAMMS 3505/3515)
-
Check NAC (auto, PAMMS 3510 — 10 days to act on match)
-
Resolve pending verification (worker, PAMMS 3035)
-
Determine eligibility (auto, calls rules engine)
-
Generate notice of action (auto)
Step 2: Additional SNAP Templates
Create 4 additional SNAP templates with steps from their respective PAMMS sections. Each follows the same structure as Step 1. Key workflow details:
snap-renewal.toml (PAMMS 3710): Send renewal packet (15th of month before cert end) → Conduct interview (if 12+ month since last) → Verify changes → Determine → Generate notice. Include late renewal path (30 days after cert end, prorate from date received).
snap-change-processing.toml (PAMMS 3715): Receive change report → Classify (SRR required vs voluntary) → Verify if threshold met ($50 earned, $100 unearned) → Calculate net effect → Apply increase/decrease rules → Generate notice with timely notice (14 days for adverse).
snap-expedited.toml (PAMMS 3110): Verify identity only → Issue benefits by 7th day → Set postponed verification deadline → Follow up verification → Convert to standard cert or deny.
snap-abawd-tracking.toml (PAMMS 3355): Identify ABAWD status → Record monthly activity → Check 80-hour threshold → Update time clock → Issue warning at month 2 → Terminate at month 3 → Track regaining eligibility (80 hrs in 30 consecutive days).
Step 3: TANF Templates
tanf-application-intake.toml (PAMMS 1105): Register → Interview → Verify deprivation → Verify identity (HOH) → Check immunization (preschool) → Develop TFSP (Form 196) → Screen for TCOS → Determine → Generate notice. 45-day SOP.
tanf-work-plan.toml (PAMMS 1815, 1820): Assess job readiness → Develop work plan (Form 196A) → Assign activities (core 20-30 hrs + non-core 5-10 hrs) → Monitor compliance → Report hours → Record good cause if applicable.
tanf-sanction-process.toml (PAMMS 1351): Identify non-compliance → Offer conciliation (one-time, 7 days to schedule, 14 days to appointment) → If conciliation fails, first sanction (25% reduction, 3 months) → If second failure, termination (3 months) → Subsequent cycle (25% then 12-month termination).
Step 4: Cross-Program Referral Template
File: rulesets/georgia/workflows/cross-program-referral.toml
Steps from PAMMS cross-program referral requirements:
-
SNAP → TANF: If household has dependent children and no TANF, suggest TANF application (PAMMS 3210 TCOS screening)
-
SNAP → WIC: If household has children under 5 or pregnant women, refer to WIC (PAMMS Appendix A)
-
TANF → Medicaid: All TANF children auto-referred for Medicaid CMD (PAMMS 2052)
-
TANF → DCSS: Child support cooperation required (PAMMS 1320)
-
Medicaid → PeachCare: If over Medicaid limits but under 247% FPL, auto-refer to PeachCare (PAMMS 2182)
-
SNAP → LIHEAP: If elderly/disabled AU, inform of LIHEAP for SUA eligibility (PAMMS 3617)
Each step has condition field for conditional rendering (e.g., condition = "household_has_child_under_5").
Step 5: Wire Into canopy-web
Files: services/canopy-web/src/workflows.rs (new), services/canopy-web/src/main.rs (wire), templates (optional sidebar component)
Follow the pattern of services/canopy-web/src/theme.rs — load TOML files from rulesets/{jurisdiction}/workflows/ at startup using canopy_policy::workflow::load_all_workflows(). Store as Arc<Vec<WorkflowTemplate>> Extension.
In the case detail page, render an optional "Recommended Steps" panel when a workflow template matches the current context (e.g., trigger = "application.submitted" on the application processing page). Steps show as a checklist with "auto" steps pre-checked.
The panel is collapsible and hidden by default. It does NOT block any action.
Step 6: Verify
-
All template files parse without error:
canopy_policy::workflow::load_all_workflows("rulesets/georgia/workflows/") -
Templates render in canopy-web case detail pages
-
All actions work identically with and without workflow templates
-
A jurisdiction with no
workflows/directory shows no guidance panel
PAMMS Source References
-
SNAP application:
dfcs-snap/modules/snap/pages/3105.adoc -
SNAP expedited:
dfcs-snap/modules/snap/pages/3110.adoc -
SNAP verification:
dfcs-snap/modules/snap/pages/3035.adoc -
SNAP renewal:
dfcs-snap/modules/snap/pages/3710.adoc -
SNAP changes:
dfcs-snap/modules/snap/pages/3715.adoc,3720.adoc -
SNAP ABAWD:
dfcs-snap/modules/snap/pages/3355.adoc -
TANF application:
dfcs-tanf/modules/tanf/pages/1105.adoc -
TANF sanctions:
dfcs-tanf/modules/tanf/pages/1351.adoc -
TANF work activities:
dfcs-tanf/modules/tanf/pages/1820.adoc -
Cross-program referrals:
dfcs-medicaid/modules/medicaid/pages/2900.adocthrough2985.adoc