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:

  1. Snap photos of student work (or upload scans, PDFs, files from a phone).
  2. The AI reads the first paper and proposes a rubric. The teacher reviews + locks it.
  3. With the rubric locked, the AI grades the rest of the stack the same way.
  4. 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_events claim-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
Share this project:

Updates