ChatGJU
A multilingual RAG chatbot for my university — deployed, tested, and presented to the GJU co-president.
ChatGJU answers student questions about the German Jordanian University — academics, registration, programs, faculty — using retrieval-augmented generation. A FastAPI backend runs semantic search over university data in a vector database and generates grounded answers with an LLM; a Next.js interface serves the chat. We were a team of five. I coordinated the team and owned the data and retrieval-quality layer.
My part
In a RAG system the model is the easy part; retrieval quality is what makes or breaks it. That's the layer I owned. I built four specialized scrapers for the university's site — general pages, the faculty directory, the Drupal FAQ accordions, partner listings — and collected and cleaned 576+ pages into structured, chunked data. Then I built the ingestion pipeline that embedded everything and loaded it into the vector database, plus the validation and repair tooling around it.
The retrieval work
The decision I spent the most time on: what actually goes into each embedding. Raw text alone retrieves badly, so each chunk's embedding input carries its title, domain, section and tags too. On top of that, results get re-ranked by source type — a curated FAQ answer outranks a raw scraped page. And I was the one in the evaluation loop: I ran test questions against the chatbot in four languages, judged the answers, and kept refining retrieval until they were actually good.
Outcome
Deployed on Railway, tested end to end, and presented to the GJU co-president. We took it offline afterward on purpose — it had proven the concept. The FastAPI backend and the frontend were team work I contributed to and coordinated; the data, the embeddings and the evaluation were mine.
Next project
Taqreer→