Education · Arabic NLP · 2025
ChatUB
Local Arabic academic assistant
An Arabic academic assistant for University of Bisha students, with every step running on a local machine.
- Role
- Project lead
- Status
- Graduation project
- Year
- 2025
- Code
- github.com/Abdulel3h/ChatUB
In brief
01The problem
University rules are spread across documents and offices, and the answer can depend on who you ask.
02What was built
A Flask app matches each question to the closest FAQ entry by meaning; a local model served by Ollama writes the answer.
03My role
I led the graduation team from idea to working prototype, and chose to keep retrieval and generation on the machine.
04Outcome
A working prototype with public code. Not deployed to students, and no accuracy figure is claimed.
How it works
01Input
Arabic question
02Processing
Stop-word cleanup (NLTK)
03Intelligence
Embedding match against FAQs
04Output
Local answer via Ollama
Decisions that shaped it
Local-first, not cloud
Retrieval and generation run on the same machine, so university content and student questions never leave it. Privacy and institutional trust mattered more than the convenience of a hosted model.
Anchored to curated FAQs
Answers start from the closest curated question–answer pair instead of the model’s general knowledge. When nothing is close enough the model can still answer unguided — a limitation the repository documents openly.
The honest part
Not claimed
No production deployment and no accuracy measurement are claimed.
Limits today
- Grounding is not guaranteed: if no FAQ entry passes the similarity threshold, generation continues without reference context.
- There is no automated evaluation of answer accuracy or hallucination.
- The official university sources behind the FAQ data are not yet documented in the repository.
- Committed model artifacts make the repository heavy.
If it continued
- Build an Arabic test set and measure answer accuracy before any rollout
- Decline or hand over when no FAQ entry is close enough, instead of answering unguided
- Document the official source behind every FAQ entry
- Run a small pilot with students and academic advisers
What you can verify
Graduation project at the University of Bisha — a working prototype, not deployed to students.
Stack
Python · Flask · Sentence Transformers · PyTorch · NLTK · Ollama
“Real innovation starts when technology respects context, privacy, and real human needs.”
The full recordContext, constraints and engineering notes, as written.
Context
Information Systems graduation project at the University of Bisha. Abdulelah led the team from the first idea to a working prototype.
The problem
Students look for academic rules — course withdrawal, apology deadlines, registration — that are spread across documents and offices, and answers can differ depending on who they ask. A generic chatbot does not know one university’s rules, and sending campus questions to a hosted model sends them off-site.
What was built
A Flask web app matches an incoming Arabic question to curated FAQ entries with multilingual sentence embeddings, then passes the closest entry to a locally served Ollama model, which writes a concise Arabic answer.
Outcome
A working prototype: a web chat interface, a question endpoint, Arabic preprocessing and semantic FAQ matching that feeds a local model — readable and runnable from the public repository. It has not been deployed to students, and no answer-accuracy figure is claimed.
Constraints
- Arabic-first questions and answers
- University content and inference stay on a local machine
- Curated FAQ content, not the full body of regulations
- A graduation-project timeline and team
Responsibilities
- Defined the product scope and the problem it should solve
- Led the graduation team from concept to a working prototype
- Made the call to keep retrieval and generation local
- Shaped the assistant’s behaviour and how the FAQ knowledge is structured
Engineering notes
- FAQ question–answer pairs are loaded from JSON files in the repository
- Arabic text is preprocessed and NLTK Arabic stop words are removed
- Multilingual Sentence Transformer embeddings select the nearest FAQ entry
- An Ollama model defined in a Modelfile generates the answer locally
- The latest question and answer are carried forward as light context