Exam Content Prediction Engine
Linear Issue: SSC-14
Priority: High
Feature Type: Premium Feature (STUDENT_PLUS/UNIVERSITY subscription only)
Overview
Build an intelligent exam prediction system that analyzes lecture content, concept importance, professor emphasis patterns, and historical study data to predict likely exam content and generate focused study recommendations.
This is a KEY DIFFERENTIATOR feature for StudySync.
Current State
- Knowledge Graph: Concept extraction with importance scores exists
- Embeddings: Semantic search and similarity working
- Study Tracking: QuizAttempt, StudySession, Flashcard models exist
- Feature Gating: `examPrediction` is gated to STUDENT_PLUS+ in pricing config
Implementation Plan
📄 Full implementation plan: docs/SSC-14-IMPLEMENTATION-PLAN.md
Phase 1: Database Schema (Commits 1-3)
Commit 1: Create ExamPrediction model
```prisma
model ExamPrediction {
id String @id @default(cuid())
userId String
title String // "Midterm 1", "Final Exam"
examDate DateTime?
courseContext String?
status PredictionStatus @default(ACTIVE)
overallReadiness Float @default(0) // 0-100 readiness score
generatedAt DateTime @default(now())
updatedAt DateTime @updatedat
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
topicPredictions TopicPrediction[]
studyPlan StudyPlan?
actualExam ActualExamResult?
@@index([userId])
}
enum PredictionStatus {
ACTIVE
COMPLETED
ARCHIVED
}
```
Commit 2: Create TopicPrediction model
```prisma
model TopicPrediction {
id String @id @default(cuid())
examPredictionId String
conceptId String?
topicName String
probability Float // 0-100 likelihood
confidence Float @default(0.7)
difficulty String @default("medium")
importanceScore Float @default(0.5)
emphasisScore Float @default(0.5)
studyStatus StudyStatus @default(NOT_STARTED)
currentMastery Float @default(0)
recommendedTime Int @default(60) // minutes
reasoning String?
examPrediction ExamPrediction @relation(...)
concept Concept? @relation(...)
@@index([examPredictionId])
}
enum StudyStatus {
NOT_STARTED
IN_PROGRESS
NEEDS_REVIEW
MASTERED
}
```
API Endpoints
| Method |
Endpoint |
Description |
| POST |
`/api/predictions` |
Create new prediction |
| GET |
`/api/predictions` |
List user's predictions |
| GET |
`/api/predictions/:id` |
Get prediction details |
| PUT |
`/api/predictions/:id` |
Update prediction |
| DELETE |
`/api/predictions/:id` |
Delete prediction |
| GET |
`/api/predictions/:id/study-plan` |
Get study plan |
| PUT |
`/api/predictions/:id/study-plan` |
Update study progress |
| GET |
`/api/predictions/:id/readiness` |
Get readiness assessment |
| POST |
`/api/predictions/:id/feedback` |
Submit exam feedback |
| GET |
`/api/predictions/accuracy` |
Historical accuracy stats |
All endpoints require STUDENT_PLUS+ subscription.
Checklist
Database
Backend - Prediction Service
Backend - AI Analysis
Backend - API
Frontend
Success Criteria
Dependencies
This feature depends on:
- Knowledge Graph (SSC-11) ✅ Complete
- Analytics Dashboard (SSC-17) - For mastery data integration
Exam Content Prediction Engine
Linear Issue: SSC-14
Priority: High
Feature Type: Premium Feature (STUDENT_PLUS/UNIVERSITY subscription only)
Overview
Build an intelligent exam prediction system that analyzes lecture content, concept importance, professor emphasis patterns, and historical study data to predict likely exam content and generate focused study recommendations.
This is a KEY DIFFERENTIATOR feature for StudySync.
Current State
Implementation Plan
📄 Full implementation plan: docs/SSC-14-IMPLEMENTATION-PLAN.md
Phase 1: Database Schema (Commits 1-3)
Commit 1: Create ExamPrediction model
```prisma
model ExamPrediction {
id String @id @default(cuid())
userId String
title String // "Midterm 1", "Final Exam"
examDate DateTime?
courseContext String?
status PredictionStatus @default(ACTIVE)
overallReadiness Float @default(0) // 0-100 readiness score
generatedAt DateTime @default(now())
updatedAt DateTime @updatedat
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
topicPredictions TopicPrediction[]
studyPlan StudyPlan?
actualExam ActualExamResult?
@@index([userId])
}
enum PredictionStatus {
ACTIVE
COMPLETED
ARCHIVED
}
```
Commit 2: Create TopicPrediction model
```prisma
model TopicPrediction {
id String @id @default(cuid())
examPredictionId String
conceptId String?
topicName String
probability Float // 0-100 likelihood
confidence Float @default(0.7)
difficulty String @default("medium")
importanceScore Float @default(0.5)
emphasisScore Float @default(0.5)
studyStatus StudyStatus @default(NOT_STARTED)
currentMastery Float @default(0)
recommendedTime Int @default(60) // minutes
reasoning String?
examPrediction ExamPrediction @relation(...)
concept Concept? @relation(...)
@@index([examPredictionId])
}
enum StudyStatus {
NOT_STARTED
IN_PROGRESS
NEEDS_REVIEW
MASTERED
}
```
API Endpoints
All endpoints require STUDENT_PLUS+ subscription.
Checklist
Database
Backend - Prediction Service
Backend - AI Analysis
Backend - API
Frontend
Success Criteria
Dependencies
This feature depends on: