As an Economics student, I'd built a personal habit out of necessity: turning dense lecture notes into color-coded, exam-ready study material with mnemonics and predicted questions before every test. It worked, but it was slow and entirely manual — hours spent reformatting what I'd already learned instead of actually studying it. When OpenAI Build Week came around, I wanted to build something I'd genuinely use, not a demo idea invented for the occasion. PrepMind (MindPrepStudy) is that tool: it takes the exact workflow I already did by hand and lets GPT-5.6 do the heavy lifting — turning raw notes into a structured revision pack, predicted exam questions, and a self-scoring quiz that tracks which topics I'm actually weak on. What it does

Create a course and upload your lecture notes — pasted text or a PDF. Generate a revision pack: key concepts explained from first principles, memory hooks, and predicted exam questions with model answers. Take an auto-generated quiz built from the same material. See exactly which topics you got wrong, and regenerate a focused mini revision pack targeting just those weak spots.

How we built it

Frontend: React + Vite, deployed as a static site on Render. Backend: Node/Express, deployed separately on Render — owns the OpenAI API key, all GPT-5.6 calls, and PDF text extraction. Database/Auth: Supabase (Postgres + Auth), with Row Level Security policies and a service-role-gated ownership check on every course-scoped route. AI: GPT-5.6 (gpt-5.6-terra), called directly via the OpenAI API for revision pack generation, quiz generation, and weak-topic-focused regeneration.

What key product/design decisions were mine:

The separate frontend/backend architecture. I deliberately chose a Node/Express backend paired with a React/Vite frontend — not because it was the simplest option (a lighter serverless-functions approach would have meant fewer moving parts), but because it matched the pattern I'd already used across my other projects, which lowered my risk under a tight deadline. Codex executed within that architecture; the choice of architecture itself was mine going in.

Scoping uploads down to PDF-only. The original plan supported PDF, DOCX, and PPTX. Partway through, I made the call to cut DOCX/PPTX support entirely and focus only on PDF — a deliberate trade of breadth for reliability, so the core flow would actually work end-to-end rather than have three half-tested upload paths going into the deadline.

The visual identity. The light-brown, cream/white, and red color system wasn't a default Codex reached for — I specified that exact palette directly, along with the requirement that it look like "a standard web app" with a real login page and dashboard, not a generic scaffold. I also asked for a specific redesign pass once the first version felt too plain, pushing for spacing, typography, and color hierarchy that felt like a real product.

The weak-topic-focused quiz regeneration feature. This was specified in my PRD before I ever asked Codex to build it — the idea that a student's quiz results should feed back into a new, narrower revision pack targeting only what they got wrong (rather than just showing a score) was a product decision I made up front, not something Codex suggested. Codex's job was wiring the existing backend endpoint into the quiz results screen.

Debugging and infrastructure decisions were mine to drive. When things broke — a Render deployment misconfigured because the monorepo's root directory wasn't set, Supabase's email confirmation rate limit blocking signups, a backend temperature parameter GPT-5.6-terra silently rejected, an invalid API key — I read the actual error output, decided what needed fixing, and directed the fix (either through Codex or through iterating directly). Codex was very effective at implementing fixes once the actual problem was diagnosed, but diagnosing what was actually broken from raw error logs was consistently on me.

Challenges we ran into A model parameter mismatch: gpt-5.6-terra only accepts its default temperature value — passing a custom value threw a silent-looking 400 error that made every "Generate revision pack" click fail with no clear cause until we traced it through the backend logs. A PDF parsing library incompatibility: our first PDF text-extraction library choked on validly-formatted PDFs due to an outdated bundled parser; swapping to pdfjs-dist directly fixed it.

Free-tier usage limits mid-build: hit Codex/GPT-5.6 usage caps partway through the hackathon week, which meant being deliberate about which parts of the build actually needed Codex versus what could be iterated on another way.

Deployment debugging on Render: working through static-site routing (client-side routes 404ing on refresh, fixed via Render's dashboard rewrite rules rather than a _redirects file), and a couple of rounds tracking down an invalid API key error down to a copy-paste issue.

Scoping discipline: originally planned PDF, DOCX, and PPTX upload support, but cut it down to PDF-only to keep the build reliable and finishable within the time available — a deliberate trade of breadth for something that actually works end-to-end.

Accomplishments I am proud of A fully working, end-to-end flow — upload a PDF, generate a revision pack, take a quiz, see weak topics, regenerate a focused pack — built and deployed within a compressed hackathon timeline, with real debugging (not just scaffolding) along the way.

What I learned what surprised you about working with Codex vs. doing it solo, or what you'd do differently on the AI-assisted build process next time.

What's next for PrepMind Re-introducing DOCX/PPTX support now that the core flow is proven, and exploring spaced-repetition scheduling for the flashcard-style review beyond a single quiz pass.

Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for MindPrepStudy

Built With

Share this project:

Updates