SWE @ Bending Spoons (WeTransfer) · Lead Engineer @ Sail · Madrid

Building the intelligence
that moves capital.

Software Engineer at Bending Spoons, on the WeTransfer team. Lead Engineer at Sail, where I founded the intelligence layer — a cross-chain yield engine and a real-time risk system with $700M routed across Base and Arbitrum — and now own the whole stack: an onchain protocol live on 12 chains, an open-source agent harness, and the Python services behind them.

Onchain protocols Quantitative DeFi Risk monitoring Cross-chain optimization Applied ML
~$700M
routed in 6 months
~200
users served
~$600k
TVL · Base + Arbitrum
2 + 2
papers · reports
Bending Spoons · Aug 2026 — present

Software Engineer on WeTransfer.

I joined Bending Spoons as a Software Engineer on the WeTransfer team — file transfer and collaboration used by tens of millions of people. More here as I ship.

Sail Protocol & Sailor · Lead Engineer · 2026

Onchain accounts an agent can drive. Within bounds.

Letting an autonomous agent move real money is a custody problem before it is an ML problem. Sail Protocol is our answer: capital never leaves a Safe the user owns, and a mandate — a set of contracts the user deploys — is checked by the kernel on every single transaction. The agent holds no key and can do nothing the mandate does not explicitly allow. Sailor is the open-source harness that makes building one of those agents a conversation with your coding assistant.

01 deploys & owns Owner holds the Safe · self-custody Manager the agent · holds no key Mandate IPermission contracts Sail Kernel staticcall · gas-capped selective authorization fail-closed SMA owner-controlled Safe holds the assets 02 appoints 03 signs mandate 04 dispatch 05 bounds 06 executes
Every dispatch is evaluated against the mandate before a single wei moves — anything outside it reverts. The manager is revocable instantly; the mandate is signed over EIP-712.

01 What the kernel guarantees

staticcall

Permissions are evaluated through staticcall, so a permission contract physically cannot mutate state or re-enter. Reentrancy is not defended against — it is made impossible by the calling convention.

gas cap

Evaluation runs under a fixed cap — 150,000 gas for a single evaluate, 1,000,000 for a batch. A permission that tries to burn gas to force a pass is treated as a denial.

selective authorization

Only the one permission named in the manager's signature is consulted, so unrelated templates coexist on the same account without falsely denying each other.

fail-closed

Any revert, out-of-gas, malformed return value, or plain false denies the dispatch. The only path to execution is an explicit, well-formed true.

~1,022nSLOC trusted core
12chains · identical addresses
7permission templates
42Solidity test suites
48hgovernance timelock

Why the size matters. The trusted core — kernel, governance, timelock, factory, fee policy, module enabler — is everything an account must trust to use Sail at all. At ~1,022 nSLOC it is small enough for one person to read end to end in an afternoon, which is the point. The permission templates sit outside that boundary: they are demonstrations of the pattern, and you only trust the ones you choose to register. Reviewed by Octane across three analyses; deployed via CREATE2 at identical addresses on all 12 chains, governed behind a 48-hour timelock with a 3/5 admin Safe.

02 Sailor — the harness

Say start in an empty folder and any AI coding agent — Claude Code, Cursor, Codex — walks you to a running DeFi agent. Five stations, end to end:

ArriveSet up your self-custodial SMA
StrategyDefine what the agent does
MandateThe onchain bounds it runs inside
AgentBuild the tick loop
SailLaunch and operate, locally

Under it: an SDK with an encrypted keyring, EIP-712 signing and dispatch submission; a CLI covering the whole lifecycle from init to run; a local dashboard for balances, mandate health and owner signing; and 22 agent skills that any coding agent reads natively, so every project follows the same verified path. Around it, Shipyard (an anvil-fork lab for paper-trading a mandate before it touches real money) and Dock (a community registry of shared agent projects).

Sail · Nov 2024 — present · Lead Engineer since Mar 2026

Two production systems. One intelligence layer.

I founded the intelligence layer at Sail — a DeFi yield-optimization protocol on Base and Arbitrum — from a blank page, and led a team of two engineers building it. Since March 2026 I’m Lead Engineer, owning technical direction across the full stack: the Solidity protocol, the open-source TypeScript harness, and the Python services. I also defined the database schema and built the first user-facing UIs.

Optimization Engine

Cross-chain allocation as a constrained MDP

Non-convex objective (yield, transaction cost, slippage, concentration risk) solved with simulated annealing under Metropolis-Hastings acceptance. A CNN meta-controller predicts annealing hyperparameters from APY/TVL history, cutting parameter search 3–5×.

Sonar

Real-time risk monitoring

z-score anomaly detection over multi-horizon APY baselines (1d / 7d / 30d), dual-mode SPIKE / TREND scoring (80/20 vs 40/60), tier-based execution cycles (1h / 2h / 6h), and a financial-inertia mechanism that cut unnecessary portfolio churn by 43 %.

Leadership. Presented the intelligence layer to venture investors during fundraising rounds, owned the technical narrative for the engine and Sonar in those conversations, and led roadmap discussions with the CEO on direction and trade-offs.

01 The math behind allocation

Weighted portfolio APY APYp = Σi (USDi · APYi) / Σi USDi
Metropolis-Hastings acceptance P(accept) = min(1, exp(−ΔE / T)) where T cools on the schedule predicted by the meta-controller.

The full mathematical framework — formulation, proofs, and empirical validation — is documented in two public research papers I authored.

