San José, Costa Rica — Data Scientist & MLOps Engineer

Systems that
don't guess.

Data science, mathematics and science are what I do for a living and what I do for fun. I build forecasting engines, fintech products and agentic AI that run on measured evidence, not vibes — and on the side I chase the technology that comes next, from brain-computer interfaces to genomics.

112.096.0 104.8 observed now forecast p10 – p90 p25 – p75

Where I've built things

Experience

  1. StockAI & WorkforceAI

    Jun 2026 — Present

    Founder — my main work

    • Since leaving Softtek my main work has been my own two products, building and running both end to end — the models, the backend and the interface.
    • StockAI (stockai.es): inventory and purchasing SaaS for Latin American businesses — up to nine forecasting models compete for every product, scored by what a mistake costs, and turn into daily reorder signals on supplier lead times learned from real deliveries.
    • WorkforceAI (workforceai.es): AI agents that work in plain sight — an LLM plans each request as a dependency graph, while the backend validates every tool call, reserves cost before each model call and holds sensitive actions for human approval.
  2. Photon Rush

    Jul 2026 — Present

    ML / AI Consultant — part-time

    • Part-time consulting alongside StockAI and WorkforceAI: designing a multi-model system that detects "sharp" bettors for a sports betting platform, giving the risk team levers like limits and line adjustments.
    • Feature engineering on wagering behavior — bet timing, stake concentration, closing line value — plus a SHAP + LLM layer that explains every flagged account in plain language.
  3. Softtek — Walmart Vendor

    Mar 2026 — May 2026

    Data Scientist

    • Built end-to-end demand forecasting for Walmart's agricultural supply chain across distribution centers, retail demand and supplier constraints.
    • Shipped LSTM, ARIMA, ETS and Croston models on GCP/BigQuery/Vertex AI, and deployed MCP-based agentic AI for the Célula GenAI team.
    • Contributed to shrinkage-detection work addressing an estimated $8M in annual losses in Costa Rica.
  4. Accenture

    Aug 2024 — Feb 2026

    App Automation Senior Analyst · ML Engineer

    • Architected reverse supply-chain ML for HP, Philips and Cisco — delivery-time forecasting, bottleneck detection, cost prediction.
    • Ran production MLOps on Azure ML, MLflow, Docker, Kubernetes and AKS, exposing models through FastAPI/Flask services.
    • Built GenAI systems with GPT-4, LangChain, LangGraph, CrewAI and RAG on Pinecone/FAISS/ChromaDB.
  5. TeamArt Outsourcing

    Jan 2023 — Aug 2024

    Full-Stack Developer

    • Delivered enterprise web and mobile apps in Angular, React, React Native and Node.js/TypeScript.
    • Built microservices with AWS Lambda, PostgreSQL and Domain-Driven Design for construction and e-commerce clients.
  6. Fiverr, Upwork & Workana

    Aug 2020 — Jan 2023

    Freelance Full-Stack Developer

    • Delivered full-stack solutions for international clients using React, Angular, .NET Core, Node.js and Django.
    • Designed relational databases and shipped Docker-containerized deployments end to end.

The field guide

Skills & tools

Forecasting & ML
Time Series ForecastingLSTMProphetARIMAETSCrostonRandom ForestGradient BoostingTensorFlowKerasScikit-learn
Agentic AI & GenAI
GPT-4 / GPT-4oClaudeRAGLangChainLangGraphCrewAIAutoGenMCP ServersPineconeFAISSChromaDB
Cloud & MLOps
GCP · Vertex AIAzure MLAWSDockerKubernetesAKSMLflowCI/CDAzure DevOps
Data Engineering
BigQueryDatabricksPostgreSQLSQL ServerMongoDBETL Pipelines
Programming
PythonSQLTypeScriptJavaScriptC# / .NET

01 — Project

Founder & creator

StockAI

What to order today, how much, and from which supplier

StockAI is an inventory and purchasing-decision SaaS for Latin American retailers, distributors and manufacturers who manage hundreds or thousands of SKUs without a data team. It reads sales history and current stock, and every day tells you which products are about to run out, how much to order given each supplier's real lead time, and where capital is sitting idle in overstock.

