Technical Notes
OER Navigator · built for UFV Social Sciences
Social Sciences Pilot

Implementation details, architecture, and development roadmap for OER Navigator. For the faculty-facing overview see About This Platform.

Matching approach

Topical fit is currently computed using TF-IDF keyword similarity between the course description or outline and the resource's title, description, topics, and taxonomy tags. The raw similarity score is supplemented with bonuses for matching LCC subject classification and for Canadian content, then translated into a five-band confidence scale (Strong / Promising / Partial / Weak / Review needed) to avoid implying more precision than the method supports.

The next planned matching upgrade is semantic embedding-based matching, which would surface conceptually related resources that share meaning but not exact vocabulary with a course outline — something TF-IDF keyword matching structurally cannot do.

Reliability Scoring

Reliability uses a two-tier advisory model. Where a verified third-party rating exists (currently Open Textbook Library faculty review scores), that rating is surfaced directly and frozen — it is never blended with or overwritten by the estimated score. For all other resources, an estimated internal rating is computed from eight weighted dimensions: source credibility, licence clarity, currency, peer review status, completeness, accessibility signals, adoption data, and Canadian/Indigenous content flags. These ratings summarize evidence; they do not certify academic quality.

LCC subject taxonomy

Each resource is pre-classified against a four-level Library of Congress Classification social sciences taxonomy (discipline → subfield → topic → subtopic) covering the 10 UFV pilot subjects across approximately 400 taxonomy nodes. Classification runs at index time, not at search time, so it adds zero latency to searches. The classified subject code also provides a direct match bonus when a resource's primary subject matches the course being searched.

Layer architecture

LayerResponsibility
parser/Turns a pasted outline, uploaded file, or catalog record into one structured shape (ParsedOutline)
matcher/Topical-fit scoring — TF-IDF + LCC subject bonus + Canadian content bonus + confidence banding
matcher/ai_search.pyAI Discovery Leads: asks Claude to search the live web for OER resources beyond the local catalog
matcher/chapter_cognate.pyChapter-by-chapter textbook mapping: breakdown → per-chapter OER matching → Course Reader feed
quality/reliability.pyTwo-tier reliability scoring, independent of topical fit
quality/lcc_tagger.pyLCC subject tagging using the four-level social sciences taxonomy
data/ss_taxonomy.json~400-node LCC-based taxonomy for the 10 UFV Social Sciences pilot subjects
evaluator/One-off resource/collection checks reusing the matcher and quality layers
reports/Repackages matcher + quality output into the one-page scan report — no new scoring logic
crawler/Indexes OER repositories into the local catalog; queues catalogue-maintenance findings for human approval
reader/Course Reader Builder — assembles, exports, and generates citations for a finalized reading collection

Data storage

Course and resource data currently live in JSON files rather than a database. For a 301-course, single-discipline pilot this keeps the system inspectable and easy to correct by hand. It is an intentional Phase 1 simplification. Migration to a proper database is planned once catalog size or concurrent use outgrows flat-file storage.

Development roadmap

OER Navigator is built on Python 3.11 / FastAPI with a vanilla JS frontend. Source code is maintained in a private project repository during the pilot. Public release may be considered after institutional review.