costs cut at Expat Money
the AI function
on WCP V5
AI systems you can leave on without babysitting.
Built for work where wrong answers are expensive.
Applied AI Reliability Engineer. You can stop watching a system when it checks itself: deterministic code decides before the model speaks, retrieval answers from your own data or refuses, risky actions wait for an approval bound to that exact action, and evals catch what quietly broke before it ships. Each piece ships with tests you can re-run.
What I help with
Coding agents you can let run
Claude Code set up for your repo: project instructions, permissions, hooks that block what shouldn't happen and run your checks, MCP connections and guardrails.
AI-built apps that keep breaking
Your app works in the demo; I make it hold up in production. A written audit of what breaks and what to fix first, then fixes, each with a test so it stays fixed.
RAG and agents that cite, refuse and hand off
Instead of guessing, with evaluations that catch regressions before your users do.
Fixed prices and written scope, through Upwork. Open to remote applied-AI roles, full-time or contract.
Proof
Six public, MIT-licensed systems, each with tests you can run yourself and a verification record that says what it proves and what it doesn't.

WCP-Compliance-Agent-V5
Checks decide; the LLM explains.
377 tests, including evals over 100 golden examples; checksum-verified evidence.
Five-service WH-347 payroll compliance platform: deterministic validation decides, the LLM explains, and unverified wage coverage goes to human review instead of approval.
Project pageGitHub
groundtruth
It cites, or it refuses.
331 API + 62 web tests; real-HTTP workflow and restart checks.
RAG application that cites every answer and refuses what its sources can't support: hybrid retrieval, versioned documents, human review.
Project pageGitHub
evalforge
It tells you what broke.
358 Python + 36 frontend tests.
Regression gate for RAG and agents that catches answers which look right but cite the wrong evidence, with pass / fail / indeterminate release exits.
Project pageGitHub
aria-agent
It stops itself.
360 Python + 64 frontend tests.
Agent harness whose approvals bind the exact action, with execution tracing and a Claude Code setup fixture (permissions, blocking hooks, independent verifier).
Project pageGitHub
policydesk
Code decides; responses are validated.
Offline sandbox and opt-in local OpenAI workflow.
Policy sandbox with deterministic refund rules, synthetic replay, simulated approvals, and opt-in local OpenAI testing. OpenAI integration implemented; live verification and empirical results not yet performed. Fictional data; approvals remain simulated.
Project pageOpen sandboxLocal OpenAI setupClean-install verificationGitHub
llm-gateway
One control point for spend and failover.
177 backend + 41 dashboard tests.
LLM proxy with routing, guardrails, atomic per-key budgets, and failover across OpenAI, Anthropic, Gemini, and Ollama.
Project pageGitHubThese are portfolio systems with sample data. PolicyDesk has a static synthetic-data sandbox; no live model or financial backend is hosted. Each project page has its walkthrough, verified results and limits.
Also in the catalog: agenttrace, the tracing SDK, collector and dashboard.
Why it holds up
Three and a half years of production AI
AI Lead at Expat Money (Jun 2022 – Nov 2025): created and led the AI function from zero, cut AI-for-content costs 90% (a $200/month tool replaced by a $20/month one) and halved content production time. Then Founding Engineer at Zap Viagens (Jun – Oct 2026): privacy-first AI products on self-hosted open-source models.
Everything public, built in the open
Every project shown here is public. Every project page links to source. You can inspect the code, the tests, the architecture.
Measured, not claimed
Every lead project ships with tests or evals you can run yourself: deterministic validation, refusal behavior, regression suites, run traces.
Games
The first code I ever wrote was a game mod, at 11. Gaming led to modding, modding led to ROM hacking and reverse engineering, and that led to game development proper. Thousands of hours across design theory and building, none of it professional yet. This section is the bridge.
How I got here
Modding taught me to program, and I still build mods: material-progression rebuilds Minecraft's progression around geology and metallurgy because that's the game I wanted to play. My own ROM hacks and the tooling for them; the same skill set sits under my NDS reverse-engineering benchmark. Prototyping in Unity, Godot and Unreal. Level Up! and other design books, courses, a lot of developer channels, and Portal, the game I've studied most closely.
What I believe
A game is a business from the first day: monetization and marketing get designed in from the start, not bolted on at the end. Use every tool available, AI above all. And genre is not a wall: from MMORPGs to life sims to puzzle games, the systems underneath carry across.
What I bring
Game design and systems, the code that implements them, and the test design that proves they work. I'm not a visual artist: my games use code-drawn and AI-generated art and asset packs, and I've worked with human artists before.
Built for game-dev roles
Three small games, built with AI assistance to my brief and tested like production software. Each ships a task pack of planted bugs and feature requests, with briefs, acceptance criteria, reference solutions and checks that prove each task fails before the fix and passes after it.

recall
Arcade action: one blade that always comes back.
18 unit tests; 6 tasks verified fail → pass in headless Chromium.
Catch the blade after a hit to raise your multiplier; every kill inks the floor. Hitstop, screen shake, input buffering, synthesized sound. Its task pack: four planted bugs, two features.
Play on itch.ioProject pageGitHub
wick
Roguelike: the oil is the light, the light is the map.
18 unit tests incl. 1,800 generated floors; 3 tasks verified fail → pass.
Procedural floors, shadowcasting field of view, and Dijkstra-map AI: moths chase the light, shades flee it, hounds hunt by sound along the corridors. Pure rules module, tested in Node.
Play on itch.ioProject pageGitHub
thaw
Puzzle: twelve rooms and a solver that proves every one.
19 unit tests, all 12 levels re-solved at par each run; 3 tasks verified fail → pass.
Ice-sliding puzzles with crates, water and cracked ice. A breadth-first solver checks every par on every test run; levels found by a solver-driven search and picked by hand.
Play on itch.ioProject pageGitHubAll three play in the browser on itch.io. Also: game-systems-sandbox, a portfolio piece of seeded Monte Carlo balance simulators. I'm open to game-dev evaluation and task-design work, game design roles, and building my own games.
Writing
Long-form analysis, published.
Taste Is All You Need
Agent-harness economics: model intelligence is commoditizing, and the scarce complement is engineering judgment encoded into the environment around the model — why scaffolding beats model spend.
Read on XFind me
Profile for people and AI agents · Markdown
Same person on every surface. Start where you landed.