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
- cosine-similarity
- next.js
- postgresql
- react
- row-level-security
- supabase
- tailwindcss
- tf-idf
- typescript
- vercel