Skip to content
View Herreran903's full-sized avatar
😶
♪┏(・o・)┛♪┗ ( ・o・) ┓♪ ┏ (• o• ) ┛♪
😶
♪┏(・o・)┛♪┗ ( ・o・) ┓♪ ┏ (• o• ) ┛♪

Highlights

  • Pro

Organizations

@Proyectos-POE @Proyectos-PFyR @Desarrollo-DS1 @Desarrollo-DS2 @Desarrollo-PI @AndroidMobileDreamTeam @Desarrollo-DS3

Block or report Herreran903

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Herreran903/README.md

Nicolás Herrera Marulanda — Full Stack Developer

LinkedIn Email Location


About

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.

Telemetry

F1 score tests classes distinctions GPA

Stack

Languages & frameworks

languages and frameworks

Data & machine learning

data and ml

Infrastructure & tooling

infrastructure

Featured work

🏁 MedAI

Undergraduate 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 O-tag imbalance. Pretrained Spanish Word2Vec embeddings, BIO tagging, grid search over batch size and epochs.

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.

Multi-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 Sala

Hackathon · 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 seqeval at entity level, and reported as macro F1 0.905–0.933 rather than the weighted average the O tag inflates. Adapter published to the Hub.

🏎️ Optimization & formal methods

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

Contribution graph

Snake eating my contribution graph

Open to remote roles worldwide · Graduating November 2026

Pinned Loading

  1. api-stock api-stock Public

    Microservicio de catalogo e inventario en Java 17 y Spring Boot con arquitectura hexagonal. Marcas, categorias, articulos y abastecimiento, con seguridad por roles via JWT. Reto Emazon del Bootcamp…

    Java

  2. jssp-backend jssp-backend Public

    Servicio FastAPI que resuelve variantes del Job Shop Scheduling Problem con modelos de restricciones en MiniZinc, devolviendo operaciones, máquinas, métricas y bitácora de configuración.

    Python

  3. la-sala la-sala Public

    Sesion de agente de IA compartida en vivo por un equipo: cada instruccion queda atribuida, los pedidos que se contradicen abren una votacion que frena al agente, y el mando pasa entre personas sin …

    TypeScript

  4. medai-backend medai-backend Public

    Backend de MedAI: API REST de microservicios en FastAPI que expone cinco modelos de reconocimiento de entidades clinicas (Transformer/RoBERTa, BiLSTM, BiLSTM-CRF, CRF y LLM), cada uno en su contene…

    Python

  5. ner_pipelines ner_pipelines Public

    Pipelines de entrenamiento y evaluación del modelo BiLSTM+CRF para reconocimiento de entidades clínicas en español: vocabularios BIO, embeddings Word2Vec, pérdida CRF y Dice. Línea base neuronal de…

    Python

  6. practica-invg practica-invg Public

    Selección de solvers para SAT y Job Shop Scheduling con redes convolucionales: cada instancia se codifica como imagen o tensor y una CNN predice qué solver la resuelve dentro del límite de tiempo. …

    Python