Inspiration

Earlier this year, a Brown University economics professor gave a take-home midterm. The class average was 96%, with 40 students scoring a perfect 100. Suspicious, he switched the final exam to in-person. Same students. The average fell to 48.6%.

That's not a fluke — it's what happens when AI does your thinking for you instead of with you. Students are going to keep using AI; that's not changing. The real question is whether it teaches them, or just hands them the answer.

I built OfficeHour to be the second kind. It's grounded in the courses I'm actually taking at NYU right now — Basic Algorithms and Elementary French 2 — using my own real lecture notes and homework.

What it does

OfficeHour turns a student's actual course materials — textbooks, lecture slides, class notes, homework — into a personalized study workspace:

  • Ingests real course PDFs through vision-based extraction (not brittle text-layer parsing), preserving math notation, figures, and page-accurate structure.
  • Builds a topic map from what the student actually uploaded, then generates a short diagnostic.
  • Generates tailored notes that expand weak topics with worked examples and misconception guidance, and collapse strong topics into short refreshers — every claim backed by a validated, clickable citation to the original page.
  • Adapts live: miss a practice question, and the relevant section rewrites itself with a new explanation angle and a new worked example, grounded only in the course material.
  • Calibrates to the student: explanation depth and diagnostic difficulty shift based on year, major, and prior coursework — and rise further with demonstrated mastery.
  • Includes a Socratic homework tutor that reads a homework screenshot or PDF, separates it into individual questions, and works through them one at a time — asking probing questions and giving hints, never the final answer.

How I built it

The majority of core functionality was built in a single preserved Codex session, started from a written ingestion specification rather than an open-ended prompt.

Vision extraction was chosen from evidence, not assumption. I had Codex build a head-to-head comparison of pdfplumber text extraction versus GPT-5.6 vision transcription on a dense page of Jeff Erickson's Algorithms — full of pseudocode, subscripts, and inline math. The text-layer extraction emitted internal font codes, collapsed spacing, lost an edge arrow, and broke formula reading order. The vision run preserved all of it, including handwritten-style corrections. That result is recorded in the repo and became the canonical ingestion path for the whole project.

Citations are validated, not just prompted. The model can only cite retrieved chunk IDs; the backend checks every cited ID against the actual retrieval set and strips anything invented before it reaches the UI.

Adaptive rewrites are guarded against laziness. After a missed question, Codex implemented a check that rejects a "regeneration" that's unchanged or ungrounded, and retries once with the## 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 Officehour

Built With

Share this project:

Updates