I created StockAI — the idea, the brand and the product — and I build it end to end, from the forecasting engine to the interface.

Under the hood, up to nine forecasting models compete for every product — LightGBM, XGBoost, ARIMA, SARIMAX, Prophet, ETS, Croston, an LSTM network and a global model trained on the whole catalogue. Each product is first classified as stable, seasonal, intermittent or volatile, and only the families that suit its pattern enter the race. That is the advantage over a spreadsheet rule: a slow-moving spare part and a seasonal best-seller are no longer forced through the same formula.

Every candidate is backtested on a hidden tail of the history, across several cuts and over the whole buying horizon, and scored by what a mistake costs — running short weighs three times more than overstocking. The winner has to beat two naive forecasts before it is trusted, and it comes back with a likely-sales range rather than a single number. Days when the shelf was empty are flagged and the lost sales estimated, so a stockout is never learned as falling demand, and local holidays and calendar effects go in as features.

Then the forecast becomes a purchase. From the third delivery on, reorder points use the lead time each supplier actually took, and safety stock — set from the service level you choose — grows when a supplier delivers irregularly. The AI analyst answers in plain Spanish and explains the numbers, but the quantities always come from the engine, never from the chat. Data comes in from CSV or Excel, Postgres or MySQL, and goes out through a read-only API, an MCP server and webhooks.

  • Daily signals — "Pedir YA", "Pedir pronto", "OK", "Sobrestock"
  • Supplier lead times learned from real deliveries
  • Multi-warehouse with transfer suggestions
  • Scenario simulator before committing cash
  • AI analyst you can ask in plain Spanish
  • Daily at-risk summary by email and WhatsApp
Visit stockai.es ↗

02 — Project

Founder & creator

WorkforceAI

Your AI team, in plain sight and under control

WorkforceAI is a virtual office for AI employees — Sales, Legal, Accounting, Analysis, Operations, HR and an Assistant — built for small teams and Spanish-speaking professionals. You ask for work in a sentence; the Assistant splits it into tasks with dependencies, runs whatever is independent in parallel, and hands back a report of what was done and what it cost.

Most AI agents work behind closed doors. Here the model proposes and the backend decides: agents can request an approval but never grant one, every request shows a cost range before it runs, and the caps you set are enforced server-side.

The LLM does the part language models are good at: understanding a request and planning the work. It breaks a sentence into tasks that declare what they depend on; the backend validates that graph — duplicate keys, unknown or circular dependencies, maximum depth — runs it, and replans a failed task on its own instead of restarting the whole job. The advantage over a single chatbot is specialisation with oversight: each employee has its own tools and autonomy level, and every step is visible.

Everything else is enforced by code, not by the prompt. A tool call comes back from the model as a proposal — tool, action, risk, arguments — and the backend checks it against the agent’s tool list, the policy rules and the autonomy level before anything runs; irreversible actions such as sending an email always wait for a person. A cost range is estimated without calling the model, the maximum is reserved before each call against the request, the agent and the organization, and above a threshold a person confirms first.

It runs on any provider with your own key — DeepSeek, Claude, OpenAI, Kimi or any OpenAI-compatible endpoint such as vLLM or Ollama — with keys sealed in AES-256-GCM. Outside text is masked, scored for prompt injection and wrapped as untrusted data, and the agent runtime (Python, FastAPI, CrewAI) talks only to the model provider, never to the database. Around it: a Go backend, a Next.js and React Three Fiber front end, and Postgres with row-level security.

  • 3D office — who is working, who is consulting whom, who is waiting on you
  • Per-employee autonomy — suggest, approve each action, rules, autonomous
  • Spend caps per request, per employee and per organization
  • Kill switch, read-only mode, pause one employee or one tool
  • Append-only, hash-chained audit log you can export and verify
  • Keys in an AES-256-GCM vault the model never sees

Early access. The public deployment runs in simulation mode — scripted answers, no network, no cost; live models run on your own key and have been tested less. No pricing, certifications, SAML or live third-party connectors yet.

