LLM & AI Systems
Model quality treated as an engineering problem. LangChain and LlamaIndex are exposure-level; the production LLM work is evaluation and prompt design.
5+ years shipping production software across enterprise fintech, applied ML, and backend APIs. I build LLM and ML systems with the same reliability bar I learned in banking.
Open to AI/ML Engineering and Python Backend roles, remote or hybrid
A portfolio built to show how I think, build, and operate AI-backed software.
I am a software and machine learning engineer with 5+ years across enterprise fintech, applied ML, and backend/API platforms. I started in banking software, where reliability, security, and release quality were non-negotiable, and I carried that bar into ML and LLM work.
At Anyone AI I took ML solutions end to end: a credit risk model over 350,000+ records, a CNN classification service packaged as a Dockerized API on AWS, and SQL analysis of LATAM e-commerce operations. At Scale AI and Revelo I worked the other side of the loop: scoring model-generated Python and SQL against explicit correctness and reasoning criteria, which is where I learned how much of LLM quality is really evaluation design.
Alongside the engineering I own product at Altamira Tech Labs: I co-founded Altamira GTM and Out!, and on both I did the product-owner work — discovery, user journeys, MVP scope, requirements, prioritisation, and the architecture trade-offs — before and alongside the build. The role I am building toward is technical Product Manager / Product Owner: close enough to engineers and AI agents to be useful, and accountable for the problem, the requirements, and the definition of done.
I hold a Specialization in Machine Learning & Data Science from Universidad Nacional de Colombia and a B.Sc. in Biomedical Engineering from Universidad de los Andes. I work in Spanish (native) and English (C1).
Deliberately organized around AI systems and Python backend engineering.
Model quality treated as an engineering problem. LangChain and LlamaIndex are exposure-level; the production LLM work is evaluation and prompt design.
From raw dataset to deployed service
Services built to be integrated, tested, and maintained
Native banking apps in production, plus cross-platform client delivery
Shipping into reliability-sensitive environments
Ambiguous problems turned into scoped, buildable product. CAPM-certified; the product-owner work is on Altamira GTM and Out!.
Turning a roadmap into delivery with explicit dates and dependencies
Designing the job the user hires the product for, not the screen
Where the trade-off gets written down before the code gets written
From enterprise banking software to applied ML and LLM evaluation.
Altamira Tech Labs · Remote
Revelo · Remote
Anyone AI · Remote / Project-Based
Scale AI · Remote
Sophos Solutions — Backbase LATAM banking engagements · Colombia / Mexico · Remote
Ikarosoft Technology · Cali, Colombia
Every metric on these cards is one the published content can back up.
Product definition and architecture for an AI-native GTM and RevOps platform, co-founded at Altamira Tech Labs. Go-to-market teams sit on fragmented customer and sales signals and still act on instinct, so I specified the loop that closes it: intake, analysis, AI recommendation, human approval, execution, measurement. As product owner I turned an ambiguous automation opportunity into user journeys, feature requirements, user stories with acceptance criteria, a staged MVP roadmap, and the architecture boundary between deterministic workflow orchestration and probabilistic LLM behaviour. Approval gates, explainability, and exception states are first-class requirements, so AI accelerates execution while the business decision stays with the operator.
Consumer product that turns "we should do something" into an actual plan. I co-founded and designed Out! around the friction between wanting to socialise and organising anything, structuring it as one journey — intent, personalised discovery, real-world plan — rather than a feed of disconnected features. Recommendations weigh mood, budget, location, time, interests, venues, and who is free, and each one explains why it fits. The design problem is the handoff: a probabilistic recommendation system has to resolve into deterministic group, plan, and coordination state covering chat, polls, meeting points, and shared payments. Scoped to that critical path first, with the social-network features deferred.
The assistant on this page. A deterministic trilingual intent engine answers in English, Spanish, or Brazilian Portuguese strictly from the canonical portfolio content file, with no LLM and no external AI service anywhere in the request path, so it cannot invent a fact about me. Shows content-model design, text normalisation and intent matching, graceful degradation when the API is unavailable, and a test suite that fails if a translation goes missing or a published metric changes meaning between languages.
A grocery shopping assistant that wraps an LLM in deterministic transactional guardrails, so a hallucinated product ID can never reach a customer's cart. The engineering is in the boundary: catalog resolution, tool authorisation, complaint severity, and a persisted human-approval gate are all decided by code, so the guarantee holds whatever the model emits. Built the hybrid BM25 and dense retrieval fused with RRF over 49,678 products, a bounded agent loop with token and wall-clock ceilings, a provider-agnostic LLM boundary with retries and per-call cost accounting, and two evaluation suites that gate CI.
Spanish-language RAG that treats refusing to answer as a feature rather than a failure. Abstention is a pure function of retrieval score in deterministic Python, and any generated answer whose citations do not resolve to evidence the model was actually shown is discarded in favour of the verbatim passage and its page number. Every threshold is calibrated from measured sweeps, then stress-tested on 352 pages of real Spanish law, where retrieval improved but abstention degraded until thresholds were re-swept, so calibration drift is now detected on the readiness probe. Covers retrieval evaluation, prompt-injection defence, structured outputs, and FastAPI service design.
A natural-language interface to a data warehouse where the model picks the question and never produces a number. An LLM authors SQL against a 47-document catalogue generated from the warehouse code itself; deterministic policy parses that SQL to an AST and enforces read-only access, a retrieval-derived table allowlist, and a bounded LIMIT; then the warehouse computes the figures, and any cited number missing from the returned rows is suppressed. A pure-function router handles most review triage with code that already existed, so a model runs only where it earns its place. Star-schema modelling over the Olist Brazilian e-commerce dataset, metric contracts that define every published number once, and three deterministic evaluation suites gating CI.
A job-search assistant that cannot recommend a job that does not exist. Every recommendation carries a job id the model must copy from the retrieved context, so intersecting those ids with what retrieval actually returned turns hallucination from a judgement call into a set-membership test, and an answer whose citation does not resolve is withheld rather than shown. Hybrid dense and BM25 retrieval fused with RRF and consolidated from chunks back to whole postings; an agent loop only for the one request shape that needs it, bounded on iterations, wall clock, tool calls, and cost. The 38-query retrieval evaluation gates every merge and has already overruled three of my own design decisions, including reranking I built and then disabled after measuring it.
Hospitalization-risk stratification for a care programme that can only contact a fifth of its panel, where the inherited headline result turned out to be leakage. The audit found 14 outcome-contaminated columns, one implying the outcome with certainty, and removing them moved cross-validated ROC-AUC from 0.83 to 0.73. I built household-grouped splitting so spouses cannot span partitions, isotonic calibration because the product shows a probability, and a second model on the 13 fields the intake form supplies, after integration tests caught the 248-feature model scoring three very different people identically. Demonstrates evaluation discipline over metric-chasing, with eight ADRs and a published sex gap I have not fixed.
Pre-call propensity ranking for a retail-bank campaign, built so the number reported is the number that would survive deployment. The flattering result is 0.8116 pooled ROC-AUC from a random split; ranking customers inside a single contact month gives 0.5865, and I traced that +0.2251 gap to macro variables that encode the calendar. Model selection therefore runs on a nine-fold rolling-origin backtest, the decision threshold is frozen on validation before the test window is touched, and post-call duration is excluded as leakage. Ships a Typer CLI, a validated batch-inference path producing a capacity-bounded call list, a model card, and eight ADRs.
Supervised credit-default risk model over a 350,000+ record home-credit dataset, built at Anyone AI. I owned the path from cleaning and exploratory analysis through feature preparation, then benchmarked Decision Tree, XGBoost, and LightGBM on ranking quality, reaching ROC-AUC above 0.72 with gradient boosting. The judgement on show is treating a class-imbalanced credit problem as a ranking task rather than an accuracy score, with attention to model validation and reproducibility.
CNN image classifier for vehicle make and model at 82% accuracy, built at Anyone AI. Carried from data preparation and augmentation through training and evaluation to packaging as an API-based service on AWS with Docker. Demonstrates the deep-learning-to-production path: an augmentation strategy for a fine-grained visual task, and a trained model shipped behind an HTTP interface in a reproducible container instead of being left in a notebook.
Human-in-the-loop evaluation of model-generated Python and SQL at Scale AI and Revelo. I scored correctness, instruction adherence, and reasoning quality against explicit rubrics, authored technical prompts and evaluation criteria for code-generation tasks, and documented failure patterns and edge cases feeding RLHF-based improvement. This is the judgement behind the evaluation suites in my own systems: knowing what is worth measuring about a model, and why a confident answer is not the same as a correct one.
Secure cardless ATM withdrawal journey for Banco de la Nación, delivered at Sophos Solutions on Backbase LATAM banking engagements. I helped design and implement the flow linking the mobile banking app to Backbase APIs and legacy core banking infrastructure, under the reliability, security, and compliance expectations of regulated finance. Experience shipping money-movement features where a defect is an incident rather than a bug report, and where integrating with a legacy core is most of the problem. Client work: source is not public.
SQL-driven investigation of revenue and delivery data across a large LATAM e-commerce dataset at Anyone AI. I wrote the queries and analysis that surfaced operational patterns, delivery delays, and revenue trends, then packaged the findings for stakeholder review. Demonstrates analytical SQL against a real relational dataset together with the communication half of data work: turning a query result into something a business reader can act on.
Professional certifications and focused programs across AI, machine learning, cloud, data, fintech, and delivery.
EPAM
EPAM
Corporación Universitaria de Cataluña
Corporación Universitaria de Cataluña
Corporación Universitaria de Cataluña
Anyone AI
Anyone AI
Anyone AI
Project Management Institute
Data Science for All by Correlation One
Acámica
Universitat Autònoma de Barcelona
IBM
University of California San Diego
Universidad del Rosario
Tecnológico de Monterrey
Tecnológico de Monterrey
For AI/ML engineering, Python backend, LLM systems, or product collaboration, reach out through the channels below.