This is feasible, but I would not design it as just a chatbot with document upload. I would design it as a stateful tutoring workflow.
The main pieces I would use are:
- Document ingestion
Uploaded material needs to be parsed into structured learning content, not just dumped into a prompt. Plain text documents are easier. PDFs, scans, handwritten work, diagrams, maths worksheets, tables, charts, and screenshots need OCR and layout extraction. For that part, you probably want a multimodal model or a document processing pipeline that can preserve layout, images, equations, and source references.
- Retrieval
Use retrieval for the uploaded learning materials, but chunk by learning unit rather than arbitrary token size where possible. Store source spans so the assistant can say “this answer comes from page 4, section 2” instead of making unsupported claims.
- Tutor state
You need to track the learner’s current topic, skill level, mistakes, completed exercises, hints already given, and what concept they are struggling with. Without state, the assistant becomes a Q&A bot rather than a tutor.
- Worksheet state
Interactive worksheets should be represented as structured tasks. Each question should have the prompt, expected answer or rubric, current student answer, attempt history, hint history, feedback, and completion status. The model should not just improvise whether an answer is correct every time.
- Answer checking
For exact answers, use deterministic checks where possible. For open answers, use a rubric. For maths or code, use a solver, unit tests, or step validation where possible. The model can explain feedback, but it should not be the only judge if correctness can be checked another way.
- Model use
I would not send every request to the most expensive model. Use cheaper models for routing, simple Q&A, summarisation, and formatting. Use a stronger text model for difficult tutoring explanations. Use a multimodal model when the input includes images, diagrams, scans, handwritten work, worksheet screenshots, or visual layout.
- Hallucination control
The biggest reduction comes from not letting the model answer from memory when it should answer from course material. Ground answers in retrieved source text, show citations or page references, use rubrics for marking, and make the system say “I do not have enough information from the uploaded material” when retrieval is weak.
- Privacy
Treat uploaded learning material and student work as private data. Separate users and courses properly, avoid leaking documents between users, store only what is needed, and decide early whether uploaded content can be retained, deleted, exported, or used only for the session.
- Latency and cost
The expensive part will be document parsing, multimodal analysis, long context, and repeated feedback loops. Cache parsed documents, cache embeddings, store worksheet state, and avoid reprocessing the same upload every time the student asks a question.
So the short version is: yes, it is technically feasible, but the hard part is not calling the GPT API. The hard part is turning learning material into structured state, tracking the learner’s progress, checking answers reliably, and using the model only where reasoning or explanation is actually needed.
Building it on top of an existing platform like Discourse could help with accounts, posts, permissions, and community features. But the tutoring core would still need its own ingestion, retrieval, worksheet state, answer checking, and feedback workflow.