Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 87 additions & 1 deletion _docs/developer/google_summer_of_code/2026_Garvit_Khandelwal.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,90 @@ title: Garvit Khandelwal
category: Developer > Google Summer of Code 2026
---

coming soon
# [AI/ML to Enhance and Streamline Manual/TA Grading](https://summerofcode.withgoogle.com/programs/2026/projects/e3YU9deG)

## Overview

The primary objective of my GSoC 2026 project was to enhance the manual TA grading experience by integrating AI/ML clustering algorithms. By intelligently clustering students with similar submissions together, TAs can now evaluate entire groups simultaneously, drastically reducing the time spent on manual grading.

While this might initially sound like a purely AI/ML-focused project, the reality was much broader. Because this was a completely novel feature for Submitty, the majority of my time was spent designing and implementing the full-stack architecture from the ground up.

Throughout the project, several significant architectural and design hurdles had to be overcome:
- **Fairness and Transparency:** We had to strike a delicate balance between providing the efficiency of AI clustering while guaranteeing that TAs retain complete, final control over the grading process.
- **Global vs. Per-TA Clustering:** We had to decide whether clustering should be global (one method per gradeable) or per-TA (each TA creates their own clusters). Per-TA clustering introduced severe implementation challenges, so we strategically opted for a global clustering approach.
- **Submission Version Conflicts:** We had to account for edge cases where a student changes their active submission version after a cluster has already been created. This voids the basis on which the student was originally clustered and presented a highly specific edge case new to Submitty.

## About Me
Hello! I am a computer science undergraduate student at the Indian Institute of Technology, Mandi. Before GSoC, I honestly did not have any prior open-source contributions, so this program was my true starting point. The main reason I chose to work with Submitty was because I really liked the project, and the community was highly active and rewarding.

## Primary Contributions & Features