Visit workforceai.es ↗

03 — Project

uNOS

Universal Neural Operating System

A hardware-agnostic layer that sits between any neuroimaging device and any effector, behind one contract: raw signal in, structured intention out — the way Android decoupled the app from the handset.

Its most inconvenient finding is for the whole field: across 22 subjects and three public datasets, no decoder wins. The gap between people (14–15 accuracy points) dwarfs the gap between competing algorithms (1.6 points) — so the real advantage is being able to switch decoders per person, not picking a "best" one.

10.5 ms
p50 end-to-end latency (p99 13.6ms)
0 / 600,000
samples lost, 10-min endurance run
3 of 4
own drivers failed conformance on first run

v0.1 — proven on simulated devices and public recordings, not yet on real hardware or with an outside integrator.

View source ↗

04 — Project

FastDNA

A genomic k-mer counter, written in Rust

Every genomics pipeline starts by counting k-mers — the short DNA fragments a genome is built from. FastDNA reads raw FASTQ files, counts in parallel across every CPU core, and hands the result to Python as a zero-copy Arrow table — no serialization tax between the systems language and the notebook.

Pure Python (stdlib)
88.13s
FastDNA — 8 threads
1.99s

Same 30,000,000-base FASTQ file, quality trimming included in the FastDNA run.

44–63×
faster than a Python k-mer counter, 8 threads
exact match
against KMC3's k-mer counts on real E. coli sequencing data
2.4×
faster after a diagnosed, publicly retracted and fixed benchmark

Not yet published to PyPI — build from source today. Still behind dedicated counters like KMC3 at the largest scale tested; ahead by 1.38× on the one real-world workload measured head-to-head.

View source ↗

05 — Project

Science

A compiled language for scientific computing, and its compiler

A side project in language design: fourteen Rust crates that take a source file from lexer to native binary through LLVM. It keeps Rust-style ownership with no garbage collector, but infers regions instead of asking for lifetime annotations.

2,173 tests green
none failing, none ignored
14 Rust crates
from source text to object code, one stage each

About

Mathematics, science and markets — the same obsession.

I grew up in San José taking apart whatever had a circuit board, mostly because I wanted to understand what was happening underneath. That curiosity never really went away; it just kept finding more complicated things to take apart.

Over the last few years, I've become increasingly interested in the places where mathematics, computation and the physical world overlap. Mathematics is the part I never get tired of — the moment an equation turns out to describe something real still feels a little like magic. Statistics and production engineering were my way into that world, particularly through problems where uncertainty, complex systems and imperfect information have real consequences. But the more I learn, the less interested I am in staying inside one discipline.

Markets are one of my favourite of those problems. Fintech and quantitative finance are where probability stops being an exercise and starts costing or saving real money: pricing risk, reading behaviour in noisy data, deciding under uncertainty with a clock running. It's why I founded StockAI, where every purchase order is a bet on demand placed with real working capital.

Lately, a lot of that curiosity has been moving toward bioinformatics, genetics and computational biology. There's something fascinating about treating biological systems as information systems: sequences as data, evolution as a process that leaves statistical traces, and genomes as enormous structures that we can only begin to understand by combining algorithms, probability and computation. I'm especially interested in the computational side of genetics — how relatively simple algorithms and statistical ideas can be used to extract structure from biological data at a scale where intuition alone stops being useful.

That interest has also pulled me toward neuroscience, brain-computer interfaces and the broader question of how biological systems encode information. I find myself naturally moving between subjects that, on the surface, have very little to do with each other: mathematics, statistics, machine learning, genetics, neuroscience, physics, finance and complex systems. What connects them for me is the same underlying question: how can we use mathematics and computation to understand systems that are too complex to understand by looking at them directly?

I like learning by going down the rabbit hole. If something catches my attention, I want to understand not only how to use it, but why it works, what assumptions it makes, where it breaks, and what exists underneath it. That is probably why I've always been more drawn to fields where there is still a lot left to figure out.

I'm not particularly interested in collecting technologies or disciplines for the sake of having them on a résumé. I'm interested in understanding things deeply enough that I can eventually connect ideas that normally live in separate worlds.

