Jaafar El Tassa Let's talk

Psychologist
AI Builder

School psychologist at San Francisco Unified School District, 11 years. I've built tools that automate workflows my team ran by hand for years: roster checks, drafting packets, inbox routing, and panel scheduling. I also build and evaluate privacy-aware, student-centered AI decision support tools grounded in school psychology expertise.

Resume (PDF)

Tools

All built with AI coding agents. No student data shown.
In use

Roster reconciliation

Python

  • The problem. Every week we receive external .xlsx spreadsheets of provider assignments. Checking them against internal .gsheet rosters by hand has been the slow and tedious standard practice for years.
  • What it does. Compares external .xlsx with internal .gsheet (4,900 rows, 460 matched students), surfacing every important flag and helpful information including new assignments, provider transfers, and more in one click.
In use

Referral file pipeline

Python

  • The problem. Referral cover sheets arrive as encrypted .docx files. Each one has to be manually opened, converted, and renamed before it can be filed - another slow and tedious workflow practiced for over a decade.
  • What it does. Watches an input folder and runs on its own via macOS LaunchAgents: decrypts each file, auto-converts to .pdf, strips hidden metadata, and renames it. Runs 10 referrals a week. Dry-run tested and fail checkers active.
In use

Referral packet builder

Python

  • The problem. A mental health services referral for a contractor assignment means pulling several documents from SaaS systems, putting them in order, protecting the file, and writing the email - another slow and tedious workflow practiced for over a decade.
  • What it does. Sorts and reads the downloaded documents, merges them into one password-protected .pdf packet, and writes an email draft ready for human approval, sent with one click. It runs on 5 to 10 real referrals a week.
In use

Shared inbox router

Google Apps Script

  • The problem. The department's shared ERMHS inbox used a simple filter that forwarded every email to everyone on the team - creating a hard-to-track info dump where everyone got everything, including mail meant for one person.
  • What it does. Gmail filters label each email the moment it arrives. Appointments and calendar invites are auto-archived. Everything else goes to a queue. Every 5 minutes a script labels and sends each queued email to one destination. It routes about 20 to 40 emails a week for a team of 7.
In use

Panel rotation scheduler

Python and Google Apps Script

  • The problem. A full year of consultation panel sessions has to be staffed from 108 people under eligibility, availability, and equity rules, which is hard to do by hand. For years the reminder emails were also sent by hand, as cancellations and last-minute changes kept the schedule moving.
  • What it does. Models the rules and solves a full-year rotation that meets all of them. Then runs unattended across 69 sessions. It sets up the calendars and sends one reminder 24 hours before sessions to panelists and presenters, with the information each needs to prep for that session's cases. Each reminder is built with the latest schedule at send time so it reflects cancellations and late changes.

Projects

In development
Since 2026

Consult Panel

Builder