Software engineer · San José, Costa Rica

I build the systems businesses run on, and the AI agents on top of them.

Twelve years across software, marketing and operations. Today: lead engineer for a US online gaming operator and Odoo consultant to small and mid-size companies in Costa Rica. I've also run a hotel, so I care as much about the person at the front desk as about the API.

Victor Espinoza
8
companies run on systems I implemented
~22
ERP instances in production
52
custom Odoo modules shipped
7
years building on Odoo
12
years in tech, marketing and operations

What I do

For companies that need it built and running, and for teams hiring an engineer who has done it.

Mobile apps

React Native apps I built end to end, on Odoo back ends. Tap a screen to enlarge.

Lapa Concierge

Guests book vehicles, transfers and tours in Nosara; staff run it in Odoo.

iOS & Android · Expo SDK 57

  • React Native
  • Expo Router
  • Odoo 19 API
  • TiloPay
  • Google / Apple sign-in

Ottoya

Neighborhood commerce: order from local stores, subscribe to recurring deliveries, ask Otto.

iOS · Expo SDK 54

  • React Native
  • Odoo JSON-RPC
  • TiloPay
  • Lightning
  • AI assistant

Clara

A legal AI assistant for Costa Rica, grounded in 80,907 official legal texts.

iOS · Expo SDK 54

  • React Native
  • Odoo back end
  • Claude
  • RAG
Project details →More screens coming.

Work

Platforms and agents for clients, ERP systems for eight companies, and the products and brands I run myself. Filter by area.

Odoo modules I've built