Right now, bioinformatics and fintech are the worlds I'm most curious to explore — and I want to be among the people building the technology the next decades will run on.

Subjects I keep moving between
  • Mathematics
  • Statistics
  • Machine learning
  • Fintech
  • Quantitative finance
  • Genetics
  • Neuroscience
  • Physics
  • Economics
  • Complex systems
  • Bioinformatics
  • Computational biology
  • Brain-computer interfaces
  • Frontier tech

Education

  • Computer Engineering Universidad Hispanoamericana — final year
  • Computer Engineering Tecnológico de Costa Rica — 2 years completed

Languages

  • Spanish native
  • English professional

Based in

  • San José, Costa Rica open to remote & hybrid roles

Closing

Written
the long way

A mathematics course, in Spanish, written from scratch

A course rather than notes. It starts at the bottom of its subject — the axioms of set theory — and assumes no chapter before it was skipped. A first edition, self-published, and not peer-reviewed.

De la realidad a la abstracción

Curso completo de matemática universitaria — del cálculo a la teoría de categorías

Logic and set theory, number theory and cryptography, calculus, linear algebra, multivariable and vector calculus, probability and statistics, abstract algebra and analysis — building all the way up to category theory.

2,080
pages written and typeset
38 chapters
set theory → category theory, in six parts
903 theorems
numbered, and 468 exercises

Auditing it found the real defect to be order, not gaps: about two thirds of the 903 numbered statements are proven somewhere in the book, but often hundreds of pages from where they are used — Bayes is stated on p. 240 and proven on p. 928, the Lebesgue criterion on p. 312 and p. 1556. Roughly a hundred are never proven at all, and the summit chapters (algebraic geometry, algebraic topology, categories) run about 25 pages each. A companion volume now supplies the missing proofs; a second edition is being restructured chapter by chapter.

Read (PDF) ↗

Paper

Cauce

Topic-delegable liquid democracy with reputation-weighted delegates

A vote you can lend one subject at a time, to someone whose record you can check.

Majority rule counts an epidemiologist’s ballot and a ballot cast on a belief the evidence has already ruled out as carrying the same information, because both count as one. Representative democracy answers that by bundling every subject into a single agent for years at a time. Cauce sits between them: a citizen delegates per policy area, keeps the right to override a delegate on any single bill, and — the part that is new — chooses whom to trust beside a published, falsifiable, Brier-scored track record rather than beside a follower count. The paper states the delegation-resolution algorithm formally, proves it terminates, and measures what that reputation signal is and is not worth.

What the simulations say

99.6% / 65.4% / 0%
correct outcomes when the unaffiliated population averages 0.35 competence — reputation-weighted delegation, popularity-driven delegation, and direct voting, in that order
the knife-edge
direct democracy’s accuracy collapses inside a narrow band around 50% population competence, exactly as the Condorcet Jury Theorem predicts. Delegation smooths it
the cap is not the point
capping any one delegate’s weight controls concentration of power and is, on its own, largely orthogonal to accuracy — it is the reputation signal that does the epistemic work
× (1 − shock)
on a bill where a correlated blind spot fools every participating voter, no rule can be correct and every method loses the same factor. A 5% shock probability already costs several points nothing can recover

And what is proven rather than measured

  1. Proposition 1 — an override replaces the delegation for that one bill and leaves the standing one untouched.
  2. Proposition 2 — the weight cap can be applied exactly, independently of ballot content, which is also what makes the large sweeps tractable.
  3. Proposition 3 — path resolution always halts, cycles included.
  4. Proposition 4, Corollary 1 — under a correlated blind spot no rule can be correct, and every rule loses accuracy by the same multiplicative factor.

Synthetic populations, not a deployment. Nine hand-built unit tests check one rule at a time, and a vectorized implementation is cross-validated against a literal one over 300 bills to within 1e-6 — a check that earned its keep by catching a bug that had collapsed many independent voters into a single correlated coin flip. What none of it can tell you is whether a real electorate errs independently, and that assumption is what the whole protective result rests on.

Read the paper (PDF) ↗