all projects
shippedOct 2024 — Mar 2025

Graduation project

EUNO: ML-Based Mood Tracker (Graduation Project)

A mood-tracking application that turned historical entries into a supervised learning problem, compared several classifiers, and served the selected model through a mobile product.

My role
Machine-learning and backend co-developer
Context
German-Jordanian University, with Jaser Quteshat
Reading time
7 min read
Graduation project

01

Defining something the model could actually predict

EUNO began with a broad idea around mood tracking. We narrowed that into a specific supervised learning task: use recent mood history, causes, emotions, and streak behavior to predict whether a mood pattern would continue.

That definition mattered because personal mood data is irregular and highly imbalanced. A model can appear accurate by learning the majority class, so the project needed an evaluation process that looked beyond one top-line number.

02

From diary entries to model features

The training work transformed dated entries into features such as current mood, overlap between causes and emotions, rolling streak length, day-of-week behavior, mood change, and short-window stability. We built variants with and without emotion features to see what actually helped.

We compared Decision Tree, XGBoost, and Random Forest models. SMOTE and, in smaller edge cases, alternative oversampling handled class imbalance in the training split. The selected Random Forest reached about 87 percent accuracy in the project evaluation.

03

Making the model part of an application

The model was exposed through a FastAPI service rather than left in a notebook. The API accepted application data, ran the prediction path, and returned a result the client could display. A Flutter application collected mood entries and presented history, visualisations, and predictions.

Connecting the model to the product surfaced details that offline experiments hide: input validation, feature consistency, serialization, missing history, and the difference between a model output and a useful user-facing explanation.

04

What the project does not claim

EUNO was a computer-science graduation project, not a clinical tool. The model results describe our project dataset and evaluation setup. They do not establish medical validity, diagnose a condition, or replace professional support.

I built the project with Jaser Quteshat under Dr. Ahmad Barghash. He later ranked my work among the top five percent of graduation projects he had supervised. Working as a pair forced us to agree on data preparation, model comparison, API behavior, and the boundary between the mobile client and prediction service.

Outcomes

  1. 01A compared set of Decision Tree, XGBoost, and Random Forest experiments with imbalance handling.
  2. 02A selected Random Forest result of about 87 percent accuracy in the project evaluation.
  3. 03A FastAPI prediction service connected to a Flutter mood-tracking application.

What I learned

  1. 01A precise prediction target is more valuable than a vague promise to use AI.
  2. 02Class imbalance can make a strong-looking accuracy number misleading unless the evaluation is designed around it.
  3. 03Serving a model exposes data-contract problems that are easy to miss in offline experimentation.