Inspiration

Most learning platforms are built for one institution. Smaller colleges can't afford a separate install, and personalization usually means paying per call to an external AI API. Exam proctoring is a separate product on top of that. I wanted one system that solves all three together.

What it does

  • Multi-tenant: one app serves many institutions. Each institution's data is isolated by Postgres row-level security.
  • Adaptive learning: every answer updates a per-topic cognitive profile (accuracy, response time, trust score), and the next question's difficulty adapts to it.
  • Automated proctoring: the browser watches for tab-switching, focus loss [and face/gaze deviation]. It raises confidence-scored flags for an instructor to review. It never auto-fails anyone.
  • Role-based dashboards: super-admin, tenant-admin, instructor and student.

How I built it

Next.js + Tailwind on the frontend, Supabase (PostgreSQL, Auth, RLS) on the backend, deployed on Vercel. No paid AI API is used. The profiling is self-built:

$$\text{tfidf}(t,d) = tf(t,d)\cdot \log\frac{N}{df(t)} \qquad \cos(\theta)=\frac{A\cdot B}{|A|\,|B|}$$

TF-IDF tags content by topic, cosine similarity matches a learner's weak topics to practice questions, and a PageRank-style trust score tracks mastery per topic. Every query is scoped by tenant_id, and RLS policies enforce this in the database itself.

Challenges I ran into

  • Getting RLS policies right without blocking legitimate queries
  • Tuning the trust score so difficulty doesn't swing after one wrong answer
  • Inconsistent browser support for camera and focus events

Accomplishments that I'm proud of

A working end-to-end multi-tenant system where isolation is enforced at the database level, with explainable personalization instead of a black box.

What I learned

Takeaways: multi-tenancy patterns, RLS, designing proctoring with a human in the loop.

What's next for Adaptive Tenant LMS

Auto-calibrated question difficulty, a "why this question?" explanation panel, per-tenant branding, and an optional agent that builds revision plans.

Built With

Share this project:

Updates