Inspiration
While we sat and stared at our freshly graded CS exam on Gradescope, the exhausting task of submitting regrade requests was looming above us. With a packed schedule and time running out on the regrade window, there was no option but to power through it, albeit rather begrudgingly. We looked back at all the times we could've gotten back even a few marks, if only it was easier to frame a regrade request, or better yet, have a tool to find them for us! Creating Grade Saver was the only option! After all, giving up isn't an option while trying to save our grades.
What it does
Grade Saver is a Google Chrome extension, specifically for Gradescope, which goes through your answer and the rubric, to look for places to earn back some points on. To make it even simpler, the extension gives you a compiled list of AI generated regrade requests. Simply click on the question numbers the AI model suggests a regrade for and a click of a button will copy the request into the text box, ready for you to submit!
How we built it
- Web Scraping: We utilized playwright and beautiful soup to parse through the gradescope DOM to find relevant informatio such as rubrics. The rubrics were only extracted for incorrect questions. Then we proceeded to export the output to a JSON file with the points and rubric comment which was then used for prompting.
- Image Processing: Used OpenCV for basic image pre-processing (took in documents as images) involving denoising the image and enhancing contrast for better text interpretation.
- Text Extraction: Fed, cleaned and contrasted image output to open source VLM models to extract text and relevant annotations
- AI Prompting Script: Used Purdue's GenAI studio "llama3.1:70b-instruct-q4_K_M" to prompt for a regrade request by passing in relevant rubrics and student's submission (text) to catch possible errors on the part of the grader.
- Google Chrome Extension: We used Manifest V3 to streamline regrade requests on Gradescope. It injects content.js into Gradescope pages, where it detects regrade buttons and auto-fills the regrade request field using the AI generated regrade request prompts. The extension uses popup.html as a control panel and leverages Chrome APIs for scripting, storage, and active tab access. Permissions and host access are restricted to gradescope.com.
- Flask Server: Web scraping, text extraction, and AI prompting is hosted on the server which interacts with the extension to populate the regrade requests panel.
Challenges we ran into
Our major challenges included learning and debugging as we went, since a lot of the functionality we included was very new to us. Another big challenge was privacy concerns since we were using exam submissions, so we decided to remove student information and host it locally. Integrating the LM API with the Python code to generate smart prompts ate up a big chunk of our time. Initially, we also wanted to run our VL models on the RCAC cluster as it required a lot of RAM. However, it was taking a long time to configure the terminal to install the models. Given our time constraints, we decided to host it locally using X model.
Accomplishments that we're proud of
We are proud of cleaning and de-noising images using OpenCV and increasing contrast for better text extraction capabilities. This allowed us to get clearer and darker handwriting, which made conversion to text much easier. Moreover, we were able to extract the rubric of even the expired annotations (once a regrade is resolved, to keep track), through web scraping. Last but not least, we were able to put our regrade request directly into the Gradescope text window through a three-step process, and were able to accomplish all the functionalities we set out to achieve. We couldn't have done this without the help of the organizers!
What we learned
We learned how to work across different stacks and technologies, from browser extension development to image processing, web scraping, and prompt engineering. We also gained a deeper appreciation for building user-first tools that preserve privacy while still delivering meaningful utility. Working under time constraints taught us to prioritize and adapt quickly when Plan A didn’t work out. Lastly, collaborating in a high-pressure hackathon environment helped us become better at debugging and communicating effectively under pressure.
What's next for Grade Saver
Our future plans include:
- Integration with answers to more complex questions (such as diagrams and graphs).
- Detailed explanations on possible reasons for losing rubric points where applicable.
- Integrated cloud functionality for context-enhanced regrades.
- Chatbot feature to facilitate better understanding - reasoning with the chatbot to explore potential regrading avenues.
Video Demo on GitHub
Built With
- beautiful-soup
- flask
- github
- huggingface
- javascript
- json
- llama
- open-source
- opencv
- playwright
- python
- vlms
Log in or sign up for Devpost to join the conversation.