MRU Platform (AI-first rebuild)
In production · 5-month solo build · ~42k lines, 274 commitsDirector of Product, Tech & Design — sole builder
A ground-up, AI-first rebuild of MRU's whole learning experience (2.5 million learners a year). MRU was on Drupal 7, and the migration I was leading onto WordPress was slow going toward a stack that still wouldn't be flexible or AI-ready. So I quietly spent a month building the architecture, guardrails, and a working prototype with Codex — and in March 2026 brought the team the prototype and a roadmap. With approval, I finished the full rebuild and migration four months later, solo, with Claude Code and Codex.
How I built it
Foundation
- Set up the architecture, scaffolding, and repo guardrails — Next.js + React + TypeScript in a monorepo that gives AI full read/write context of the entire stack, and folds five sites into three apps: learn, teach, and marketing.
- Designed a modular content schema for learning objects — lessons, quizzes, interactives — reusable across courses, with improved learning metadata modeled on schema.org's LearningResource.
- Built the data layer on Supabase — passwordless OTP auth, Postgres, row-level security, event tracking — with Sanity as a semantic, exit-proofed CMS.
- Stood up a design system so the three apps stay visually and structurally consistent.
The AI operating system
- The repo is built to be developed by agents. AGENTS.md carries the never-miss invariants — secrets via env only, RLS deny-by-default, immutable content IDs, additive migrations — and 11 scoped rule files load by topic: Sanity schema, Supabase security, API contracts, design system, QA.
- 13 canonical docs outrank AI intuition by explicit rule, plus a datestamped project memory so every session starts with current context. When a model "knows better," the doc wins — or the doc gets fixed in the same commit.
- Verification is the default gate: a thin CI suite before anything ships, and every non-trivial change must answer whether it created a new seam worth a test.
The learner experience
- Rebuilt the core learner flow — the in-course experience — to cut cognitive load, with sharper “next up” logic so the single next step is always obvious.
- Rebuilt the dashboard as the way in: where you left off, what's ready to review, and what to start next.
- Added spaced review cards, real feedback on quiz answers, and motivation loops (streaks, cheers).
- Replaced legacy site search with Algolia — type-aware ranking, searchable glossary entries, and synonyms.
- Emitted that schema as JSON-LD so AI answer engines (AIO / GEO) — and other AI clients — can read courses and lessons directly.
Migration & production readiness
- Engineered an idempotent Drupal → Sanity migration pipeline with deterministic IDs, versioned internal contracts, and coordinated redirect maps to protect SEO.
- Hardened for launch: performance and load testing (Playwright + k6), DevOps automation and CI gates, security review, prompt-injection guards, RLS policies, and documented backup / recovery runbooks.
- Monitor site health and product behavior — uptime checks, Web Vitals, exception tracking, and PostHog funnels, retention, and PII-masked session replay, with every event dual-written to a Supabase audit trail. A scheduled Codex automation reviews the reports and flags anomalies.
- The marketing app strangler-proxies legacy Drupal: rebuilt pages serve from Next.js while everything else passes through, so the org site migrates page-by-page with instant rollback.
- Initiated and led the re-host of MRU's most-used product — interactive economics tools used by 600,000+ learners a year — from Heroku to AWS App Runner, fixing the school-network blocking that had left them unreachable in classrooms.
What's next
- Teach app: rebuilding teacher verification with AI-assisted search and probabilistic pre-approval, migrating accounts and content, and giving the resource library a schema that shares learning objects with the learner app — plus Algolia search and saved/favorited resources.
- Learn app: an AI tutor, Claude and OpenAI connectors, native interactives to replace today's embeds, and a mobile app.