The ask / QA (RAG) service for UQ courses, split out of the uq_course_rag monorepo.
It answers natural-language questions about UQ courses and programs by routing a query
plan over Postgres (course tables + knowledge-base / embedding tables) and generating a
grounded answer.
The course planning simulator is NOT part of this repo; it lives in uq-course-planner.
backend/— FastAPI app (app.main:app), ask pipeline (LangGraph), retrieval, planner, program lookup, answer generation, KB pipelines and scrapers.frontend/— Vite + React (HeroUI) single-page ask UI.
The backend reads the same Postgres instance as uq-course-planner (course, program,
knowledge-base and embedding tables). Set DATABASE_URL in backend/.env
(see backend/.env.example). DATA_DIR (backend/data/) is not shipped here; it is
populated by the pipelines or mounted from a shared volume.
Backend (from backend/):
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
uvicorn app.main:app --port 8077
Frontend (from frontend/):
npm install
npm run dev
The dev server proxies /api to http://127.0.0.1:8077 (override with VITE_PROXY_TARGET).
backend/app/services/simulator.py is a duplicated copy from uq-course-planner
(app/services/simulator.py); qa.py depends on it for structured program overviews.
Sync it manually if the source changes.