Inspiration
I taught for over a decade in international schools - RMIT, Scotch AGS, ISB, HCMC University of Science. The grading pile was killing my weekends. I tried the existing AI grading tools and ran into the same wall every time: they were either chatbots pretending to grade, or enterprise platforms with a six-month district sales cycle. Nothing for the working teacher with 100 papers on a Sunday night.
The wedge insight: teachers do not want a chatbot. They want their own rubric applied consistently to the whole stack. So I built that.
What it does
Grade Coach is an AI grading tool for K-12 teachers:
- Snap photos of student work (or upload scans, PDFs, files from a phone).
- The AI reads the first paper and proposes a rubric. The teacher reviews + locks it.
- With the rubric locked, the AI grades the rest of the stack the same way.
- The teacher reviews every score, edits anything, exports to CSV / Google Sheets / PDF.
Seven tools share a per-student concept-mastery substrate that compounds over time:
- Grade Papers - the core grading flow
- Worksheet Studio - printable A4 worksheets from any reference
- Parent Reports - per-student personalized parent comms
- Student Views - read-only feedback pages per student
- Practice Generator - per-student practice worksheets from substrate-detected weak concepts
- Personalized Grading - any number of papers, each graded against its own answer key
- Class Deep-Dive - class narrative + concept heatmap + mastery timeline
The substrate is the moat. Grade Coach is not just faster, it remembers.
How I built it
The product is AI-native end to end:
- Grading runs on Gemini 3.1 Flash-Lite for speed (Netlify functions cap at 26 seconds, so Pro was too slow). Each paper is one Gemini call; rubric-lock is a separate call against the first paper.
- Worksheet design, parent reports, student views, and class deep-dive narratives run on Gemini 3.1 Pro - the longer-form reasoning calls where quality matters more than wall-clock.
- Worksheet rendering is a two-step pipeline: Gemini Pro for the editable design brief, then gpt-image-2 for the printable A4 image (a background Netlify function so it can exceed 26 s).
- Per-student substrate writeback fires on every grade pass: the analyze call emits Bloom-level, CEFR, and language-load tags per question, persisted to Postgres so future tools can read mastery over time.
- 20 Gemini API keys rotate to parallelize grading without hitting rate limits - fan-out gives roughly 6x wall-clock improvement on a full stack.
Stack: React 18 + TypeScript + Vite + Tailwind v4 + Zustand + React Router v7 on the front end; Netlify Functions + Supabase Postgres on the back end; Stripe for payments; PostHog for analytics; full i18n in English / Spanish / Vietnamese. Continuous deploy from main on every push.
Challenges I ran into
- Netlify's 26-second function timeout. Forced Flash-Lite for grading. Parallelized via Gemini key rotation to claw back the wall-clock.
- Substrate normalization. Different teachers tag the same concept differently. Pgvector + embeddings + LLM canonicalization is wired up but kept dormant until the concept count per teacher hits the threshold where it actually matters.
- Stripe webhook race condition. Two simultaneous deliveries of a top-up purchase could zero out one. Fixed with an atomic SECURITY DEFINER RPC and a
stripe_eventsclaim-then-handle pattern. - HMAC grade-receipts. Built so anonymous users (no account) can grade from the free tier without exposing the AI endpoints to scraping. Receipt is signed server-side, roughly 10-minute TTL, consumed once.
What I learned
- Sequence the moat. Grading was the wedge. The per-student concept substrate is the moat. Every Phase 3 tool is a surface onto the substrate, not a standalone feature. That sequencing decision was hard but right.
- Build for the wedge persona. International-school ESL teachers are who I know. Designing for them - rubric-first, photo-first, classroom-language-tolerant - beats trying to please everyone.
- AI is the operator, not a feature. The hardest engineering was not "calling an AI." It was making the AI the production system: grading on every paper, parent reports written by AI, deep-dive narratives written by AI, worksheets composed by AI. Humans are the final check, not the producer.
What is next
- Referral credits (designed; +25 free credits per qualified referral).
- Substrate normalization activation (pgvector wired, dormant; flips on at scale).
- Pipeline grading: start grading on the first paper drop, do not wait for the full stack.
Built With
- gemini-3.1-flash-lite
- gemini-3.1-pro
- gemini-api
- gpt-image-2
- netlify
- netlify-functions
- postgresql
- posthog
- react
- react-i18next
- react-router
- stripe
- supabase
- tailwindcss
- typescript
- vite
- zustand
Log in or sign up for Devpost to join the conversation.