Product Architecture

How ChemEng Student works

A modern learning platform that combines a curriculum-aware AI tutor, structured practice, and a skills-driven progression engine.

System Overview

Client
Student App
Dashboard, Lessons, Practice
Instructor Studio
Course Builder & Reviews
Admin Console
Users, Plans, Content
Application Layer
AI Tutor Service
Curriculum-aware LLM
Rules Engine
Progression & Access Control
Analytics Engine
Weak-topic detection
Data & Infra
PostgreSQL
Content, progress, users
Billing
Subscriptions & seats
Simulation Runtime
Interactive labs

Core Learning Flow

Every lesson follows a structured, adaptive loop.

1. Lesson Delivery
Video · Objectives · Equations · Common mistakes
Checkpoint
2. Practice Questions
Hints → attempt → worked solution
Rubric scoring
3. AI Tutor Support
Explain · Solve · Review · Test me
Mastery signal
4. Skill Update
Level ↑ · weak-topic flagging · path recommendation

Rules Engine

Deterministic policies that gate content, unlock certifications, and personalise recommendations.

RULE · access

Plan-based content unlock

IF user.plan == "free"
  AND lesson.tier > "preview"
THEN require_upgrade(plan="plus")
RULE · progression

Lesson completion criteria

IF video.watched >= 0.85
  AND checkpoint.score >= 0.7
THEN mark_complete(lesson)
  AND emit(skill_xp: +12)
RULE · weak topic

Adaptive recommendation

FOR skill IN user.skills
  IF mastery(skill) < 0.5
    AND attempts(skill) > 3
  THEN queue_practice(skill, count=5)
RULE · certification

Skill certification

IF skill.mastery >= 0.85
  AND assessment.passed == true
  AND lessons_covered >= module.required
THEN issue_certificate(skill)

AI Tutor Pipeline

Every AI response is grounded in curriculum-approved content.

STAGE 1
User Query
Lesson context, mode & message
STAGE 2
Retrieval
Fetch approved lesson notes, examples, rubrics
STAGE 3
Rerank
Score chunks against curriculum weights
STAGE 4
LLM Generation
Contextual response with citations
STAGE 5
Guardrails
Safety, rubric alignment, source check

Data Model (Excerpt)

Row-level security on every user-scoped table. Admin roles stored in a separate table.

profiles
  • · id
  • · email
  • · display_name
  • · plan_id
  • · created_at
subjects
  • · id
  • · name
  • · slug
  • · sort_order
lessons
  • · id
  • · module_id
  • · title
  • · video_url
  • · objectives[]
  • · equations[]
questions
  • · id
  • · lesson_id
  • · prompt
  • · difficulty
  • · skill_id
lesson_progress
  • · user_id
  • · lesson_id
  • · progress
  • · completed_at
question_attempts
  • · user_id
  • · question_id
  • · answer
  • · score
  • · attempted_at
user_skill_progress
  • · user_id
  • · skill_id
  • · level
  • · mastery
ai_conversations
  • · id
  • · user_id
  • · mode
  • · lesson_id
  • · created_at