Skip to content

How Clearance Desk works

The model finds and explains. Deterministic code judges. Every rule is structured data with a source, so the agent can check your exact results instead of guessing from a web page.

Architecture

Browser

Your details

UTME subjects and score, O'level sittings, and the course to check.

Next.js route

Agent loop: Claude via the Vercel AI SDK

Your results stay on the server. The model never retypes them.

Sanity Context MCP

clearance-rules

GROQ over the dataset: requirements, programmes, subjects, sources.

Local code, no AI

evaluate_eligibility

Loads the requirements and checks subjects, score, credits and sittings.

Sanity Context MCP

clearance-policy

Knowledge Base of JAMB and university documents.

Response

Verdict, explanation, policy notes, sources, trace

The verdict always comes from the code. Claude writes the explanation around it.
One agent, two Sanity Context endpoints, one deterministic evaluator.

Why two Context endpoints

A Sanity Context endpoint serves one kind of source. If a dataset and a Knowledge Base share an endpoint, the dataset wins and the Knowledge Base is silently ignored. So there are two:

  • clearance-rules serves the structured dataset. These are the exact rules, like “one sitting only” or “pick 1 of Chemistry or Biology”. GROQ finds them.
  • clearance-policy serves a Knowledge Base built from JAMB and university documents. It explains why a rule matters: cut-off marks, Post-UTME screening, awaiting-result rules.

Their tools are prefixed rules_ and policy_, because both endpoints have tools with the same names.

Why not keyword search? A search can find a page that says “five credits at one sitting”. It can't tell you that your Physics credit from a second sitting doesn't count for UNILAG Medicine. That takes the rule as data and code that combines your sittings.

Data coverage

Live from the dataset, refreshed every minute.

Universities
5
Programmes
34
Requirements
34
Sessions
2026/2027
Requirements per university by verification status
UniversityCoursesVerifiedConflicting
LASU523
OAU615
UI734
UNILAG844
UNN835
All341321

Verified means every field was checked against its cited sources. Conflicting means official sources disagree. The stricter rule is stored, and the result says what differs. No requirement is unverified. The data rests on 51 official sources and 6 secondary ones (news sites and blogs, used only for context). It was last checked on 2026-10-03.

Limitations

  • Covers 5 universities and 34 programmes for the 2026/2027 session only. A course that isn't in the data gets a plain “no data” answer, never a guess.
  • UTME entry only. Direct Entry, Post-UTME scores, aggregate scores and catchment quotas are not calculated. Meeting the minimum does not guarantee admission.
  • When official sources disagree, the stricter rule is used, so the result is “At risk” even if your results fit. UI publishes no UTME minimum, so a UI course can never come out plain “Eligible”.
  • Some conditions can't be checked from your results, like age, first choice and upload deadlines. These are listed under “Also check these yourself”. Cambridge O'Level and other exams are not modelled.
  • The verdict comes from code, but the explanation is written by an AI model and can occasionally add advice that no source states. Trust the checks and the linked sources over the wording.
  • Rate limits apply: about 10 checks per connection every 10 minutes.