04 — PERSONAL PROJECT

Smarter access
to knowledge.

UniChat: a full-stack AI study adviser for Swedish higher education. Describe a goal, subject or city and get ranked programme recommendations with grounded explanations.

Type
AI study adviser
Status
Personal project
Period
2026
Tools & technology
Next.js, TypeScript, Tailwind CSS, Python, FastAPI, PostgreSQL, Redis, Qdrant, OpenAI embeddings
PROJECT / 004AI STUDY ADVISER
UniChat start page with filters for level, language and study pace next to the heading Få programförslag som känns relevanta
UniChat on a phone, with the introduction and filter button
UNI-CHAT-MU.VERCEL.APP

01Context

Choosing a programme is a big decision built on scattered information. General chat assistants are fluent but vague about specific courses. UniChat explores how far you get when an adviser is grounded in a defined set of sources.

02My role

Personal project: idea, architecture, front end and back end.

03Process

  1. Crawl and normalise programme data, store it in PostgreSQL and index embeddings in Qdrant.
  2. Enrich each message with session context, extracted constraints and active filters such as city, level, language and pace.
  3. Retrieve with vector search, then apply deterministic guardrails, deduplication and reranking for hard constraints.
  4. Generate explanations only from the retrieved programme metadata.

04Outcome

A working full-stack application with open source code: closer to a constrained recommendation engine with RAG than a generic chatbot.

05What I learned

  • Hard constraints belong in code, not in the prompt.
  • Retrieval quality matters more than the model.

06Tools & technology

Next.jsTypeScriptTailwind CSSPythonFastAPIPostgreSQLRedisQdrantOpenAI embeddings
NEXT CASE ↘A better first
impression.