Local-first outreach, human-approved
Learn the CRM by doing the workflows.
Pick schools, keep notes, find contacts, draft carefully, approve before sending, and keep score on what actually works.
Local-first outreach, human-approved
Pick schools, keep notes, find contacts, draft carefully, approve before sending, and keep score on what actually works.
Tap a card to jump to that workflow. Each workflow has a mini checklist you can click through while learning.
Launch SchoolReach.commandhttp://127.0.0.1:8765/Your working database is local: data/schoolreach.sqlite. Backups go in the same data/ folder before bigger imports or cleanup work.
Use this when you want to sit down and make progress without rebuilding the plan in your head.
Highest Grade filters by the school's highest grade. When a grade cap is active, schools with missing grade data are left out because SchoolReach cannot safely know whether they are above or below the cutoff.
Travel time and distance came from the imported data. Later, a Distance settings tab can recalculate them from a starting address with Google Maps.
When the Schools screen feels too busy, collapse the pieces that are not helping right now. The goal is to see one school's real information with less scrolling and less noise.
Browse with the list open. When a school looks worth attention, switch to Focus Detail and work from Contacts, My Notes, Notes & History, and drafts.
Open a school and use My Notes. Saved notes become dated history items under Notes & History.
Talked to office. PTO handles assemblies. Try September. Principal likes family nights.
FileMaker notes are cleaned up. Long ones use a Read full note expander so they do not take over the page.
Web search can be slow and messy. This keeps the expensive, guessy part visible and human-approved instead of quietly filling the CRM with bad contact guesses.
SchoolReach should help you move faster. It should not send mystery emails behind your back.
The goal is simple: only school outreach email should appear in SchoolReach.
This is the reply address added to new Gmail drafts.
schoolreach@312magic.comaaron+schools@312magic.comBlank means do not poll Gmail. Fill this only after replies are separated.
to:schoolreach@312magic.comlabel:SchoolReachMake a Gmail rule that labels school replies as SchoolReach, then set SchoolReach to read only label:SchoolReach.
The app should not be a second Gmail inbox. It should only bring in school outreach replies you asked it to watch.
Cleaned FileMaker notes appear as timeline events: contact research, calls, first touches, replies, follow-ups, and other useful traces.
Contact research stays contact research. The app should only call something booked when the data contains strong booking language.
Booked, ran, canceled, ghosted, student count, revenue, and notes are all part of learning what actually worked.
Outcomes are how SchoolReach learns which timing, contacts, and school types lead to real bookings.
server.pyschoolreach/schema.sqlschoolreach/services/crm.pyschoolreach/services/mail_provider.pystatic/app.js and static/styles.cssscripts/ contains imports, cleanup, and setup helpers.data/schoolreach.sqlite.before_filemaker_import_20260630 data/schoolreach.sqlite.before_related_filemaker_import_20260630 data/schoolreach.sqlite.before_note_cleanup_20260630
Small batches. Clear history. No surprise sends.