Skip to content
All projects

Client work / Yakal Education

Yakal Education

Yakal Education Services sells private tutoring and college admissions counselling. This platform is where families buy those services, students and tutors do the work, and parents, counselors and admins keep track of it.

Wrote 805 of the 868 commits on the main branch.

The public site where families find tutoring and college counselling
Students browse 1,944 US universities ranked against their own GPA and SAT
Counselors see what each college still needs from a student
Tutors set the weekly hours families can book
Parents follow their child's college list, deadlines and costs
Admins set the counselling plans families buy
A built-in assistant explains how the app works for each role
A blog for parents and students, managed from the admin dashboard
A grade by grade roadmap to college on the phone

01 / 10The public site where families find tutoring and college counselling

Overview

Yakal sells two things: one-on-one tutoring and college admissions counselling. Before this platform, booking, payment, homework, essays and messages were spread across email, chat apps and spreadsheets.

The app gives each of five roles its own dashboard. Parents pay and follow their children. Students attend sessions, track applications and build a college list. Tutors set availability and run courses. Counselors review essays and application progress. Admins approve staff, set prices and publish the blog.

It is one React app on top of Supabase for the database, sign-in, file storage and realtime updates, with a small server only for work that needs a secret: charging cards through Stripe, signing Zoom meetings, reading Google Classroom and sending email.

Features

  • Parents buy courses and monthly counselling plans through Stripe, and tutors and counselors are paid out through Stripe Connect
  • Students search 1,944 US universities with cost, admit rate and SAT ranges from the federal College Scorecard, ranked against their own scores
  • Students, parents and counselors share one application tracker showing what each college still needs
  • Tutors set weekly availability, sessions run on Zoom, and assignments are read from Google Classroom so students never sign in to Google
  • Realtime messages between every role, with parents able to read their children's conversations and anyone able to flag a message for review
  • An in-app assistant for each role that answers how-to questions by text or voice

Challenges

  • Access control lives in Postgres row level security rather than a backend, so a missing policy is a data leak. Every role's reads and writes were written as policies and pinned with verify scripts, one per bug that had already happened.
  • A paid order must never depend on the browser coming back from checkout. Only the Stripe webhook grants access, and tutor earnings are recorded when a lesson completes and held before payout so undelivered work can still be refunded.
  • The support assistant went silent twice: once when the model provider retired the default model, and once when streamed replies arrived with Windows line endings the parser did not split on. The model became a setting and the stream parser got its own check.
  • The audience is often on slow mobile data, so the app installs as a PWA that caches the app shell but never caches private data such as grades or messages, and heavy libraries such as error reporting were trimmed to about half their size.