Alejandro Belda Fernández
A collection of my data science and analytics projects — the code, the results, and what I learned along the way.
Background
Computer Science graduate from the University of Murcia with a Master's degree in Artificial Intelligence. I spent one year working as a researcher (PDI), handling complex biological datasets, managing Linux server infrastructure, and collaborating in academic research environments. This gave me a strong foundation in data quality, methodological rigour, and working with real-world data. I am now transitioning into industry roles in data science and data analysis.
I enjoy the full pipeline: understanding the business problem, cleaning and transforming messy data, exploring it with the right questions, building models that actually work in context, and communicating results clearly. I care about honest evaluation, documented decisions, and conclusions that non-technical stakeholders can act on.
- Status
- Unemployed
- Seeking
- Data Scientist / Data Analyst
- Education
- Computer Engineering and Master's in Artificial Intelligence — University of Murcia
- Prior experience
- More than 1 year as a researcher (PDI)
- Languages
- Spanish (native) · English (B2)
- Contact
- alejandrobeldafernandez@gmail.com
Working stack
Machine Learning
MLOps & Deployment
Databases & Tools
Five entries that summarise the range of work
Automated News Report Generator
Scraping, orchestration, local LLM summarization and self-hosted deployment, verified against the real service at every step.
Movie Recommendation System
Three recommender approaches compared and explained rather than blended into one black-box ranking.
MLOps Telco Customer Churn
Full production lifecycle: tracking, orchestration, drift monitoring, automated retraining and a deployed API.
Coffee Shop Sales Analysis
12 business questions answered entirely in SQL, from cleaning to a dashboard and a data storytelling presentation.
Published independently
calm-data-generator
Python library for synthetic tabular data generation, developed during my time as a researcher. It wraps several generation backends behind a single unified interface, simulates concept drift to test how models degrade, and produces an automated data quality report for every dataset generated.
All ten projects, entry by entry
LOG · 01
Madrid Traffic Accident Injury Prediction
ROC AUC 0.873
+
Predicts whether a traffic accident in Madrid will result in at least one injured person, using information available at the time it is reported. Covers person-to-accident aggregation, feature engineering, Optuna tuning and SHAP explainability.
Results (CatBoost): ROC AUC 0.873 · Balanced Accuracy 0.801 · Macro F1 0.73
Out of every 10 accidents predicted as involving injuries, 8 to 9 are correct. The remaining errors are mostly false alarms rather than missed injuries — the safer type of mistake in an emergency context.
LOG · 02
Madrid Real Estate Price Prediction
R² 0.897
+
Predicts the sale price of residential properties in Madrid from physical characteristics and location. Includes TargetEncoder for district encoding, Optuna tuning, bootstrap confidence intervals and SHAP explainability.
Results (XGBoost): RMSE €69,568 · R² 0.897 · MAPE 15.27%
On average, the predicted price is within 15% of the actual sale price. Built area and district amplify each other: a large flat in Chamberí is worth disproportionately more than an equally large flat in Vallecas.
LOG · 03
Customer Personality Analysis
Silhouette 0.24
+
Segments customers into 3 profiles based on demographic, spending and campaign response data. Includes outlier detection, PCA, K-Means with Elbow/Silhouette selection and UMAP visualisation.
Results (K-Means K=3 + PCA): Silhouette Score 0.24 · 3 segments identified
Premium customers spend €1,274 on average without needing discounts. Deal Seekers buy 3.4x more with promotions — that's where discount budgets have the highest ROI. Applying the same campaign to all three is the worst allocation of marketing spend.
LOG · 04
MLOps Telco Customer Churn
ROC-AUC 0.84
+
Full production lifecycle: data validation, Optuna tuning (150 trials), MLflow tracking, Prefect orchestration, drift monitoring, automated retraining and a FastAPI REST endpoint.
Results (Random Forest + Optuna): ROC-AUC 0.84 · Balanced Accuracy 0.76 · Recall (churn) 0.76
The model correctly identifies 76% of customers who will cancel before they do. The real value is the infrastructure: the pipeline retrains automatically only when more than 40% of features drift, and only promotes a new model if it beats the current one.
LOG · 05
Store Sales Forecasting
RMSLE 0.381
+
End-to-end forecasting on a 3-million-row retail panel (1,782 store × product-family series over 4.5 years). Includes classical time series diagnostics, a PanelOLS baseline and gradient-boosting models with custom time-series cross-validation.
Results (XGBoost + Optuna): RMSLE 0.381 · R² 0.977 · ~28% better than the naive baseline
Predictions are driven mostly by recent sales momentum. The one high-impact lever the business actually controls is promotions, so the model doubles as a scenario simulator before a single dollar is spent.
LOG · 06
Coffee Shop Sales Analysis
SQL · 12 questions
+
Sales analysis of a fictitious three-location coffee shop chain in NYC. SQL cleaning, 12 business questions answered entirely in SQL, a Metabase dashboard and a data storytelling presentation.
Key findings: revenue nearly doubled from January to June. Coffee and Tea drive 66% of revenue. Only 11 product types generate 80% of revenue (Pareto rule).
An owner can use this to decide which products to promote, optimise staff shifts around peak hours, and design campaigns for the weakest months.
LOG · 07
Amazon Reviews Spanish
Macro F1 0.765
+
A sentiment classifier (TF-IDF baseline vs. fine-tuned BETO) and a RAG system that answers questions about the corpus, citing real reviews. Formal A/B comparison with McNemar, bootstrap and cost-per-prediction analysis.
Results: BETO reaches 0.765 macro F1 vs. 0.725 for the baseline (p = 1.3e-12), but costs 1,009× more per prediction.
The classifier says how many customers are unhappy and where; the RAG system says why. Labelling the full index takes 10 seconds with the baseline vs. 2.8 hours with BETO — cost decides the architecture.
LOG · 08
Movie Recommendation System
Precision@5 42.4%
+
Three systems compared on the same catalog: content-based, item-based collaborative filtering, and SVD. Evaluated with Precision@5/Recall@5, documenting cold start and coverage rather than blending them into one ranking.
Results: collaborative filtering wins by 7-8x, but only covers 43% of the catalog with enough rating history.
The three models are complements, not competitors. A real product needs all three, plus an explicit fallback for the 57% of the catalog collaborative and SVD cannot reach.
LOG · 09
Fashion Product Images Classification
Accuracy 99%
+
EfficientNetB0 and ResNet50 compared on the same classification task, interpreted with Grad-CAM instead of left as a black box. 3 of 7 original categories were dropped for insufficient data.
Results: ResNet50 beats EfficientNetB0 on every class and metric (99% vs. 97% accuracy).
Accessories and Apparel account for 63% of all errors: Grad-CAM shows the model's attention locks onto the accessory instead of the labeled garment — a specific, understood failure mode, not random noise.
LOG · 10
Automated News Report Generator
Self-hosted
+
End-to-end pipeline verified against the real service at every step, not its documentation. The planned deployment target (Hugging Face Spaces) turned out not to be viable, so the project ended up self-hosted via Docker + Tailscale Funnel.
Result: a working daily report with a source citation on every entry.
The dashboard is only reachable while the self-hosted machine is on, not 24/7 — the honest trade-off of a genuinely free deployment.
EXTRA
Cloud: Serverless ML Inference on AWS & Azure
Serverless
+
Two small, self-contained projects demonstrating practical skills on both clouds: models served via a public HTTP endpoint, with no server to manage. The focus is the architecture and the real issues solved along the way (IAM permissions, package limits, region restrictions).