-
-
Verdict shows and explains the topical learning ontology inline during chat.
-
Chambers - the main Verdict dashboard.
-
The magnum opus - ALEKs-inspired learning ontology/knowledge prerequisite graph. Example: H2 economics.
-
Verdict chat - response citation visibility so that students can actually audit and verify syllabus+content accuracy in Verdict's responses.
-
Guided curriculums.
Inspiration
I was ex-RJC, now a private A-Level candidate in Singapore. I put no academic effort during my schooling years because I allocated time fully to entrepreneurship, resulting in a terrible academic foundation. When I did find a desire for university studies, I had no foundation, no school, no teachers, no study groups. When I started preparing for my November exams, the first thing I did was try every AI tutoring tool I could find. Tutorly. Astra. Penseum. They all worked the same way: I typed a question, they gave me a fluent, confident answer. Wrong rubric. Hallucinated syllabus points. Answers that sounded authoritative without the underlying structure.
The thing that kept bothering me wasn't that the answers were sometimes wrong. It was that I couldn't tell when they were wrong - and neither could the tool. It had no mechanism for knowing. It was generating confident text in the direction of my question, and the confidence was indistinguishable from correctness.
A student who's already lost has no way to audit an answer they can't already evaluate. The student who most needs the AI to be reliable is least equipped to catch it when it isn't.
I thought about what distinguishes a genuinely good human tutor. It isn't the quality of their explanations. It's what they do when you're wrong. A mediocre tutor re-explains the thing you got wrong, more slowly. A good one notices that the real gap is three concepts upstream - in something you didn't quite understand six months ago - and the surface error is just where it showed up today. That's diagnostic, not explanatory. And it requires a map of how the subject's concepts actually relate to each other.
I built that map. Then I built Verdict around it.
What it does
Verdict is an AI tutor for Singapore A-Level students that grounds every answer to specific SEAB curriculum learning objectives - showing its cited RAG chunks + ALEKs-inspired knowledge prerequisite graph, not just its answer.
The H2 syllabus has hundreds to thousands distinct learning objectives. I mapped all of them as a graph: prerequisite relationships, shared misconception roots, where structural dependencies run between concepts the syllabus document treats as separate. Currently scoped to mathematics, economics, literature and GP.
When a student submits a question, two things happen:
1. Real-time curriculum classification. A secondary model (Gemini Flash-Lite) identifies the exact SEAB learning objective the question belongs to - not "this is about economics," but the specific node in the curriculum graph. That node's verbatim learning objective becomes the grounding brief for the tutoring response.
2. Citation-grounded response. Claude answers from the syllabus, not from general knowledge, and the student sees which learning objective the answer traces back to: (metadata-tagged RAG - syllabus, content, rubric)
e.g. Grounded in: 2.1.2, Price Elasticity of Demand (SEAB 9570)
A citation changes what the student can do. They can follow the thread. Look it up. Interrogate it. They stop being passive recipients of a confident output and become operators of their own learning.
When a student gets something wrong, Verdict walks the curriculum graph backward to the actual upstream gap - rather than re-explaining the surface question. The student sees not just what they got wrong, but where the gap lives in the structure of the subject, and what they'd need to understand to close it.
How we built it
Architecture overview:
Student input
↓
Gemini Flash-Lite classifier → identifies SEAB syllabus node (49-node graph)
↓
Claude (grounded to LO verbatim) → citation-transparent response
↓
Supabase → logs interaction, updates student position on graph
↓
UI → renders citation, graph position, diagnostic walkback if wrong
Stack:
- Next.js — frontend
- Vercel — deployment
- Supabase + pgvector — database, auth, vector storage
- Anthropic Claude — core tutoring model
- Gemini Flash-Lite — real-time syllabus path classifier
- OpenAI embeddings — semantic retrieval
This sprint specifically: I already had the basic LLM + RAG working as a personal tool. This week's work was creating the massive learning ontology graph for all subjects (now the cornerstone of Verdict), complete UI/UX and features changes, and making the architecture legible to the student - the onboarding diagnostic (placing a new student on the graph via a short set of probing questions) and the UI layer that renders the curriculum graph as something navigable, with the student's current position and known gaps marked.
Challenges we ran into
Getting the classifier fast enough. The syllabus classification needs to run on the same turn as the tutoring response, not as a visible pre-step. Gemini Flash-Lite on the same call achieves this without perceptible latency - but calibrating the classifier to distinguish between adjacent nodes (e.g., price elasticity of demand vs. income elasticity of demand) required iterating the prompt structure considerably.
Making the graph legible without making it overwhelming. A 100+ node graph shown all at once is noise. The challenge was showing the student their slice of it - the relevant subgraph for the concept they're working on, with the path to the gap highlighted - without requiring them to understand the whole ontology first.
Scoping what "diagnostic" means in practice. Walking backward on a graph sounds clean in theory. In practice, a wrong answer can be wrong for multiple reasons, and not all of them trace to a single upstream node. Designing the fallback logic - when to surface one root cause vs. surface ambiguity vs. just explain - took more iteration than expected.
Accomplishments that we're proud of
The Pallo comparison is the one I keep coming back to. I spent real time with their platform - both to study and to understand what it actually is under the interface. Their top global user for the month sits at around 1,225 XP - roughly ten to twelve completed lessons in thirty days. I ranked 88th globally having barely used the platform, most of my score from a one-time sign-up bonus. The distribution is almost flat.
That's structural, not accidental. Pallo is built around the student asking questions and the AI answering. What you get depends on what you put in. If you already know how to ask a precise question about the specific concept you're confused about, it works fine. If you don't - if you're genuinely lost - the tool can't find it for you. The finding is on you, and their framing reflects that - they cater towards already elite students.
Verdict doesn't require the student to already know what to ask. That's the accomplishment I care about most: building a tool that's genuinely useful to the student who's lost, not just the one who's already close to understanding. All incumbents right now cater to the student who has a foundation, or knows the direction, then builds on their revision. Verdict is able to build up understanding from 0, recognize precisely where the student needs to lock in on understanding, and also break down specifically why they get certain questions wrong in the student's own mental model, not just in prose.
What we learned
The biggest learning was about where the real difficulty in AI tutoring sits. It's not generation quality - Claude's explanations are good. The hard part is grounding: giving the model a reason not to confabulate, and giving the student a way to verify that it hasn't.
The citation system turned out to do more than build trust. It changed how students interact with responses - they actually read the syllabus objective the answer traces back to, rather than just accepting the answer at face value. The citation made the student an active participant in evaluating the output, which is closer to what learning actually requires.
I also learned that "showing its working" is harder to design than it sounds. Every intermediate step you expose creates a new surface for confusion. The discipline was deciding what to show and what to leave in the backend - enough transparency to be genuinely useful, not so much that the mechanism gets in the way of the learning.
What's next for Verdict
The immediate next step is a white-label deployment for a Singapore tuition agency - the same architecture, rebranded, with their student data isolated in a separate Supabase section and their own API keys. The goal is to get real classroom usage data, not just individual student interactions, so the graph sharpens on what groups of students consistently misunderstand rather than just where one student got stuck.
Longer term, the curriculum graph is designed to extend beyond GCE A levels - to any subject with a documentable prerequisite structure. The same architecture that grounds a response to a SEAB learning objective can ground one to any structured curriculum. The open question is whether the ontology-building process (which is currently hand-curated by me) can be made faster as the platform extends to new subjects.
The infrastructure layer underneath Verdict - portable student identity, the learning-data API - is the longer-term build. Every deployment that runs on the API feeds the same compounding graph. The moat isn't the content. It's the accumulated, structured record of where students actually get stuck, democratized and accessible outside of incumbent data silos. Soon, any educational institution will be able to white label their own pedagogically-true edtech tutor with our API and feed a data intelligence flywheel that benefits all users.
Public progress post link: https://www.linkedin.com/posts/luctheone_just-finished-the-hackathon-build-for-the-share-7475755176348282880-NjzE/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAFAWX7MB5QxX1oPnYvz7K4JasYi1BXA6fVE
To trial the project with a seeded demo account, use [email protected] for the sign-in.
Built With
- gemini-flash-lite-(real-time-syllabus-path-classifier)
- next.js-(frontend)
- openai-embeddings-(semantic-retrieval)
- pgvector
- supabase-(database-and-auth)
- vercel-(deployment)
Log in or sign up for Devpost to join the conversation.