Inspiration

I started from a simple observation where a parents want to help with homework, but often can't. Not because they don't care but because they can't tell why their kid got something wrong. Careless slip? Real conceptual gap? Something half-remembered from their own school days? Every existing "AI tutor" (Khanmigo, Photomath, and most hackathon tutor-bots) solves the kid's problem by asking a question, getting an explanation, maybe get the answer. That's saturated territory, and it also quietly cuts the parent out of the loop. I wanted to build the opposite where something that makes the parent the one explaining, by giving them the one thing they're missing i.e. a clear read on why the mistake happened.

What it does

Here a parent photographs their child's actual completed worksheet with real handwriting, real mistakes, not a fresh problem. GPT-5.6 transcribes the work, and the parent confirms the transcription is accurate before anything else happens. From there, GPT-5.6 diagnoses the specific misconception behind the errors and not just "wrong answer," but the actual reasoning gap (e.g. subtracting mixed numbers without regrouping). Then an adaptive coaching conversation gives the parent exact, ordered questions to ask their kid, so the kid self-corrects and the parent does the explaining with no answers handed over. Over time it tracks recurring misconceptions across worksheets, so a parent can see patterns they'd otherwise never notice.

How I built it

Here Next.js is the frontend, Supabase for auth, Postgres data, and private worksheet storage, and GPT-5.6 for transcription, diagnosis, and coaching. I built with the OpenAI Codex CLI as a coding partner throughout. Codex scaffolded the repetitive, well-understood layers (auth wiring, database schema, CRUD routes, test skeletons) and helped debug issues across the upload lifecycle and rate limiting. Product and architecture decisions stayed with me where I would give the confirmation gate before committing to a diagnosis, the coaching UX, the misconception taxonomy, a two-phase signed-URL upload flow, and Postgres-RPC-based atomic rate limiting instead of an external vendor. Codex executed the shape once I would decide it.

Challenges I ran into

Getting the diagnosis to be cautious rather than confidently wrong was the core challenge as here a misdiagnosis is worse than no diagnosis, since it sends the parent down the wrong coaching path. That's why I added the transcription confirmation gate up front, so a bad OCR read can't cascade into a bad diagnosis. I also had to design upload handling carefully while using a two-phase signed-URL flow with server-side metadata verification and cleanup so partial or failed uploads never leave orphaned state. And building rate limiting without an external vendor meant getting atomic increments right at the database level (a Postgres function) rather than trusting application-level checks that race under concurrent requests.

Accomplishments that I am proud of

The confirmation-gate diagnosis flow is a small UX decision that meaningfully reduces the risk of the app confidently telling a parent the wrong thing. I am also proud of the coaching conversation itself as it doesn't explain the concept to the parent or the kid, it hands the parent the exact Socratic questions to ask, which is the whole differentiation of the product. And I shipped a real end-to-end loop which is to upload, transcribe, confirm, diagnose, coach, track recurrence, in the hackathon window, not just a demo screen.

What I learned

That handwriting recognition on real, messy kid handwriting is a genuinely hard and interesting problem, and worth spiking early rather than assuming it'll just work. That guardrails (confirmation gates, cautious diagnosis language) matter as much as the AI capability itself when the output shapes how a parent talks to their kid. And that having Codex handle scaffolding and debugging freed up real time to spend on the parts that actually differentiate the product, rather than on plumbing.

What's next for Homework X-Ray

Maybe a broader subject and grade-level coverage beyond the initial misconception taxonomy, multi-child household support with per-child recurrence tracking over a full school term, and a lightweight teacher-facing view so recurring misconceptions surfaced at home could eventually connect back to what's happening in the classroom.

Built With

Share this project:

Updates