Skip to main content
Case studies
Tutoring SaaS, German market

Hours of matching,down to seconds.

A German tutoring company was running recruitment, matching, contracts, and money on a legacy PHP system propped up by spreadsheets. We rebuilt the whole operation as a React and Supabase platform: smart teacher-student matching, digital contracts, and a dual-sided financial engine.

0K+
Lines of code
Full-stack TypeScript
0+
Database tables
All with row-level security
0
Custom hooks
React
172
TSX files
66 UI components
The challenge

Spreadsheets, paper,and no margin in sight.

CleverCoach connects qualified teachers with students across multiple subjects and educational levels in Germany, managing the full lifecycle from teacher recruitment through placement, contracts, lessons, and payments. All of it ran on a fragile legacy PHP/MySQL system supplemented by manual spreadsheets.

Matching was done by hand, contracts were printed and physically signed, and financial tracking across receivables and payables was a constant headache. The company needed one platform that could handle a multi-stage recruitment pipeline, 13 student status types, geographic matching, digital signature workflows, and dual-sided finances, with three distinct user roles and proper access control.

Matching by hand

Administrators spent hours cross-referencing spreadsheets to pair teachers with students by subject, location, and availability.

Paper contracts

Printed, physically signed, scanned, and filed. Lost documents and signature delays were routine.

No financial visibility

Teacher payments and student invoicing lived in separate spreadsheets, with no automated profit margin analysis.

A legacy PHP/MySQL system

Difficult to maintain, no mobile support, and none of the modern security controls like row-level security.

Hours
Per placement
Manual spreadsheet matching
Paper
Contract signing
Print, sign, scan, file
Blind
Financial tracking
No profit visibility
What we built

One platform forthe whole lifecycle.

We rebuilt CleverCoach from the ground up as a type-safe React and Supabase single-page app, replacing the legacy PHP/MySQL system with real-time data, smart matching, digital contracts, and full financial management.

Platform modules
01
Smart matching engine

Six weighted criteria score every candidate teacher from 0 to 100 for a student: subject match (25%), geographic distance by the Haversine formula (20%), availability overlap (20%), current workload (15%), rating (10%), and preferences (10%).

Haversine distanceGoogle Maps APIWeighted scoring
02
Teacher recruitment pipeline

A six-stage hiring flow from New through Screening, Interview, Offer, and Pending Signature to Hired, with waiting-list and rejection tracking built in.

6 stagesWaiting list
03
Digital contract signing

A two-phase workflow: an admin drafts the contract, the student signs it in the browser, and PDF generation plus email notifications close the loop.

react-signature-canvasPDF generationSendGrid
04
Lesson tracking

Scheduling, completion tracking, progress ratings from 1 to 5, homework tracking, and a calendar view for every teacher.

CalendarProgress ratings
05
Dual-sided financial engine

Receivables (student invoicing with credit notes) and payables (teacher payments) in one place, with profit margin analysis and CSV/Excel export.

Credit notesMargin analysisData export
06
Role-scoped Supabase backend

PostgreSQL with row-level security on all 13+ tables, real-time subscriptions, edge functions, and five storage buckets. Three JWT-authenticated roles: admins run users and finances, teachers log lessons and availability, students view schedules and sign contracts.

RLSJWT auth5 storage buckets
The results

Matching in seconds,margins in view.

The day-to-day operations, before and after the rebuild.

Metric
Legacy PHP + spreadsheets
React + Supabase
Teacher-student matching
Algorithm scoring replaced spreadsheet search
Hours
Seconds-99%
Contract process
E-signature in the browser
Paper
Digital100%
Financial tracking
Dual-sided with margins
Blind
Real-time100%
Student pipeline
Full lifecycle tracking
Email and phone
13 stagesNew
Seconds
Per match
Was hours of spreadsheet work
0 to 100
Compatibility score
Six weighted criteria
16 weeks
To production
Including legacy data migration
How it shipped

Sixteen weeksto production.

From legacy analysis to launch, including the data migration off the old system.

01

Discovery and legacy analysis

2 weeks

Analysed the existing PHP/MySQL codebase, documented every business rule, and mapped the teacher recruitment pipeline and student lifecycle workflows.

02

Architecture and foundation

3 weeks

Designed the Supabase schema with 13+ tables, configured row-level security policies, set up authentication for three roles, and provisioned five storage buckets.

03

Core modules

6 weeks

Built teacher and student management, the matching algorithm with Haversine distance calculation, digital contract signing, and the lesson tracking system.

04

Financial engine

3 weeks

Implemented dual-sided invoicing across receivables and payables, the credit note system, profit margin analysis, and CSV/Excel export.

05

Polish and migration

2 weeks

Migrated data from the legacy PHP/MySQL system, tested end to end, trained the admin team, and deployed to production.

The stack

What it runs on.

React 18TypeScript 5.8Vite 5.4Supabaseshadcn/uiRadix UITailwind CSS 3.4Zustand 5.0TanStack Query 5React Hook FormZodRechartsreact-signature-canvasdate-fnsreact-dropzoneEmbla CarouselGoogle Maps APISendGrid
The platform completely transformed our operations. Teacher-student matching that used to take hours now happens in seconds with better results. Digital contracts eliminated our paper nightmare, and for the first time we have real visibility into our financial performance.

The migration from our old PHP system went smoothly. BearPlex understood our complex business rules, from the multi-stage teacher pipeline to the dual-sided invoicing, and delivered a modern platform that our team actually enjoys using.

B
Batuhan
Co-founder, CleverCoach