Skip to main content

Selected work

Case studies

A selection of platforms, applications, and infrastructure I've designed, built, and operated in production environments.

Beyond the case studies

More projects

Client platforms, own products, open-source tools, and experiments — the wider body of work behind the selected case studies.

Client work

ZeroHedge

Headless Drupal + Next.js platform for one of the highest-traffic financial news sites — tRPC data layer, Solr search, Stripe and PayPal subscriptions, video streaming, deployed on Kubernetes.

Next.jsDrupaltRPCKubernetesStripe
Client work

The Wealth Advisor

Drupal 11 platform modernization for a wealth-management publisher — PHP 8.4, Vite + Tailwind component system, HubSpot integration, Playwright, axe, and Lighthouse quality gates.

Drupal 11PHP 8.4VitePlaywright
Client work

Alaska Airlines Shoutouts

Peer-recognition platform for a 30K+ employee intranet — a Staffbase widget plus a Next.js + Supabase backend on GKE, with Gemini AI content moderation (fail-open, eval-gated), per-tenant JWT SSO, and an incremental user-directory sync engine.

Next.jsSupabaseGeminiKubernetes
Client work

Kitco platform

Financial-media platform for a high-traffic precious-metals site — Drupal 10 CMS and a Next.js frontend on GKE, composed from versioned shared Helm charts with Solr search and an in-chart Varnish caching layer (custom VCL + purge jobs).

Drupal 10Next.jsSolrVarnish
Product

Vertica

AI go-to-market intelligence SaaS — turns a product description into a structured GTM plan (ICP, positioning, messaging, SEO). Supabase backend, Stripe billing, LLM eval harness, Sentry and PostHog observability.

Next.jsSupabaseStripeLLM
Open source

Vexa Mail Insight

Self-hosted DMARC observability platform — ingests aggregate reports over IMAP and turns them into email-authentication security signal. Apache-2.0, Dockerized, full CI with accessibility tests.

Next.jsDrizzle ORMSQLiteDocker
Product

CaseGPT

Self-hosted RAG assistant that answers from a company's internal manuals — Supabase Edge Functions, OpenAI embeddings with reranking, Langfuse tracing, and an eval harness wired into CI.

ReactSupabaseOpenAIRAG
Product

InteliFactu

Multi-tenant SaaS that automates invoice processing for Spanish accountants — Tesseract OCR plus LLM extraction, content-addressed dedup and idempotent pipelines, and export into the Holded accounting system. Next.js, Drizzle/MySQL, BullMQ + Redis workers.

Next.jsDrizzle ORMOpenAIOCR
Product

DameTicket

Event ticketing platform running in production at dameticket.com — Laravel and Next.js, Redsys card payments, on-the-fly PDF tickets with embedded QR codes, and browser-based QR check-in at the door.

LaravelNext.jsRedsysMySQL
Product

Tienes La Vibra

Booking and ERP-CRM platform for artists and event services — a unified inbox holding persistent IMAP-IDLE and WhatsApp sockets, an SEO-hardened i18n public site, and a leads / bookings / quotes / invoices back office.

Next.jsDrizzle ORMIMAPWhatsApp
Product

Midia

Cross-platform task app shipping to macOS, Windows, Android, and iOS from one Tauri 2 + Rust codebase — Supabase sync and encrypted on-device secrets via Tauri Stronghold.

TauriRustSupabase
Product

Contract signing

Contract generation and signing app — Markdown to paginated, signature-ready PDFs with real PKCS#12 digital signatures for both parties, a TipTap clause editor, and Claude-assisted drafting.

Next.jsPKCS#12Claude
Product

Public-tender intelligence platform

Search and alerting platform for Spanish public tenders — XML ingestion from official sources, NextAuth authentication, Stripe subscriptions, and email alert delivery.

Next.jsPrismaMySQLStripe
Tooling

Invoice Agents

LLM-driven browser agents that log into Spanish utility providers and download invoices autonomously — extensible per-provider design over a multi-provider LangChain setup.

PythonLangChainBrowser automation
Product

POI Toolkit

Web suite for parsing, merging, and deduplicating TomTom POI databases fully in-browser, with a NestJS backend for accounts and saved presets.

Next.jsNestJSTypeORM
Tooling

Inbox Companion

Local-first, privacy-focused viewer for exported chat history — SQLite ingestion pipeline, unified cross-platform timeline, search, and waveform audio playback.

ReactSQLiteVite
Prototype

Vexa

Desktop IMAP email client built with Tauri and Rust — secure credential storage and an async IMAP engine, with automation rules and AI summaries on the roadmap.

TauriRustReact
Product

DJ Rocket

Cross-platform DJ player built with Tauri 2 and Rust — waveform rendering, audio metadata engine, and strict architecture guardrails with generated TypeScript bindings.

TauriRustReact
Tooling

DJ Player Deluxe (Raspberry Pi)

Embedded hardware media player for Raspberry Pi — PyQt6 interface, OLED and LED display drivers, Bluetooth pairing, and GPIO control.

PythonPyQt6Raspberry Pi
Tooling

DMX lighting shows

Hand-authored DMX512 fixture profiles and complete multi-fixture QLC+ show setups for live events — custom channel maps for moving-head, wash, and beam fixtures not in the stock library.

DMX512QLC+
Prototype

LiveSalesCoach.ai

Real-time AI sales-coaching product — marketing site and interactive call-workspace prototype with live transcript and sentiment UI.

ReactViteTypeScript
Client work

Minted Assets

TypeScript-tooled Shopify theme for a collectibles storefront, developed and shipped through Shopify CLI and theme-check workflows.

ShopifyLiquidTypeScript
Client work

Osseus

Production WordPress site for a medical-device manufacturer — custom Oxygen and ACF builds with a Dockerized local stack and disaster-recovery backups.

WordPressPHPDocker
Client work

enlima.pe

Long-running events portal for Lima — legacy Drupal 7 stack kept secure and PHP 8-compatible in production.

DrupalPHPMySQL
Tooling

Attendize customization

Customized fork of the open-source Attendize ticketing platform — PDF ticket generation, Omnipay payment gateways, and localization.

LaravelPHPStripe
Open source

RocketUpdater

macOS CLI that updates the entire dev toolchain in one run — Homebrew, npm, Composer, Rust, Conda, and Docker cleanup.

BashmacOS
Tooling

Server toolbox

Operational toolbox for cPanel and WordPress hosting — backup automation, Cloudflare scripting, cron log normalization, and cache management.

BashPHPPython
Tooling

Domain Lab

Naming workspace that generates brand candidates and validates domain availability over RDAP, with shortlist and feedback-driven suggestions.

ExpressReactTypeScript

Start with the right context

I am open to Staff / Senior Staff product roles and long-term contracting engagements. The useful first message is different for each.

Hiring team

Send the role, level, location constraints, interview process, and compensation range if available.

Client engagement

Send the product context, current system, timeline, team shape, and where ownership is missing.