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
- · 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