- **[Backend for submission clustering](https://github.com/Submitty/Submitty/pull/12886)**
- **Description:** The foundation of the project involved setting up the essential database architecture. This PR establishes a normalized database schema and introduces the necessary backend API endpoints to support clustering.
- **Technical Highlights:** PHP, Doctrine ORM, PostgreSQL

- **[Add submission clustering daemon](https://github.com/Submitty/Submitty/pull/13004)**
- **Description:** Running complex Python machine learning algorithms synchronously would block the UI and severely degrade the user experience. To solve this, this PR sets up a background daemon infrastructure.
- **Technical Highlights:** Python, Daemon Infrastructure

- **[UI for clustering & table grouping](https://github.com/Submitty/Submitty/pull/12966)**
- **Description:** With the backend infrastructure in place, the next step was visualizing the clustered students. This PR introduces a "Create Cluster" modal where users can select their desired clustering algorithm. It also implements a "Group by Clusters" filter, displaying students in a tabular format native to Submitty's design. Notably, as Submitty is migrating to Vue.js, this was the very first feature built entirely using Vue.
- **Technical Highlights:** Vue.js, PHP, Twig, Cypress

- **[Single Cluster](https://github.com/Submitty/Submitty/pull/13161)**
- **Description:** This PR introduces a new algorithm which returns only a single cluster containing all valid submitters. This was built for cases like to assign bonus marks to all the active submitters.
- **Technical Highlights:** Python

- **[Cluster Grading](https://github.com/Submitty/Submitty/pull/13103)**
- **Description:** This PR bridges the gap between clustering students and actually helping TAs grade faster. It integrates the core functionality into the TA Grading (Rubric) page. I added intuitive UI toggle icons allowing TAs to seamlessly switch in and out of "Clustering Mode". When active, grading one student automatically applies that grade to the entire cluster. A major UI/UX challenge here was designing clear visual cues so TAs remain fully aware of the sweeping impact of their actions.
- **Technical Highlights:** Vue.js, PHP, Twig, Cypress

- **[Adding container for running custom algorithm](https://github.com/Submitty/DockerImages/pull/76)**
- **Description:** To support advanced customization, this PR introduces a dedicated Docker container pre-installed with popular machine learning libraries.
- **Technical Highlights:** Docker

- **[Custom Algorithm](https://github.com/Submitty/Submitty/pull/13176)**
- **Description:** While predefined clustering algorithms are useful, every gradeable is unique, making it impossible to predict every grading scenario. This feature empowers instructors/TAs to upload custom Python scripts to define their own clustering logic.
- **Technical Highlights:** Vue.js, PHP, Docker

## Other PRs

Throughout the summer, I contributed to various other areas of the codebase, handling critical infrastructure issues, bug fixes, and performance optimizations. While a few major ones are highlighted below, a [complete list of my Pull Requests can be found here](https://github.com/Submitty/Submitty/pulls?q=is%3Apr+author%3AGarvitKhandelwal31+is%3Aclosed).

- [[Refactor:Autograding] Optimize PDF Redaction](https://github.com/Submitty/Submitty/pull/12471): Refactored the time required for PDF redactions by up to 2x.
- [[Bugfix:TAGrading] Fix PDF Header Overlap](https://github.com/Submitty/Submitty/pull/12793): Fixed a UI issue where the grading page header obscured the title of student-uploaded PDF files, significantly improving TA visibility and usability during grading.
- [[Bugfix:TAGrading] Fix Grade Override Logic](https://github.com/Submitty/Submitty/pull/12651): Resolved underlying logic bugs within the manual grade override system.
- [[Feature:RainbowGrades] Manual Upload Warning Banner](https://github.com/Submitty/Submitty/pull/12645): Added a warning banner that displays when users manually upload rainbow grades to prevent accidental data overrides.
- [[UI/UX:Forum] Forum UI Enhancements](https://github.com/Submitty/Submitty/pull/12622): Implemented several major UI improvements to enhance the user experience on the Submitty discussion forums page.

## Code Reviews & Community Impact

Beyond authoring code, I actively dedicated a significant portion of my time to reviewing Pull Requests from across the entire codebase. Reviewing others' code was an invaluable experience; it rapidly accelerated my understanding of Submitty's massive architecture and allowed me to help shape the quality of the project.

Thanks to Submitty's highly collaborative culture, I successfully reviewed a total of **[54 Pull Requests](https://github.com/Submitty/Submitty/pulls?q=is%3Apr+commenter%3AGarvitKhandelwal31+-author%3AGarvitKhandelwal31+is%3Aclosed)** throughout my GSoC journey, actively participating in architectural discussions and ensuring high coding standards.

## Work In Progress / Future Scope

There are still exciting enhancements left to build on top of this foundation. I have listed several tracking issues for the remaining features:

- [Delete Clusters](https://github.com/Submitty/Submitty/issues/13148)
- [Rename Clusters](https://github.com/Submitty/Submitty/issues/13147)
- [Visualize Clustering Data](https://github.com/Submitty/Submitty/issues/13116)
- [UI error/message for cluster-grading conflicts](https://github.com/Submitty/Submitty/issues/13184)
- [Add "Prev/Next Cluster" option to TA Grading navigation settings](https://github.com/Submitty/Submitty/issues/13185)

## Reflection

Working on such a massive codebase and implementing a feature of this scale from scratch was an extraordinary experience. Throughout this journey, I upskilled significantly, mastering new technologies and learning how to architect complex, full-stack systems. As I mark the end of my GSoC project, I would like to express my deepest gratitude to my mentors:

- **[William J Allen](https://github.com/williamjallen):** Beyond all the technical help, I am incredibly grateful for the deep architectural insights and software engineering best practices I learned from him along the way. His brilliant code reviews, extraordinary ideas, and structural guidance on how to build a feature of this scale were truly invaluable.
- **[Professor Barbara Cutler](https://github.com/bmcutler):** Barb held daily meetings, which made iterating on ideas incredibly fast. Her suggestions and perspectives fundamentally improved this feature. The most essential lesson I learned from her was how to truly think from the perspective of the end user.

I would also like to thank the fellow GSoC & RPI contributors. It was a great experience collaborating with you all!
Finally, I am deeply grateful for this incredible opportunity. Thank you!

## Contact Me

If you have any questions or want to discuss this project further, feel free to reach out to me!
- **Email:** [garvitkk2006@gmail.com](mailto:garvitkk2006@gmail.com)
- **LinkedIn:** [Garvit Khandelwal](https://www.linkedin.com/in/garvit-khandelwal-894a81350/)
Loading