shipped project
Campus Compass
A campus assistant that answers course questions using semantic search over the catalog and a prerequisite graph for path navigation. Every answer includes the cited section.
Problem
What it solves.
Catalog PDFs are dense and prerequisites are buried. Students need to plan paths, not search keywords.
What I built
The specific parts I implemented.
What I owned
My responsibility surface.
Frontend UI
Retrieval pipeline
Graph rendering
Architecture
How data moves through the system.
Screenshots
What the system looks like.



Data model
What entities the system tracks.
- id - code - title - description - units
- course_id - requires_course_id - type
- id - course_id - content - embedding_id
Failure handling
What happens when something breaks.
Empty retrieval (no courses match query)
Surface 'no results' with suggested broader terms; do not hallucinate course data.
Graph cycle in prerequisites
Cycle detection on ingest; cycle edges flagged in UI instead of infinite path rendering.
Embedding search returns low-confidence results
Threshold filter applied; results below score are omitted rather than shown as weak matches.
Verification
How I tested or evaluated it.
- ✓Search query returns cited course results with source chunk references.
- ✓Prerequisite graph renders without cycles or orphan nodes.
- ✓Ingest pipeline handles malformed catalog PDF entries gracefully (skip + log).
- ✓Live demo at campuscompass-next.vercel.app responds with seeded data on page load.
Eval harness
Cases, expected, actual.
Semantic search returns relevant courses
pass- Input
- Query: 'computer science introduction courses'
- Expected
- Return CS 101, CS 110, and related intro courses with chunk-level citations.
- Actual
- Returned 5 results; top 3 matched intro CS. All results included cited catalog sections.
Prerequisite path finds valid route
pass- Input
- Find path from intro math to upper-level statistics.
- Expected
- Graph walk produces a valid prerequisite sequence without gaps.
- Actual
- Walk returned 4-node path with no missing intermediate courses.
Citation fidelity — no hallucinated content
pass- Input
- Ask a question about a course that exists in a different subject area.
- Expected
- Answer cites only the matching course; does not blend unrelated course info.
- Actual
- Response correctly scoped to the matched course. No cross-contamination.
Next improvements
Known gaps & next moves.
- →Add term-aware availability.
- →Add user-saved plans.
- →Add advisor-mode comments.