-
-
-
Create, manage, and print paper assessments from one teacher workspace.
-
Build multiple-choice questions, short/long answers, with a fullly fledged visual test maker.
-
Automated scanning and marking for paper assessments. End-to-end automated test formatting, scanning, and processing.
-
Verify the assessment, freeze a safe print version, and continue editing later without changing papers already distributed.
-
Physical papers become structured assessment data, including completion status, missing pages, and score distributions.
-
Teachers mark anonymous handwritten work with built-in tools and optional AI assistance.
Inspiration
We are incoming university students and over the last 5 years, we have seen the immense stress our teachers have gone through to support our ever growing class sizes in Ontario, Canada. As budget cuts continue and teacher support diminishes, we found that the quality of teaching was being diminished by the task of marking and immense amount of tests. Hence, we found that teachers often avoided giving too many assessments to students and we believe that discourages students. Importantly, we still remember the lesson where our teacher was running purely on coffee, noting: "I stayed until 1 am marking your tests." To us, that wasn't acceptable.
Therefore, having spent our entire life in education, and having connected deeply with our teachers, we saw this hackathon as a great excuse to spend a week building a product we could be proud to present to our teachers, and test the new GPT 5.6 Sol, Terra, and Luna models. In short, we were impressed.
What it does
openMark helps a teacher make tests, print a different identified copy for each learner, read scanned answer pages, check AI-suggested marks, release results, and create feedback reports all under one platform. The teacher stays in control of every released mark. With this platform, teachers can focus significantly less on managing the logistics of a test, and spent their valuable time engaging with students.
When real AI is on, openMark sends the question, rubric, and pseudonymous answer text or crop to the OpenAI API. By design, our architecture includes multiple layer to omit student-name field, student email, or any individual identifying information to the API. A learner can still write a name inside an answer or crop; openMark flags detected names for teacher review but cannot promise perfect handwriting detection.
How we built it
Every great project begins with a highly comprehensive and coherent plan. Therefore, we literally started with a whiteboard: how do we automate assessment test logistics for teachers. The first thing that came to mind was implementing vision assisted software, as we both had experience working with OpenCV. But in order to use OpenCV as deterministically as possible, we needed a way for teachers to easily make tests designed for the system. That’s where we decided to build and end to end test creation and marking platform.
We started with defining our tech stack with the help of GPT 5.6 Sol along with the Context7 MCP where we decided to build the web app using Next.js, and store all the data using Supabase with PostgreSQL, focusing on building the project with established and highly deployable technologies. Since we had experience working with Python computer vision pipelines and automation, we picked OpenCV and other associated libraries for our automatic test scanning pipeline. With this, we decided to make it so that everything was easily deployable with a simple Docker container. Overall, after picking these technologies, we scaffolded the implementation of our app into 7 main stages: M1-M7, a system we and our Codex agents could easily understand.
Teacher and student experiences are built with Next.js 16, React 19, TypeScript, and Tailwind CSS. We used the next.js App Router and server Components to keep sensitive data access on the server while providing interactive tools such as the live test editor, automated test scanning components, the question-by-question marking system, analytics dashboard, and secure student portal.
Supabase serves as the application’s main data and security layer where PostgreSQL stores assessments, test print packs, responses, marks, audit history, and background jobs. Supabase Auth handles sessions for staff while private Storage holds papers, scans, answer isolation from our vision pipeline, and final reports while Row-Level Security isolates each school’s data ensuring a system that is both secure and scalable. This is all while Realtime updates allow the UI to show generation, ingestion, and marking progress all without exposing the workers directly.
We then built a separate Python worker for document-heavy parts of our system where it generates deterministic, uniquely identifiable tests using a combination ArUco tags and data matrices so that when our vision pipeline scans the test, it automatically extracts each student’s response using the exact layout manifest created during printing. This is what allows us to provide a highly automated marking experience for teachers.
Challenges we ran into
As part of the Codex hackathon, we found that for a project of this scale, we required a large amount of usage. Thankfully, since it is build week, we found that the generous amounts of usage resets, the student voucher, and the hackathon credit was just enough to finish this project and polish it from start to finish. Though, we had to become highly conscious of our usage, opting for models such as GPT 5.6 Luna and Terra to conserve our usage. After some exploration throughout the week, we were genuinely impressed by these low-mid tier models and their capabilities.
Accomplishments that we're proud of
Overall, the thing we are most proud of is that we were able to build a piece an end to end software suite in under 5 days with Codex from zero. This is something that we would've thought was unimaginable even 1 year ago. We have been to hackathons where we built products that behaved like prototypes, but this time, we ended up building an app that behaved like an app that would be seen in production deployments. Through the various technologies that we used, we were able to make the backend capable of scaling and being redundant so that even the most important data remains secure.
Codex along with Context7 was able to provide real time, accurate documentation for proper methodology in deploying Docker containers, running secure OCR pipelines, and much more in terms of using proper methodology. With Codex's great MCP integration, we were able to highly optimize how compute resources were used in actions such as saving an incomplete test document and manage memory efficiently so that under large scans it would distribute tasks amongst the multiple CPU threads. Importantly, if it weren't for GPT 5.6 Sol which did the bulk of the orchestration of our subagents, we do not think we would've been able to keep things on task and efficiently meet the framework we initially. In short, these new models are excellent at completing agentic tasks cleanly and efficiently which is something we haven't always seen in past models. We're not only proud of ourselves for being able to deliver a project of this scale in such a short period, but also to the Codex team which did a fantastic job in this new version.
What we learned
We initially started by implementing features using the new GPT 5.6 Ultra out of excitement: To say the least, our usage limits were quickly exceeded. Looking back, we completely underestimated the overall intelligence and competence of GPT-5.6 series in implementing code. After a very helpful tweet by Tibo informing everyone that ultra/max were overkill for most tasks, we quickly started experimenting with Sol Medium and even Terra and Luna. These models proved to be plentiful and fast for the tasks we were trying to complete, and overall, we were able to be 4x more productive with the same usage credits. This quickly proved that GPT Plus provided an outstanding value even for heavy Codex users such as ourselves. Overall, the Codex team's assistance and insight was invaluable.
What's next for openMark
We believe this product is a tool that will truly help teachers work for efficiently and deliver higher quality education to students. Though, this is not our end product. We will be continuously improving this product by introducing features such as academic integrity verification, a more seamless student dashboard so that students can securely access their teacher's feedback on each test, a more discrete specialized scanning paper set (version 2) and an even faster OCR/Vision/Automatic processing pipeline so that teachers can spend even less time marking tests by using GPU acceleration.
Built With
- aruco
- codex
- context7
- docker
- fastapi
- latex
- next.js
- omr
- openapi-api
- opencv
- playwright
- postgresql
- segno
- supabase
Log in or sign up for Devpost to join the conversation.