Alejandro Belda Fernández
A collection of my software, data engineering, and AI 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) at the Faculty of Computer Science (UMU), carrying out the processing of complex data, predictive model development, open-source software development, and Linux infrastructure management. This gave me a strong foundation in data quality, methodological rigor, and working with complex real-world datasets. I am now seeking opportunities in the technology industry.
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.
- Availability
- Immediate
- Seeking
- Data & Artificial Intelligence Engineer
- Education
- Computer Engineering and Master's in Artificial Intelligence — University of Murcia
- Prior experience
- 1 year as a researcher (PDI) at Faculty of Computer Science (UMU)
- Languages
- Spanish (native) · English (B2)
- Contact
- alejandrobeldafernandez@gmail.com
Working stack
Data Analysis & Visualization
Data Science & AI
Databases
Published independently
calm-data-generator
Python library for data manipulation, synthetic tabular data generation, and quality analysis, 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).