EdTech Assessment Platform

Web + mobile + AI-graded assessments for K-12 schools

RoleLead Engineer
TypeEdTech Platform
StackReact / React Native / Supabase / FastAPI
StatusProprietary · Client Project

This is a client project. The write-up is intentionally generalized: no client, product, or school names, no data, and no source code are shown. What follows is my own account of the problem, the architecture, and the decisions I led across the three applications.

EDTECH PLATFORM AI EVALUATE SCAN → OCR → AI SCORE → REVIEW
01Overview

This is an EdTech platform for K-12 schools that digitises a physical classroom learning programme and layers AI-graded assessments on top of it. Teachers and supervisors move from paper registers and hand-marking to a single system that tracks classroom progress, distributes structured discussion content, and evaluates handwritten student answer sheets automatically.

It is built as three coordinated applications sharing one backend: a web app for administrators and supervisors, a mobile app that supervisors carry into classrooms, and a separate AI evaluation service that scores scanned answer sheets. All three talk to the same managed Postgres backend, with access enforced by row-level security so each school only ever sees its own data.

I led the engineering across all three applications as lead engineer: the web platform, the mobile app, and the AI evaluation service, along with the integration that stitches them together. That meant owning the architecture and the hard cross-cutting decisions, from how offline-ish classroom scanning should behave to how an async AI grading service reports its results back safely.

02Key Features
Structured Content Hierarchy
Books break down into chapters, sheets, and questions, assigned to schools and sections, with per-supervisor completion tracking across the academic year.
Schools & Roles
School, section, and user management with academic-year allocations and role-based access, from platform admins down to individual supervisors.
Assessment Authoring
Build assessments as papers with sections, questions, and sub-questions, then link them to the schools that will run them.
In-Classroom Scanning
The mobile app uses the device camera with on-device document detection and cropping to capture clean answer-sheet images, ready to upload.
AI Evaluation
A dedicated service reads handwritten answers from the scans and scores each question with vision AI, returning results asynchronously.
Supervisor Review & Reports
Supervisors review AI scores, override where needed, and generate reports, keeping a human in the loop on every graded assessment.
03Technical Architecture

The web and mobile apps share a single managed Postgres backend that provides the database, authentication, and serverless edge functions in one place. Choosing a shared backend meant the mobile app could reuse the exact same schema, auth, and row-level-security policies as the web app rather than reimplementing them, which kept the two clients consistent as features moved between them.

The web app is a React and Vite single-page app for administrators and supervisors. The mobile app is built with Expo and React Native so a single TypeScript codebase ships to both Android and iOS through cloud builds and the app stores. Answer-sheet capture runs on-device: the camera feed is passed through document detection and perspective-correction so the uploaded image is a clean, cropped page rather than a photo of a desk.

AI grading lives in its own FastAPI microservice, deliberately kept separate from the product backend. When a scan is uploaded, the backend calls the service with the images and question list; the service returns immediately, grades in the background using a vision model, and pushes results to a callback URL when done. Making the flow callback-based rather than polling meant the mobile and web clients never sit blocked waiting on a slow, variable AI step, and the grading service can scale independently of the rest of the platform.

Edge functions on the backend act as the trusted boundary between the apps and the AI service: they handle upload, trigger evaluation, and receive the callback that writes scores back for supervisor review. That kept the AI service's credentials and contract in one controlled place instead of spread across two client apps.

04Tech Stack
React 19 + ViteWeb app
TypeScriptWeb & mobile
Expo + React NativeMobile app
SupabasePostgres, Auth, RLS, Edge Functions
OpenCVOn-device document scanning
Python + FastAPIAI evaluation service
Claude visionOCR & answer scoring
EAS BuildApp Store & Play Store delivery