College access service for first-gen students. SvelteKit + Deno + Supabase + Ollama (Mac Mini) for essay coaching + PDF parsing.
| Component | Technology | Why |
|---|---|---|
| Student UI | Telegram Bot + SMS | Text-first, no app install needed. Students already on Telegram. |
| Counselor UI | SvelteKit dashboard | Track student progress, manage cohorts, view outcomes |
| Backend | Deno 2 | Aid letter parser, essay coach agent, scholarship matcher |
| Database | Supabase (PostgreSQL) | Students, sessions, scholarship database, essay drafts |
| AI | Ollama (Mac Mini) | Essay coaching, financial aid explanation, guide generation |
| PDF Parsing | PdfParse + custom parser | Aid letter parsing, text extraction from scanned PDFs |
| Payments | Stripe (Outgrow alternative) | District invoicing, sliding scale payments |
| students | ||
|---|---|---|
| id | uuid | |
| name | varchar(255) | |
| phone | varchar(20) | Telegram + SMS |
| household_income | integer | For sliding scale |
| intended_major | varchar(100) | |
| hs_name | varchar(255) | |
| cohort | uuid (FK) | District/group |
| status | enum | aid_letter, essay, scholarship, decision, enrolled |
| scholarships | ||
|---|---|---|
| id | uuid | |
| name | varchar(255) | |
| amount | integer | |
| requirements_json | jsonb | GPA, demographics, major, income |
| deadline | date | |
| url | varchar(500) | |
| source | varchar(100) | national, state, local, school |
| essay_sessions | ||
|---|---|---|
| id | uuid | |
| student_id | uuid (FK) | |
| intake_json | jsonb | Answers from intake interview |
| drafts_json | jsonb[] | Generated drafts |
| final_draft | text | Student's final version |
| status | enum | intake, drafting, revision, final |