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
Concept visualizationIllustrative sketch of the idea — not a product screenshot.

In brief

  1. 01The problem

    University rules are spread across documents and offices, and the answer can depend on who you ask.

  2. 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.

  3. 03My role

    I led the graduation team from idea to working prototype, and chose to keep retrieval and generation on the machine.

  4. 04Outcome

    A working prototype with public code. Not deployed to students, and no accuracy figure is claimed.

How it works

  1. 01Input

    Arabic question

  2. 02Processing

    Stop-word cleanup (NLTK)

  3. 03Intelligence

    Embedding match against FAQs

  4. 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

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