52 custom modules on Odoo 13–19, from manifests on disk: registries, KYC, payments, e-signature, AI assistants, rentals, loyalty, mobile APIs.

  • Legal-entity registry

    Momentum

    Shareholders, share classes, powers of attorney, tax obligations with expiry alerts, dashboard, client portal and billing. 22 models, 19 routes.

    gestion_sociedades · v19.0.7.0.0

  • Appointment booking

    Momentum

    Client appointments with advisors from the portal: weekly calendar, JSON slot endpoints, video-call recording and Meet links.

    citas_momentum · v19.0.4.0.0

  • Atlas AI assistant

    Momentum

    A Claude bot inside Odoo Discuss that answers @Atlas mentions with ORM tools, plus ~24 REST endpoints for the mobile app.

    ai_momentum · v19.0.1.0.0

  • Hugo, public web assistant

    Momentum

    A public AI chat bubble (Claude) on the Momentum website.

    hugo_momentum · v19.0.1.0.0

  • WhatsApp Cloud API

    Momentum

    Send and receive WhatsApp messages from Odoo through Meta's Cloud API.

    whatsapp_momentum · v19.0.1.0.0

  • Portal messaging

    Momentum

    A chat channel per company between the Momentum team and its clients, inside the portal.

    mensajes_momentum · v19.0.1.0.0

  • Marketing operations hub

    Momentum

    Campaigns, brands and content operations on top of projects, timesheets and analytic accounting. 10 models.

    marketing_momentum · v19.0.1.2.0

  • Backend theme

    Momentum

    Momentum branding for the Odoo back office.

    momentum_backend_theme · v19.0.1.0.0

  • PDF report layout fix

    Momentum

    Makes the bubble report layout render correctly in PDF with inline styles.

    web_bubble_layout_fix · v19.0.1.0.0

  • Payment auto-reconciliation

    Momentum

    Marks invoices as paid when a payment is validated, without bank reconciliation.

    momentum_payment_autoreconcile · v19.0.1.0.0

  • Commission pricing

    Momentum

    Public price vs. commission price for sales through intermediaries: per-product %, internal and client PDFs, a commission report and a data migration.

    momentum_commission · v19.0.1.0.0

  • Support tickets

    Momentum

    A portal helpdesk: 7 models, attachments, notifications, role-based access, 49 automated tests. Brief to production in two days.

    momentum_support_ticket · v19.0.1.0.0

  • Legal CR

    Momentum

    A corpus of Costa Rican legal texts inside Odoo, connected to the AI assistant, with a public /legal/chat.

    legal_cr · v19.0.1.0.0

  • Knowledge base

    Momentum

    An internal wiki and documentation portal, later used for Semilla's FAQ.

    knowledge_base · v19.0.1.0.0

  • Clinic records

    Momentum

    Patient records with SOAP-style notes, fields for osteopathy and Chinese medicine, appointments and a patient portal.

    expedientes_momentum · v19.0.1.0.0

  • Semilla KYC

    Semilla

    A 5-step portal wizard for individuals (KYC) and companies (KYB) with nested beneficial-owner trees, documents, wallets and versioned re-validation.

    semilla_kyc · v19.0.2.0.0

  • KYC (earlier version)

    Semilla

    The first KYC module for individual and business users, later replaced by Semilla KYC.

    ada_semilla_kyc · v1.1.0

  • Invitation-only onboarding

    Semilla

    Sign-up by invitation with two manual approvals.

    ada_user_registration · v1.0

  • Semilla registration

    Semilla

    Registration via invitation only for the Semilla portal.

    semilla_user_registration · v19.0.1.0.0

  • Telegram gatekeeper

    Semilla

    Admits members to the private Telegram group only after they sign the agreements; each signature is recorded in Odoo.

    semilla_telegram_bot · v19.0.1.0.0

  • Tali AI assistant

    Semilla

    Semilla's Claude-powered assistant.

    ai_semilla · v19.0.1.0.0

  • Investment ledger

    Semilla

    A public transparency ledger of Semilla investments.

    semilla_investment · v19.0.1.0.0

  • Membership pricing

    Semilla

    Member tiers with automatic pricelists and a daily exchange rate from the central bank.

    semilla_pricing · v19.0.2.0.0

  • DEX front end

    Semilla

    MetaMask connection and ethers.js for the Semilla token.

    ada_dex_semilla · v19.0.1.0.0

  • DEX v2: mint + order book

    Semilla

    Native minting and a peer-to-peer order book whose price moves with buy/sell pressure inside a corridor.

    semilla_dex_v02 · v19.0.2.0.0

  • SEM Payment provider

    Semilla

    On-chain payments with the SEM token on Avalanche C-Chain: a payment provider, /payment/sem routes and an ethers.js checkout.

    sem_payment · v19.0.1.0.0

  • Bitcoin Lightning payments

    Semilla

    A payment provider for Lightning payments through a self-hosted BTCPay Server.

    payment_btcpay_lightning · v19.0.1.0.0

  • Crypto gateway payments

    Semilla

    USDT, BTC and ETH payments through a gateway with webhooks.

    payment_crypto_gateway · v19.0.1.0.0

  • TiloPay payment provider

    Ottoya

    Card payments through TiloPay, a Costa Rican gateway; used by Ottoya, Lapa and client stores.

    payment_tilopay · v1.0

  • Native e-signature

    Ottoya

    Ordered signers with a gating hook, canvas signature capture, SHA-256 document hash, IP and user-agent evidence, an append-only audit log and a certificate PDF. Community-edition native.

    ada_sign · v19.0.1.0.0

  • KYC/KYB compliance

    Ottoya

    Identity verification with immutable consent records (agreement version, text hash, IP). 8 models.

    ada_compliance · v19.0.1.0.0

  • Investment contracts

    Ottoya

    Investor signs first; the company signs only after identity approval and a confirmed payment. The contract takes effect on the payment date.

    otoya_investment · v19.0.1.0.0

  • Ottoya mobile auth

    Ottoya

    Registration, email verification and authentication for the Ottoya app.

    otoya_auth · v1.0

  • Ottoya multi-store

    Ottoya

    Multi-store support for the Ottoya app, built on TiloPay.

    otoya_store · v1.1

  • Product requests

    Ottoya

    Requests for products not yet in the catalog.

    otoya_product_requests · v1.0

  • Subscriptions

    Ottoya

    Recurring orders and subscriptions for Ottoya.

    otoya_ecommerce_subscriptions · v19.0.1.0.0

  • Lapa core

    Lapa Concierge

    Catalog, vehicle rental, tours, transport and service requests. 13 models, 50 tests.

    concierge_core · v19.0.1.1.0

  • Lapa mobile API

    Lapa Concierge

    The JSON API used by the Expo app: scoped API keys, Google and Apple sign-in, row-locked bookings. 24 tests.

    concierge_api · v19.0.1.1.0

  • Lapa notifications

    Lapa Concierge

    Push (Expo), email and SMS notifications for the app.

    concierge_notify · v19.0.1.1.0

  • Lapa theme

    Lapa Concierge

    Colours, fonts, logo, favicon and login page for the Odoo back office.

    concierge_theme · v19.0.1.0.0

  • Street Dog Society (Apple Wallet)

    La Caliente

    Loyalty points as an Apple Wallet pass on top of Odoo Loyalty: PassKit web service, APNs live updates, Google Wallet JWT, member ranks.

    lacaliente_rewards · v19.0.1.0.0

  • POS combo popup

    La Caliente

    A Solo/Combo choice popup at the register.

    pos_lacaliente · v19.0.1.0.0

  • La Caliente website blocks

    La Caliente

    Website builder blocks for La Caliente.

    website_lacaliente · v19.0.1.0.0

  • Excel product import

    Aurelia

    Imports supplier catalogs from Excel, mapping each embedded picture to its row through the spreadsheet's drawing XML.

    aurelia_product_import · v19.0.1.0.0

  • Aurelia operations dashboard

    Aurelia

    An operations dashboard for the jewelry store.

    aurelia_dashboard · v19.0.1.0.0

  • Vehicle rental

    Rentals & bookings

    A rental system for ATVs, e-bikes and scooters.

    vehicle_rental · v19.0.1.0.0

  • Vehicle rental website

    Rentals & bookings

    A multi-step booking wizard on the website.

    vehicle_rental_frontend · v19.0.1.0.0

  • Rental management platform

    Rentals & bookings

    Rentals of vehicles, tools and equipment.

    rental_management · v19.0.1.0.0

  • Rental website

    Rentals & bookings

    A multi-step booking wizard for the rental platform.

    rental_frontend · v19.0.1.0.0

  • Hotel booking front end

    Rentals & bookings

    A booking front end for a hotel client.

    hotel_booking_frontend · v19.0.1.0.0

  • Appointment website snippet

    Rentals & bookings

    Lets visitors book appointments through a website snippet.

    appointment_booking · v1.0

  • Hot-dog delivery

    Rentals & bookings

    Online ordering with a delivery location pin on a map.

    hotdog_delivery · v19.0.1.0.0

