Helping Kenyan students discover the university and diploma courses they qualify for β based on their real KCSE grades and 2024 KUCCPS cutoff points.
π Live App: course-compass-one.vercel.app
Every year, thousands of Kenyan Form 4 leavers struggle to know which university courses they qualify for. This tool solves that.
Enter your KCSE grades β get your cluster scores β see every course you qualify for.
- β Automatic cluster score calculation using the official KUCCPS formula
- β 393 courses β 291 degrees + 102 diplomas with exact 2024 KUCCPS cutoff points
- β Interest-based filtering β only see courses in fields you care about
- β M-Pesa STK Push payment via IntaSend (secure backend verification)
- β Google OAuth β sign in once, retrieve results anytime without re-paying
- β Diploma-only mode β automatically detected for students below C+
- β Returning user flow β retrieve previous results by name and phone
- β Installable as a PWA β works like a native app on Android and iPhone
- β 2024 KUCCPS official cutoff points PDF embedded for verification
- β WhatsApp support button for direct student assistance
| Layer | Technology |
|---|---|
| Frontend | React 18 + TypeScript |
| Styling | Tailwind CSS + shadcn/ui |
| Backend / Database | Supabase (PostgreSQL + RLS) |
| Auth | Supabase Google OAuth |
| Payments | IntaSend M-Pesa STK Push |
| Serverless Functions | Supabase Edge Functions (Deno) |
| PWA | vite-plugin-pwa + Workbox |
| Deployment | Vercel |
| Build Tool | Vite + SWC |
User enters KCSE grades
β
Cluster engine calculates scores (calibrated to 2024 KUCCPS data)
β
matchCoursesWithCutoffs() β ranked list of qualifying courses
β
M-Pesa STK Push (IntaSend) β Edge Function β Supabase payments table
β
mpesa-callback Edge Function verifies payment server-side
β
Frontend polls DB for confirmed status β unlocks results
Payment flow is fully secure β access is only granted after the backend Edge Function confirms the transaction from IntaSend's webhook. The frontend never grants itself access.
| Table | Purpose |
|---|---|
users |
Student profiles (name, gender, age, phone) |
user_results |
KCSE subject grades per student |
user_cluster_results |
Calculated cluster scores |
payments |
M-Pesa payment records with status |
courses |
393 courses with cutoff points |
degree_programme_cutoffs_exact_2024 |
703 exact 2024 KUCCPS cutoffs |
reviews |
Student reviews (admin-approved before display) |
C = β((r/48) Γγ°γ€ (t/84)) Γγ°γ€ 48 Γγ°γ€ 0.957
Where r = raw cluster subject score (max 48) and t = KCSE aggregate (max 84).
Calibrated to match 2024 KUCCPS placement data.
# Clone the repo git clone https://github.com/gitau254-m/course-compass.git cd course-compass # Install dependencies npm install # Set up environment variables cp .env.example .env # Fill in your Supabase URL and anon key # Start dev server npm run dev
VITE_SUPABASE_URL=your_supabase_project_url VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_key
| Function | Purpose |
|---|---|
intasend-stk |
Initiates M-Pesa STK Push, creates payment record |
mpesa-callback |
Receives IntaSend webhook, verifies and confirms payment |
intasend-webhook |
Secondary webhook handler |
Wallace Gitau
- LinkedIn: linkedin.com/in/wallace-gitau-0054b737b
- GitHub: @gitau254-m
- WhatsApp Support: Chat with us
MIT License β feel free to fork and build on this.
Built with β€οΈ for Kenyan students navigating university admissions.