Verifying instructor session...

{{ pageTitle }}

{{ pageSub }}

{{ c.label }} {{ c.value }}{{ c.sub }}

Get your course ready

Three uploads and your students can start practicing.

{{ i.icon }}
{{ i.title }}{{ i.sub }}

Instructor Profile

Full Name: {{ instructorName }}
Email Address: {{ instructorEmail }}
Faculty: {{ instructorFaculty }}
Department: {{ instructorDepartment }}
Role: {{ instructorRole }}
Last Login: {{ instructorLastLogin }}
OpenAI API Key: {{ instructorHasOpenaiApiKey ? 'Saved (••••••••)' : 'Not Set ⚠️' }}
🔍
Status:
Faculty:
Semester:
Course code / Title ↕ Department / Faculty ↕ Semester / Session Level ↕ Date Created ↕ Status Actions
{{ c.courseCode }} {{ c.courseTitle }} {{ c.department }} {{ c.faculty }} {{ c.semester }} Semester {{ c.academicSession }} {{ c.level }}L {{ c.createdAtStr }} Active Archived
No courses found. Click "+ Create Course" to add one!
Page {{ currentPage }} of {{ totalPages }}

Manage Chapters: {{ selectedCourse.courseCode }} - {{ selectedCourse.courseTitle }}

Question Bank: {{ selectedChapter.chapterTitle }}

📁 Select or drop a chapter file here PDF, DOCX, or TXT up to 50 MB
# Chapter Title File Name / Type Size Status / Uploaded Actions
{{ ch.index }} {{ ch.chapterTitle }} {{ ch.fileName }} {{ ch.fileType }} {{ ch.fileSizeFormatted }}
Extracting ({{ ch.progress }}%)
Completed Failed ⚠️ Uploaded {{ ch.uploadedAtStr }}
📥
No chapters uploaded yet. Click "+ Upload Chapter" to start!

Generating Question Bank

{{ generationProgressLabel }}

Running Scoped Bulk Question Regeneration

{{ bulkRegenStatus }}

# Question / Topic Type / Bloom Difficulty / Marks Source Chunk Status Actions
{{ q.index }} v{{ q.version }} ⎋ {{ q.question }} Topic: {{ q.topic }} {{ q.questionType }} Bloom: {{ q.bloomLevel }} {{ q.difficulty }} {{ q.marks }} Marks Chunk {{ q.sourceChunkNumber }} Pending Approved Rejected Published
Regenerating...
No questions generated for this chapter yet. Click "⚡ Generate Questions" to start!
Questions are being generated and will appear here in real time...
i

Your textbook has 20 chapters, but this course only uses Chapters 10–15. Upload just those six — either as separate PDFs or one file with a page range per chapter. Each synced chapter feeds the AI tutor for its problems.

Course chapters · {{ syncedLabel }}

CH{{ c.num }}
{{ c.title }} {{ c.meta }}
Uploaded
Extracting ({{ c.progress }}%)
Failed ⚠️ Synced
i

Upload your problems one chapter at a time — a separate file per chapter (Ch 10–15). We parse each into questions and detect the numbers the AI can re-randomize for extra practice.

Questions by chapter · {{ qbLabel }}

CH{{ c.num }}
{{ c.title }} {{ c.meta }}
{{ c.countLabel }}

Sample parsed question

Highlighted chips = numbers the AI can re-randomize
{{ sampleQuestion.id }}
{{ sampleQuestion.tag }}

{{ sampleQuestion.stem }}

{{ v }}
i

Upload the worked solutions one chapter at a time (Ch 10–15). We match every answer to its question by ID and detect each step — a chapter can’t be graded until its answers are matched.

Answers by chapter · {{ ansLabel }}

CH{{ c.num }}
{{ c.title }} {{ c.meta }}
{{ c.matchLabel }}

Sample matched answer

Q-101Ch 10 · σ known
{{ a.label }}{{ a.value }}
Books & Chapters
{{ analyticsBooks }} Books
{{ analyticsChapters }} Chapters
Questions Status
{{ analyticsQuestionsApproved }} Approved
{{ analyticsQuestionsPending }} Pending
{{ analyticsQuestionsPublished }} Published
{{ analyticsQuestionsRejected }} Rejected
Avg. Difficulty
{{ avgDifficulty }} Across active questions
AI Cost & Tokens
${{ estimatedCost }} {{ totalTokens.toLocaleString() }} tokens

Bloom Taxonomy Distribution

Question Types Distribution

Recent Activity Log

{{ act.icon }}
{{ act.title }} {{ act.description }} {{ act.timeStr }}

No activity recorded yet.

Active Text Extraction Jobs

{{ job.title }} {{ job.progress }}%
💤 No active processing jobs. All uploaded textbook files are synced.
{{ uploadStatus }}