OASIS University intelligence engine
A pipeline that turns inconsistent official university course pages into structured, validated records, plus an explainable recommendation engine on top. Deterministic parsers do the work; a local LLM may only fill fields they left empty.
Source code is private. Architecture and evidence are shown; no company-internal information is.
- 858offline regression tests across 46 files, run in CICodebase
- 5isolated layers, with isolation enforced by static import testsCodebase
- 4 / 50universities live; none of the 46 candidates has passed the promotion gate yetObserved in use
Registryconfig per uni
Stored data Per-university settings live in configuration, not code. A university's status (candidate or active) is a field here.
Onboarding runsample pipeline pass
Deterministic step A new candidate gets a sample run through the real pipeline before anything is trusted.
Gap reportP0–P3 issues
Deterministic step Missing or suspect fields are classified by severity, so effort goes to what blocks correctness first.
Config suggestionhuman approves diff
Human decision The system drafts configuration changes. A person approves them; nothing is applied automatically.
Regression gatepromote/hold/reject
Deterministic step Promotion to active is a manual registry edit, made only after a PROMOTE verdict. Current state: 0 promote, 3 hold, the rest reject.
Discoverfind course pages
Deterministic step Finds candidate course pages from listing pages using clustering and scoring heuristics.
Fetchstatic first
Deterministic step Plain HTTP first. A headless browser is a scoped fallback, switched on per configuration, not the default.
Validate pagedrop non-course
Deterministic step Pages that aren't real course pages are skipped before any evidence is saved.
Extractevidence saved
Deterministic step Raw HTML and extracted text are stored as evidence, so every field can be traced back to its source page.
9 field parsersdeterministic
Deterministic step Config-driven parsers for degree, duration, fees, modules, intakes, campus, study mode, language and entry requirements.
LLM fillonly empty fields
Model call One narrowly scoped local-model call, given only the fields the parsers left empty.
Mergedeterministic wins
Deterministic step If a parser found a value, the model's answer is discarded. The LLM can add facts; it can never overwrite them.
Normaliseschema + canonical
Deterministic step Schema validation plus canonical degree names, durations, intakes, campus names and currency.
Change detectiondiff vs last run
Deterministic step Each run is compared with the stored record, so changes on a university's site show up as a report.
Structured recordsone per programme
Stored data One JSON record per programme. Duplicates are quarantined (moved, not deleted) with a manifest.
Matching engineexplainable scoring
Deterministic step Mandatory criteria plus weighted scoring, with every result explained. It never imports the ingestion code.
Document intaketranscript → profile
Deterministic step Turns an uploaded transcript into the same profile shape a manual form produces. Isolated from every other module.
APIFastAPI
Deterministic step Serves universities, courses and recommendations, with OpenAPI docs. It reuses the engine and never duplicates logic.
Review dashboardinternal
Deterministic step Internal UI for testing profiles against real records. It talks to the API over HTTP only.
End-user productnot built yet
Not built No public product runs on OASIS yet. It is shown here so the diagram doesn't overstate what exists.
- Stored data
- Deterministic step
- Human decision
- Model call
- Not built
