ML Engineer & AI Developer · Building generative models and multi-agent systems. Spending a lot of time on the boring parts that make them actually ship.
- 🛠️ AI Developer at NTT Data, working on LLM orchestration and tool-use patterns for real enterprise workflows
- ⚽ Just shipped PitchIQ, an AI scouting analyst that can't invent a number
- 🎓 BSc in Data Science & AI from Universidad Alfonso X el Sabio (UAX), class of 2026
- ✍️ Writing about ML engineering on Substack — honest validation, negative results included
- 🔎 Looking for full-time ML Engineer / AI Developer roles, remote or hybrid out of Madrid
Generative AI & LLMs: LangChain · LangGraph · Multi-Agent Systems · RAG · Grounding & citation verification · Claude API · Gemini 2.0 Flash · OpenAI API Deep Learning: PyTorch · TensorFlow · WGAN-GP · LSTMs · CNNs · Transformers Classical ML: Scikit-learn · XGBoost · Random Forest · Logistic Regression · K-Means · KNN · Ensemble Methods Engineering: Python · SQL · FastAPI · Docker · GitHub Actions · pytest · Playwright · uv · Streamlit · Git
⚽ PitchIQ · LLM Agent with Verified Figures
An AI scouting analyst that writes the pre-match report a coach reads, and can't invent a number. Python turns StatsBomb events into ~85 facts per team; the LLM (Claude) cites them by key, the code inserts the values, and a LangGraph verifier sends back any draft with an unknown key or a hand-typed figure. 977/977 figures backed by the data in the published reports, and goals match Understat on 1,621/1,621 matches. The honest part: a 7B local model had every number rejected but still claimed Leverkusen got relegated. Checks catch numbers, not claims, so the app always shows the draft next to the report.
LangGraph · Claude · FastAPI · Playwright · StatsBomb
🎓 TFG_MultiAgente · Final-Year Thesis
Controlled experiment on whether multi-agent LLM pipelines actually beat a single model at code generation. 1,476 runs on HumanEval, paired McNemar tests, full cost accounting. Finding: the single-model baseline wins — 80% vs 58% pass@1 at 1/40th the token cost. The hard part isn't the agents — it's having the rigour to report that they didn't help.
LangGraph · Ollama · Statistical Testing · Python
🧪 SyntheticMarket-GAN · Generative Time Series · CI'd Package
WGAN-GP for synthetic AAPL price windows, refactored from notebook into an installable, tested package (pytest + ruff + GitHub Actions). PCA/t-SNE show strong real/synthetic overlap, but the honest headline — written up on Substack — is that step-to-step volatility comes out 4× too high, a failure mode PCA and t-SNE silently miss.
PyTorch · WGAN-GP · pytest · GitHub Actions
🤖 Travel Planner AI · Multi-Agent System
Two specialised agents on a LangGraph state machine: a low-temperature Explorer doing live web research, a Planner turning it into day-by-day itineraries with budgets, and conditional error routing between them so a failed search never becomes a hallucinated plan. Gemini 2.0 Flash + Streamlit.
LangGraph · Gemini 2.0 · Streamlit · Python
⚽ Player Similarity Finder · Sports Analytics App
Unsupervised scouting tool over 2,700+ players from Europe's Big 5 leagues. K-Means tactical profiles + a KNN similarity engine with explainable scores — query Lamine Yamal, get Wirtz, Olise and Barcola with radar-chart evidence. Live Streamlit app, screenshots in the repo.
Scikit-learn · K-Means · KNN · Streamlit
📊 Customer Churn Prediction · Classification, Honest Benchmark
Four classifiers benchmarked on imbalanced Telco churn data with GridSearchCV — and the simple model won: Logistic Regression beats tuned XGBoost on recall (0.572 vs 0.505) with 25 fewer missed churners. Model selection driven by the business cost of false negatives, not leaderboard accuracy.
Scikit-learn · XGBoost · GridSearchCV
- ✅ Introduction to Generative AI — Google Cloud Skills Boost
- ✅ Introduction to Large Language Models — DeepLearning.AI
- ✅ Elements of AI — University of Helsinki
- 🔄 IBM AI Engineering & Microsoft Azure AI — in progress
- 📧 nicotimoneda@gmail.com
- 📍 Talavera de la Reina, Spain
- 🌐 Languages: 🇪🇸 Spanish (native) · 🇬🇧 English (C1) · 🇫🇷 French (B2)

