Playbooks
A playbook carries a student through a process that spans weeks and offices. Each is a declared file in the control plane, is admitted by the factory when every check passes, reads only the grants it declares, and pauses in an explicit unresolved state instead of guessing. Shapes: rectangle, a step to do; diamond, a question; stadium, waiting on someone else; parallelogram, a message the student approves; double box, documents to gather.
Your letters each term
Get approved accommodation letters to every instructor at the start of each term, without the student having to repeat the conversation.
flowchart TD
start((Start)) --> request_letters
request_letters["request-letters: Ask your college's disability office for this term's letters…"]
request_letters --> list_courses
list_courses["list-courses: I made a list of your classes for this term, so none get mis…"]
list_courses --> note_to_office
note_to_office[/"note-to-office: Hello, this is {chosenName}. Please send my accommodation le…"/]
note_to_office --> confirm_received
confirm_received(["confirm-received: I'll check back in a week to make sure each teacher got your…"])
confirm_received --> done((Done))
confirm_received -. after 10 days .-> confirm_received_late[/"One or more letters may not have gone out. I can draft a sho"/]Sources: https://www2.ed.gov/about/offices/list/ocr/transition.html. Grants: sealed disability_accommodations; profile chosenName, college. Journeys: persona-8c-accommodation-letters.
Housing over breaks
Make sure a student has somewhere to stay over every break, arranged weeks ahead.
flowchart TD
start((Start)) --> dates
dates["dates: Your next break starts soon. I'll make sure you have a place…"]
dates --> ask_housing_office
ask_housing_office[/"ask-housing-office: Hello, this is {chosenName}. I need a place to stay over the…"/]
ask_housing_office --> backup
backup["backup: If campus housing is not available, I lined up shelter and h…"]
backup --> confirm
confirm(["confirm: Tell me when your break housing is confirmed."])
confirm --> done((Done))
confirm -. after 14 days .-> confirm_late[/"Break is getting close. Let's call 2-1-1 together for backup"/]Sources: https://sinclair.edu/student-life/wellness/resources/food-assistance/. Grants: profile chosenName, college. Journeys: persona-2a-break-housing.
Proof of enrollment packet
Assemble a dated proof-of-enrollment packet a student can hand to a parole officer, employer, landlord or caseworker.
flowchart TD
start((Start)) --> request_certificate
request_certificate["request-certificate: Ask the registrar for a letter that shows you are enrolled. …"]
request_certificate --> schedule
schedule["schedule: I added your class schedule for the term, so the packet show…"]
schedule --> share
share[/"share: Hello, this is {chosenName}. Attached is my enrollment certi…"/]
share --> done((Done))Sources: https://www.studentclearinghouse.org/. Grants: profile chosenName, college. Journeys: persona-3a-parole-schedule-proof.
FAFSA for 2027-28
File the 2027-28 FAFSA, including the path for students who cannot provide parent information, and carry it to an aid offer.
flowchart TD
start((Start)) --> account
account["account: Make your StudentAid.gov account if you don't have one. You'…"]
account --> parents_question
parents_question{"parents-question: Can your parents give you their facts and sign the FAFSA wit…"}
parents_question -- yes --> standard_file
parents_question -- no --> unusual_circumstances
standard_file["standard-file: Fill out the 2027-28 FAFSA at studentaid.gov. The form is op…"]
standard_file --> submission_summary
unusual_circumstances["unusual-circumstances: When the FAFSA asks, say you have unusual circumstances. You…"]
unusual_circumstances --> gather_letter
gather_letter[["gather-letter: Your aid office will ask for a letter from someone who knows…"]]
gather_letter --> tell_aid_office
tell_aid_office[/"tell-aid-office: Hello, my name is {chosenName}. I filed my 2027-28 FAFSA wit…"/]
tell_aid_office --> submission_summary
submission_summary(["submission-summary: Watch for your FAFSA Submission Summary by email."])
submission_summary --> verification
submission_summary -. after 14 days .-> submission_summary_late[/"Check the status at studentaid.gov, or ask me to draft a not"/]
verification(["verification: If your college asks you to prove what your FAFSA says, I'll…"])
verification --> carryover_note
verification -. after 30 days .-> verification_late[/"check in"/]
carryover_note["carryover-note: If your college approves your unusual circumstances, it carr…"]
carryover_note --> done((Done))Sources: https://abcnews4.com/news/nation-world/education-department-opens-2027-28-fafsa-early-marking-programs-earliest-launch, https://cdhe.colorado.gov/sites/highered/files/documents/Support_Guide_for_Unusual_Circumstances_F.pdf. Grants: sealed family_circumstances; profile chosenName, college. Journeys: persona-11a-fafsa-without-parents.
Aid for students who were in foster care
Make sure a student who was in foster care files the FAFSA as independent and applies for the education and training voucher meant for them.
flowchart TD
start((Start)) --> fafsa_independent
fafsa_independent["fafsa-independent: If you were in foster care at age 13 or older, the FAFSA cou…"]
fafsa_independent --> etv_check
etv_check{"etv-check: Were you in foster care at 16 or older, or did you leave car…"}
etv_check -- yes --> gather
etv_check -- no --> aid_office
gather[["gather: The voucher helps pay for tuition, books and supplies. Get t…"]]
gather --> ask_agency
ask_agency[/"ask-agency: Hello, this is {chosenName}. I am a student at {college} and…"/]
ask_agency --> wait_answer
aid_office[/"aid-office: Hello, this is {chosenName}. I was in foster care. Can you h…"/]
aid_office --> wait_answer
wait_answer(["wait-answer: Tell me when you hear back, and I will help with the next st…"])
wait_answer --> done((Done))
wait_answer -. after 10 days .-> wait_answer_late[/"It has been ten days. Want me to draft a short follow-up?"/]Sources: https://studentaid.gov/apply-for-aid/fafsa/filling-out/dependency, https://www.fosterclub.com/resources/ohio-education-training-voucher-etv, https://ohiocasa.org/wp-content/uploads/2026/03/DCY-00050-ETV-Rack-Card.pdf. Grants: sealed foster_care_history; profile chosenName, college. Journeys: p2-foster-youth-aid.
GI Bill each term
Keep a student's GI Bill tuition and housing allowance paid each term, catching problems before a payment is late.
flowchart TD
start((Start)) --> request_certification
request_certification["request-certification: Ask your school certifying official to certify your classes …"]
request_certification --> tell_certifying_official
tell_certifying_official[/"tell-certifying-official: Hello, this is {chosenName}. I registered for next term and …"/]
tell_certifying_official --> monthly_verification
monthly_verification["monthly-verification: Post-9/11 GI Bill students verify enrollment with VA each mo…"]
monthly_verification --> watch_payment
watch_payment(["watch-payment: Once your school sends your classes to the VA, I'll watch fo…"])
watch_payment --> done((Done))
watch_payment -. after 35 days .-> watch_payment_late[/"The payment looks late. I can draft a note to your certifyin"/]Sources: https://www.colorado.edu/veterans/2021/10/20/monthly-enrollment-verification. Grants: sealed veteran_status; profile chosenName, college. Journeys: persona-4a-gi-bill-tracked.
Paying for training after a layoff
Help an adult who lost a job or needs a new career find out whether workforce training funds can pay for their program.
flowchart TD
start((Start)) --> what
what["what: Training money can pay for classes in jobs that are hiring, …"]
what --> laid_off
laid_off{"laid-off: Did you lose a job, or are you looking to change careers?"}
laid_off -- yes --> gather
laid_off -- no --> ask_center
gather[["gather: Bring these to your first visit."]]
gather --> ask_center
ask_center[/"ask-center: Hello, this is {chosenName}. I live in {county} County and I…"/]
ask_center --> wait_meeting
wait_meeting(["wait-meeting: Tell me when your meeting is set, and I will put it on your …"])
wait_meeting --> done((Done))
wait_meeting -. after 7 days .-> wait_meeting_late[/"No answer yet. Want me to find the center's phone number so "/]Sources: https://emanuals.jfs.ohio.gov/Workforce/WIOA/WIOAPL/WIOAPL-15-08-1.stm, https://ohiomeansjobs.ohio.gov. Grants: profile chosenName, county, college. Journeys: p2-retraining.
SNAP application in Ohio
Carry a student from a likely SNAP match to a decision, including the student exemption, the interview and verification.
flowchart TD start((Start)) --> exemption exemption["exemption: Most students in school half-time or more need an exemption …"] exemption --> documents documents[["documents: Get these ready. Anything already in your vault is checked o…"]] documents --> apply apply["apply: Apply at benefits.ohio.gov. I filled in what I could; you re…"] apply --> interview interview(["interview: The county will call to schedule an interview. Tell me the d…"]) interview --> verification interview -. after 10 days .-> interview_late[/"Call your county Job and Family Services office to ask about"/] verification(["verification: If they ask for more documents, tell me what the letter says…"]) verification --> recertify verification -. after 30 days .-> verification_late[/"check in"/] recertify["recertify: When you're approved, I'll remind you before you need to ren…"] recertify --> done((Done))
Sources: https://www.fna.usda.gov/snap/students, https://www.greenecountyohio.gov/279/Job-Family-Services. Grants: profile chosenName, phone, zip, householdSize, monthlyGrossIncome, weeklyWorkHours. Journeys: persona-1b-bill-gap.
Keeping SNAP: recertification
Carry a student through SNAP recertification so benefits do not stop.
flowchart TD start((Start)) --> notice notice["notice: Your SNAP recertification notice came in. Finishing it on ti…"] notice --> documents documents[["documents: Get these ready. Anything in your vault is checked off."]] documents --> submit submit["submit: Submit the renewal at benefits.ohio.gov before the date on y…"] submit --> interview interview(["interview: If they schedule an interview, tell me the time and I will r…"]) interview --> done((Done)) interview -. after 14 days .-> interview_late[/"Call your county Job and Family Services office to check on "/]
Sources: https://www.fna.usda.gov/snap/students. Grants: profile chosenName, phone, householdSize, monthlyGrossIncome, weeklyWorkHours. Journeys: playbook-snap-recertification.
Verified by
- `apps/advocate/test/playbooks.test.ts` (5 test definitions)