02 Sonar — anomaly score

Multi-horizon z-score zh(t) = (APY(t) − μh) / σh for h ∈ {1d, 7d, 30d}
Defensive wins · Q1 2026

Sonar suspended user exposure ahead of two publicly confirmed exploits — detection happened before public confirmation in both cases:

  • · Moonwell oracle exploit $1.78M bad debt, 181 borrowers harmed. Sonar flagged abnormal oracle behaviour on Moonwell's Base markets and suspended exposure before the scale of the exploit was publicly confirmed.
  • · Resolv Protocol exploit ~$80M USR minted via a compromised AWS KMS key, ~$25M ETH extracted, USR de-pegged to $0.003. Sonar detected unchecked-minting activity and suspended Resolv-exposed positions before USR's de-peg became publicly visible.

03 Production performance

All returns net of gas, bridge fees, slippage, and protocol fees.

quartermean APYvs. best staticvs. T-Billsscope
Q4 2025 8.91 % +5.43 % +123.87 % 20 sources, USDC + USDT
Q1 2026 6.06 % +6.03 % +44.3 % 32 sources, USDC + USDT, +EURC
Daily APY of the Sail agent vs. market median over Q1 2026, with the shaded area representing Sail's outperformance.
Q1 2026 — Daily APY: Sail agent vs. market median. Shaded area = outperformance.
Q4 2025 — Sail agent APY trajectory vs. all market sources.
Q4 2025 — Sail vs. all 20 active market sources, daily APY.
Earlier experience

Where I built the muscle.

  • Accelya — Software Engineer I · payments management application, full-stack · Java · C# · .NET · SQL · Dec 2023 – Nov 2024
  • Career break — international travel and industry exploration. Post-graduation trip across South Korea and the U.S. West Coast (San Francisco, Cupertino, Stanford, Berkeley); met engineers at Apple and Berkeley alumni while visiting family. · Jul – Nov 2023
  • Deloitte — Technology Strategy & Transformation intern · market research and analysis for technology clients in the data division · RapidMiner · Dataiku · Alteryx · Mar – Jun 2023
  • European Union Agency for Railways — software engineering intern · SHACL shapes for knowledge-graph validation in the EUAR maps app, plus a web dashboard for validation reports · SPARQL · SHACL · RDF · Winter 2022/23
Selected projects

Things I built because I wanted to.

optcg — investment portfolio tracker Python · SQLite · Textual TUI · ~6.8k LOC · 2026 github ↗

CLI + TUI portfolio tracker for One Piece TCG (cards, sealed boxes, graded slabs). Live price scraping from CardMarket and eBay with a Cloudflare-aware cookie pipeline that decrypts Chrome / Arc / Brave / Edge cookies on macOS and Windows via each platform's keychain. Offline self-contained HTML dashboard, iCloud sync, P&L per item, receipt management.

optcg — Textual TUI showing live P&L across 70 items, per-card detail panel with trend history
Poker Vision Python · PyTorch · OpenCV · 2023 UPM publication ↗ github ↗

Three-module computer-vision system: image acquisition with noise removal, VGG16-based card recognition, and a Monte Carlo equity simulator. High recognition accuracy and realistic two-player simulation. Documented in the official UPM publication.

Poker table — original camera capture Detected card contours Recognition + Monte Carlo equity simulation overlay
Figbot — Twitch moderation bot Java · Multi-agent system · 2022 github ↗

Multi-agent system that assists streamers with chat moderation. Blacklist-based banning, bad-language ratio analysis for timeouts, and a GUI for streamers and mods to review the automated decisions.

Figbot — operator menu Figbot — live Twitch chat moderation
Data Center design Research project · UPM · 2022 · Honors

Group research project: complete data-center design for an online video-editing platform — rack layout, electrical plans, cooling and air-flow design. Matrícula de Honor.

JavaScript-PDL Compiler Java · 2021 · Honors github ↗

Compiler for a JavaScript subset. Lexical, syntactic, and semantic analysers; symbol table; error recovery and warnings. Matrícula de Honor.

+ Earlier work

  • Ecomobility — Semantic Web · Madrid bike + EV charging points published as RDF (OpenRefine, RML mappings) · Autumn 2022
  • Reactify — React + Spotify API · Winter 2022
  • Distributed Systems Broker — pub/sub broker in C, persistent subscriptions · Winter 2021/22
  • Bank Fraud Detection Middleware — Java JMS, concurrent middleware · Winter 2021/22
  • Personal Shell — C / Bash; lexer, parser, multi-process pipelines · Winter 2021
  • Sokoban — Java MVC with XML level persistence · Spring 2022
  • Black & White Filter — Assembly MC88110 · Winter 2020/21
Education

Universidad Politécnica de Madrid · 2019 – 2023

B.S. Computer Science · GPA 8.56 / 10. Matrículas de Honor in Operating Systems, Compilers (Procesadores de Lenguajes), Semantic Web & Knowledge Graphs, Art of Programming, Prolog, Programming Project, Data Center Project.

Coursework: Algorithms & Data Structures · AI · Machine Learning · Distributed Systems · Middleware · Concurrency · Probability & Statistics · Computer Networks · Security · Numerical Algorithms · Competitive Programming · Quantum Computing.

Contact

Let's talk.

Not looking for a new role right now — but always up for a good conversation about onchain protocols, quantitative finance, applied ML, or anything you think I’d find interesting.