Skip to content

Judiciary+

An AI-assisted study platform for judiciary and law exam preparation.

Kind
Independent product
What it is
AI learning platform
My role
Independent product · design, engineering, AI
Period
Aug 2026 – present
JudiciaryPlus sign-in page: the Judiciary+ logo and the headline “Preparation that keeps its own record.” on a dark background, beside a sign-in form with username, password and a Create an account button.
JudiciaryPlus sign-in page on a phone, with the logo, the Sign in heading, username and password fields, and a Create an account button.
Live capture · 11 Oct 2026The public sign-in page. Everything else sits behind an account, so I haven't shown student screens.Phone · Live capture · 11 Oct 2026The same sign-in page at phone width.

The idea

JudiciaryPlus helps candidates prepare for judiciary and competitive law examinations. A student chooses their exam and syllabus, then plans, studies, practises and revises in one account, with an AI tutor that answers from legal sources rather than from memory.

Who it's for
Candidates preparing for judiciary and competitive law examinations, who need one place to plan, study, practise and revise.
The problem
Law-exam preparation is spread across PDFs, notes, question papers and generic chatbots that can state the law confidently and wrongly. Students need one place that keeps their own record, adapts practice to their weak areas and grounds AI answers in real statutes and judgments.

What I built

I designed and built JudiciaryPlus end to end: interface, API, database schema, AI integration, tests and release tooling. The source code is private, so there is no public repository link.

  • Designed and built the product end to end: React front end, serverless API, Postgres schema and AI integration.
  • Wrote an automated test suite of more than 1,600 tests covering scheduling, revision, AI routing, admin authorisation and data migrations.
  • Set up separate production and staging environments that never share a database, with scripted release checks.

What it does

Each feature is verified in the source code. The label says whether it is on the production branch or still in staging.

  • AI Tutor

    In production

    Streaming answers to legal questions, routed by question type and grounded in retrieved statutes and verified judgments.

  • Practice, quizzes and mock exams

    In production

    Adaptive daily quizzes weighted towards weak topics, model papers, timed mock examinations and post-exam analysis.

  • Syllabus management

    In production

    Students set their own exam and syllabus. Topics are structured per subject and drive planning and coverage.

  • Study planner

    In production

    Daily plans built within a fixed study-hour budget. AI interprets requests such as "only study X today", while the schedule itself is computed deterministically.

  • Adaptive revision

    In production

    A revision queue ranked by recent mistakes, accuracy, due dates and coverage gaps, with spaced intervals per topic.

  • Progress and reports

    In production

    Dashboard, daily/weekly/monthly reports, study calendar and a mistake book to track progress over time.

  • Admin console

    In production

    A separate console for staff with server-side role checks, student overviews, content management and an append-only audit trail.

  • Guardian reports

    In production

    A parent portal with scheduled progress reports that keep the student's username private.

  • Account-scoped study data

    In production

    Every student's syllabus, plans, attempts and notes are stored per account and isolated with row-level security.

  • Judgment intelligence

    In staging

    Legal news traced to the official judgment, then turned into a reviewed learning pack.

  • Official previous-year paper ingestion

    In staging

    Importing official past papers into the question bank for practice.

The engineering

How it is put together, and the problems that took the most care.

A single-page React app talks to a small set of serverless functions. Those functions own authentication, AI calls and privileged writes, while Postgres row-level security isolates each student's data.

  1. Client

    React + TypeScript SPA (Vite). Lazy-loaded routes, a Zustand store, IndexedDB for local persistence.

  2. Serverless API

    Vercel Functions for auth, tutor (streamed over SSE), planner, syllabus and admin. Admin operations share one function through an operation router with per-operation permissions.

  3. AI layer

    A provider adapter with an ordered fallback chain per feature, a total time budget across attempts, and health tracking that routes around degraded models.

  4. Data

    Supabase Postgres, Auth and Storage. Schema changes are versioned SQL migrations, checked against an in-memory Postgres before release.

Technology

Front end
  • React 18
  • TypeScript
  • Vite
  • Tailwind CSS
  • Zustand
  • React Router
  • Recharts
API
  • Vercel Functions (Node)
  • Server-sent events
  • Zod
Data
  • Supabase Postgres
  • Supabase Auth
  • Row-level security
  • IndexedDB
AI
  • Google Gemini
  • Ollama-compatible models
  • Provider fallback chains
Quality
  • Vitest
  • PGlite migration checks
  • Secret-scan release script

Hard problems, and how I solved them

  1. Keeping the AI tutor available when a provider fails

    Problem
    Single AI providers rate-limit, stall or return errors, and a student mid-question shouldn't see a dead end.
    Approach
    Each feature has an ordered chain that mixes two providers, so a failure on one falls through to the other. A cumulative deadline bounds the total wait, and a health tracker marks models as degraded after stalls so routing avoids them.
  2. Not letting the model decide what must be trustworthy

    Problem
    Revision priority, mastery and due dates drive what a student studies next. They need to be explainable and repeatable.
    Approach
    These are computed by deterministic, capped scoring rules from practice results and plans. The model never assigns them, and tutor conversations never count as evidence of mastery.
  3. Grounding legal answers in real sources

    Problem
    A tutor that paraphrases the law from memory can be confidently wrong, which is costly for exam candidates.
    Approach
    Sources are imported only from approved official hosts, de-duplicated by content hash and quality-checked. They become searchable evidence only after an explicit verification step.
  4. Authorisation that the browser can't bypass

    Problem
    The admin console exposes student data, so hiding buttons in the UI isn't access control.
    Approach
    Every admin operation is checked on the server against a permission matrix, using the role stored in the database rather than anything sent by the client. Non-staff callers get a 404, and admin actions are written to an insert-only audit log.

The evidence

What can be checked, and what the public version does not do.

Role
Independent product
Timeline
Aug 2026 – present
Automated tests
1,600+
Database migrations
36
Source
Private repository

Explore the product

judiciary-ai.vercel.appVisit Judiciary+ (opens in a new tab)

Building something where AI has to be trusted?

JudiciaryPlus answers from retrieved sources, keeps working when an AI provider fails, and leaves the decisions that matter to deterministic code. If your product needs AI that people can rely on, I can build it the same way.