Systems Engineering student finishing my degree at Universidad del Valle (Cali, Colombia), with professional experience since 2023 across frontend, backend, and applied NLP.
My undergraduate thesis builds a named entity recognition system for Spanish clinical text, comparing CRF, BiLSTM, RoBERTa and LLM approaches. In 2026 I completed a research internship at the PReCISE group, Université de Namur (Belgium) — where, fittingly for the theme of this page, I modeled the variability of the FIA Formula 1 2026 Technical Regulations using formal methods and SMT solvers.
Languages & frameworks
Data & machine learning
Infrastructure & tooling
🏁 MedAIUndergraduate thesis · Clinical NER in Spanish Corpus annotated from scratch, four modeling approaches compared. 0.8767 strict F1 on a held-out test set, dropping to 0.5636 against independent expert annotations — a gap in annotation criteria, reported as the study's main limitation. Served through a FastAPI microservices backend exposing five selectable models, each isolated in its own container. |
Neural architectures behind the thesis The BiLSTM+CRF baseline the thesis transformer had to beat. Custom Keras training loop over the CRF log-likelihood instead of a per-token loss, plus a Dice objective for the heavy |
|
Pragma Power Up · E-commerce backend Four REST microservices — users, catalog, cart, checkout — built on hexagonal architecture, with JWT auth and inter-service calls over OpenFeign that propagate the caller's token. 53 unit test classes. |
🔧 ToolFlowMulti-site tool & fleet management Inventory, loans and inter-site transfers for workshops with multiple locations. Lead contributor on both ends — 138 backend classes and 10 versioned Flyway migrations, plus the React frontend. |
|
3D adventure game in the browser — play it → Four levels, physics-driven movement, spell and mana systems, real-time multiplayer over Socket.IO. Full UX cycle behind it: interviews, affinity mapping, protopersonas and per-level usability testing. |
🤖 La SalaHackathon · Shared LLM agent session — try it → An agent session a whole team watches live. Every instruction is attributed, conflicting requests open a vote that halts the agent, and control passes between drivers without losing context. |
|
Neural Networks coursework · Four architectures, one task MLP, RNN, LSTM and a fine-tuned RoBERTa predicting review ratings, each under three treatments of class imbalance. The result worth reading is a negative one: loss weighting failed to remove majority-class bias in every configuration, undersampling traded accuracy for fairness, and scale erased the tradeoff. Bayesian search over 30 trials; the full Yelp dump streamed as NDJSON into Parquet shards to fit Colab. Ships with the 37-page report. |
NLP coursework · Two routes to the same problem A BiLSTM-CRF with in-domain Word2Vec on the public CodiEsp corpus, against BETO and XLM-RoBERTa fine-tuned with LoRA adapters over ten oncology entity types including Gleason grading and TNM staging. Swept across epochs and batch sizes, scored with |
The line of work that started with a research internship and kept going.
| JSSP solver · visualizer | Job Shop Scheduling solved with MiniZinc constraint models — tardiness and maintenance variants — exposed through a dockerized FastAPI service, with a TypeScript frontend to explore the schedules. |
| Solver selection with CNNs | Instances of SAT and JSSP encoded as images or tensors, then a CNN predicts which solver cracks them inside the time limit. Classification, multilabel and regression pipelines, all YAML-driven. |
| PReCISE, Université de Namur | Variability modeling of the FIA Formula 1 2026 Technical Regulations in UVL: 1,060 boolean features, 34 cardinalities, 1,212 constraints. Benchmarked Z3 (SMT) against CP-SAT and CBC — Z3 came out an order of magnitude faster. |
More projects — data engineering, algorithms, simulation, languages
| Project | What it is | Stack |
|---|---|---|
| fast-etl | Dimensional modeling pipeline: date, client, headquarter and messenger dimensions feeding an accumulating-snapshot fact table. | Python Jupyter |
| Proyecto-ADA | Algorithm analysis and design: red-black trees, binary trees and heaps implemented from scratch over a scheduling domain. | Python |
| TallerAsociacion | Association rule mining over prescribed-medication records. | Python Jupyter |
| Simulación Navier-Stokes | Fluid velocity simulation across a medium using finite differences. | Python |
| IA search | Search algorithms applied to a pathfinding problem — uninformed and heuristic strategies compared. | Python |
| Proyecto-RGF | Cost management and optimization for sugar cane farms. | Scala |
| Constraint programming | Modeling exercises in constraint programming — the groundwork for the JSSP solver above. | MiniZinc LaTeX |
| miniPy (private repo) | Interpreter for a programming language: lexical and syntactic analysis, data and control structures. Built with two teammates. | Racket |
Open to remote roles worldwide · Graduating November 2026


