Project Info
This project did not submit a demo video on Devpost.
Inspiration
We realized that grading papers is time-consuming and repetitive, often lacking meaningful feedback for students. This inspired us to create a solution that automates grading and enhances student feedback.
What it does
Graider grades essays, assignments, and exams based on a provided rubric or one generated from the exam sheet. It also includes a feedback section for both students and graders, making the process more efficient and insightful.
How we built it
We built the platform entirely using Python, leveraging Reflex to develop both the frontend and backend seamlessly. We also utilized the Groq LLM library to handle the complexities of grading papers accurately and efficiently
Challenges we ran into
Working with Reflex, a new technology, was challenging. As we adapted to it, we faced a steep learning curve in scaling our project quickly using only our knowledge of Python.
Accomplishments we're proud of
We’re proud of building an entire system using Python (thanks to Reflex). Additionally, we explored new tools provided by our sponsors—VAPI, Groq, and Fetch AI—which helped us enhance the project by integrating advanced AI capabilities.
What we learned
We gained a deep understanding of Reflex and how to build frontend applications entirely in Python. We also explored different LLM models, refining our approach to achieve optimal latency rates suitable for the project’s needs.
What's next
We plan to add a chatbot feature that allows graders to adjust student grades via voice commands. Additionally, we aim to incorporate image scanning to grade handwritten papers automatically. Our goal is to scale Graider to educational institutions across the country.
Graider MVP
Graider is a local-first MVP for AI-assisted grading. It lets a teacher:
- register and sign in
- create an assignment from pasted text,
.txt, or.pdf - generate questions, reference answers, and rubric criteria with an OpenAI LLM
- add student submissions manually or by CSV
- run an AI grading pass
- review and edit scores and feedback
- finalize results and export a CSV
Stack
backend/: Django + Django REST Framework + SQLitefrontend/: React + Vite + Tailwind- OpenAI models:
gpt-5.4-minifor all current AI tasks
Local setup
- Copy
.env.exampleto.env. - Set
OPENAI_API_KEYin.env. - Create and activate a virtualenv, then install backend dependencies:
python -m venv .venv
source .venv/bin/activate
pip install -r backend/requirements.txt
- Install frontend dependencies:
cd frontend
npm install
cd ..
- Apply migrations:
.venv/bin/python backend/manage.py migrate
Run locally
Start the backend:
.venv/bin/python backend/manage.py runserver 127.0.0.1:8000
Start the frontend:
cd frontend
npm run dev
Open http://localhost:5173.
CSV format
Graider accepts CSV imports with:
- required:
student_name - required:
response_textorraw_response_text - optional:
student_identifierorstudent_id
Notes
- This is an MVP, not a production grading platform.
- AI features fail loudly if the OpenAI key is missing, but manual editing still works.
- The export endpoint is
GET /api/assignments/:id/export.csv.
Analysis
View
Metric
No commits on this project resolved to a GitHub account.
Technology
- CSSIn code
- DjangoIn code
- HTMLIn code
- JavaScriptIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Google GeminiClaimed
9 of 10 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
313 KB
Source files
76
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
saumyajain1/graider
86 files · 451 KB · @ bed4bb7
Structure
Interface
15 files · 17%Screens, components and styles rendered to the user.
API & routing
5 files · 6%Request entry points: routes, handlers and controllers.
Application logic
40 files · 47%Domain rules, services and shared utilities.
Data & schema
6 files · 7%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python52%
- TypeScript43%
- Markdown5%
- CSS0%
- JavaScript0%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 20- @tanstack/react-query
- clsx
- react
- react-dom
- react-router-dom
- +15 more
backend/requirements.txt
pypi · 8- Django
- django-cors-headers
- djangorestframework
- openai
- pydantic
- pypdf
- python-dotenv
- reportlab
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
Add student submissions manually or by CSVVerified
Add student submissions manually or by CSV
Claimed on readmehigh confidencebackend/apps/grading/views.py:309— SubmissionListCreateView handles manual/file submission creationbackend/apps/grading/services/submission_io.py:15— import_submissions_from_csv parses CSV rows into StudentSubmission objects, matching the documented CSV format
AI grading pass on submissionsVerified
Run an AI grading pass
Claimed on readmehigh confidencebackend/apps/grading/views.py:378— SubmissionGradeView and AssignmentGradeAllView call run_grading_pipelinebackend/apps/grading/services/grading_pipeline.py:10— Grading pipeline uses OpenAI models (gpt-5.4-mini) to map answers and produce scores/feedback
AI-generated questions, reference answers, and rubric from an LLMVerified
Generate questions, reference answers, and rubric criteria with an OpenAI LLM (or Groq per Devpost)
Claimed on readmehigh confidencebackend/apps/assignments/views.py:107— QuestionGenerateView calls generate_question_parts and persists QuestionPart rowsbackend/apps/grading/views.py:163— ReferenceAnswerGenerateView and RubricGenerateView call generate_reference_answer/generate_rubric_criteriabackend/apps/grading/services/openai_client.py:29— OpenAIChatService wraps openai.OpenAI client.chat.completions.parse for structured generation
Create assignment from pasted text, .txt, or .pdfVerified
Create an assignment from pasted text, .txt, or .pdf
Claimed on readmehigh confidencebackend/apps/assignments/services.py:75— extract_text_from_uploaded_file handles .txt and .pdf extraction (via pypdf) with normalizationbackend/apps/assignments/models.py:32— Assignment model stores raw_assignment_text and source_file
Finalize results and export CSVVerified
Finalize results and export a CSV
Claimed on readmehigh confidencebackend/apps/grading/views.py:441— SubmissionFinalizeView and AssignmentExportCsvView implement finalize and export endpointsbackend/apps/grading/services/submission_io.py:65— build_assignment_results_csv_response writes a CSV with per-question scores/feedback, matching the documented export endpoint GET /api/assignments/:id/export.csv
Review and edit scores and feedback (personalized feedback for students and graders)Verified
Review and edit scores and feedback; includes a feedback section for both students and graders
Claimed on readmehigh confidencebackend/apps/grading/views.py:428— GradingResultDetailView.patch lets a teacher override ai_score/ai_feedback via save_grading_reviewbackend/apps/grading/models.py:150— GradingResult stores separate ai_feedback and final_feedback fields, and needs_review flagfrontend/src/pages/SubmissionReviewPage.tsx— Dedicated review page exists for editing grading results
Rubric-based or auto-generated-from-exam-sheet gradingVerified
Grades essays, assignments, and exams based on a provided rubric or one generated from the exam sheet
Claimed on Devposthigh confidencebackend/apps/grading/views.py:214— RubricListCreateView allows manual rubric criteria; RubricGenerateView auto-generates rubric criteria from the reference answer/question
Teacher registration and loginVerified
Register and sign in as a teacher
Claimed on readmehigh confidencebackend/apps/accounts/views.py:11— RegisterView and LoginView implement session-based registration and login, wired to serializersfrontend/src/pages/LoginPage.tsx— Frontend login page exists and calls the auth API
Built with Groq LLM libraryClaimed only
Utilized the Groq LLM library to handle grading
Claimed on Devposthigh confidenceBuilt with Reflex frameworkClaimed only
Built the platform entirely using Python, leveraging Reflex for frontend and backend
Claimed on Devposthigh confidenceFetch AI integrationClaimed only
Explored Fetch AI to enhance the project with advanced AI capabilities
Claimed on Devposthigh confidenceHandwritten paper image scanningClaimed only
Aim to incorporate image scanning to grade handwritten papers automatically
Claimed on Devposthigh confidenceVAPI voice integrationClaimed only
Explored VAPI to enhance the project with advanced AI capabilities
Claimed on Devposthigh confidenceVoice-command chatbot for adjusting gradesClaimed only
Plan to add a chatbot feature that allows graders to adjust student grades via voice commands
Claimed on Devposthigh confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.