About

Twelve years across software, business systems, marketing and hands-on operations. I've been a web developer, a head of marketing, a hotel general manager, a CTO and, for the last two years, the person who owns the technology of an incubator and its portfolio companies.

Today I'm the lead engineer (and marketing manager) for an online gaming operator, where I built its outreach platform, made it a multi-tenant SaaS, and put AI voice and chat agents on live lines with the guardrails that work requires.

I work AI-first: Claude Code multi-agent workflows to build and review, and test suites, security reviews and staged deploys to decide what ships. I choose models and architectures by measuring, and I've shelved my own work when the numbers said so.

Native English and Spanish. Based in San José, Costa Rica (UTC-6), open to remote work.

Stack

Languages
JavaScript / TypeScript (Node 22), Python, SQL, Kotlin, PHP, Solidity, Bash
Backend & ERP
Node.js, Express, REST & webhooks, SSE, WebSockets · Odoo 13–19 (all standard apps, custom modules, migrations)
Frontend & mobile
React, Next.js, Astro, Tailwind · React Native / Expo · Electron
AI
Claude API & Claude Code, OpenAI, Gemini / Veo, Grok · tool-calling agents, RAG, voice agents (Retell, LiveKit)
Infrastructure
Docker, nginx, Caddy, systemd, DigitalOcean, Cloudflare Workers / R2, GitHub Actions, zero-downtime deploys
Messaging & payments
Telnyx, SIP / Asterisk, Android SMS gateways, WhatsApp, Postfix / DKIM · TiloPay, BTCPay, Apple / Google Wallet

Let's talk

Remote roles as a forward-deployed, solutions or senior full-stack engineer, and Odoo projects.