Caracas, Venezuela · GMT-4 · overlaps US hours

I build the systems
a business is
still doing by hand.

WhatsApp agents on Meta's official Cloud API — not a reseller wrapper. Self-hosted n8n automation with error logging and retries. Multi-tenant panels where the isolation is enforced in Postgres, not in application code you'd have to take on faith.

Everything below runs in production or has a client paying for it. The screenshots are the real screens, not mockups.

403
commits across 7 repositories
6
systems in production
530 ms
measured ingestion latency
$0–15
real cost per client, per month
Work

What's already running

Each one solved a concrete problem for a real business. Where there's a link, open it and check for yourself.

CuotaAlDía: landing page of the condominium billing SaaS, showing a collections dashboard and a WhatsApp conversation
In production

CuotaAlDía

Billing SaaS for residential buildings. Splits monthly expenses across units by ownership share, bills in both USD and the local currency with partial payments, and reconciles bank transfers by reading the receipt the resident sends over WhatsApp.

Reconciliation is the point: the resident sends a photo of the payment receipt and the system matches it against the right invoice. Nobody retypes a number.
Next.jsVision OCRWhatsAppDual currency
Live quoting engine: service line and package selectors, with the budget and free-tier alert recalculating instantly
In production

Quoting engine with a cost guard

The calculator I use to build a quote while I'm still talking to the client. Move the options and the total recalculates on the spot, alongside an alert telling me whether that client still fits inside the providers' free tiers.

The decision that matters: prices come from a single price book, never from a copy someone edited on the side. Change a price in one place and every quote reflects it — there is never a second version of the truth.
Next.jsCentral price bookCloudflare
Klass28 Spa: the spa's website with appointment booking
In production

Klass28 Spa

Website and back-office for a spa in Caracas: daily schedule, cash close, inventory and Instagram lead capture, with a bot that answers and books appointments without a human in the loop.

The bot isn't a menu tree: it answers from the business's real data — services, prices, hours — and hands off to a person the moment the client asks for one.
Next.jsAI agentInstagramScheduling
Quantity takeoff calculator following the COVENIN 2000-92 standard, with coded line items and a summary by chapter
Open demo

Construction quantity takeoff

Enter the dimensions of a structure and it returns the line items already coded to the COVENIN 2000-92 standard, with waste factors applied and a summary by chapter. Exports to CSV for the estimate.

This comes from my other half: civil engineering at UCAB. It's the kind of calculation that in most offices lives in an inherited spreadsheet nobody dares to touch. Interface in Spanish — the standard is Venezuelan.
COVENIN 2000-92CalculationCSV export
Brasa & Humo: steakhouse site with a cuts carousel and a filterable menu
In production

Brasa & Humo

High-end charcoal steakhouse. A cuts carousel navigable by drag, click and keyboard, and a filterable menu with cooking temperature and provenance per dish.

Keyboard-navigable from day one — not bolted on as an accessibility patch at the end, because a carousel that only responds to dragging is broken for a large share of the people using it.
Next.jsScroll animationVercel
The Forge AI: landing page of the platform I run my own business on
In production

The Forge AI

The platform I run my own business on: quoting engine, CRM, a visit route ordered by what makes a visit worth making today, an agent engine, and the field manual the team works from.

Self-hosted n8n on Cloud Run, with Gemini on Vertex and Groq. Real cost to operate a client runs between $0 and $15 a month — and that figure is an output of the architecture, not an accident.
Self-hosted n8nCloud RunGemini · VertexGroq
Client systems

No screenshots, out of respect for the data

These two sit behind authentication and the screens carry their owners' data. I don't publish them. What I can give you are the verifiable numbers.

Client · private panel

Records panel

Email infrastructure: catch-all ingestion over IMAP, field extraction from message bodies, and a multi-tenant control panel. 6 tables with RLS active on all of them, 13 policies and 5 triggers. Verified with 7 idempotency smoke tests running against the real database — not a local copy — plus 24 extractor tests. Ingestion measured at 530 ms from an edge function.

Client · private panel

Forge Commerce

A storefront the owner runs herself. She uploads a phone photo, AI cleans the background for about 4 cents, and she publishes. The decision that matters: the public storefront is static HTML and never touches the database, so a free-tier pause on Supabase can't take a paying client's store offline.

How I build

Four decisions I make every time

These aren't style preferences. They're what decides whether the system holds up once the client actually depends on it.

01

The model never invents a hard value

A price, a catalog reference or a balance comes from a table, not from what the model remembers. The AI maps and classifies; the database supplies the number. Anything the model can't match above a confidence threshold lands on a review queue — because a gap you can see beats a wrong price you can't.

02

Isolation belongs in the database, not the code

Multi-tenancy with row-level security enforced in Postgres. If isolation lives in application code, it depends on nobody ever forgetting a where clause again. In the database, the engine guarantees it even when the query is written badly.

03

Idempotency before retries

Everything that comes in carries an idempotency key, so a resent message updates rather than duplicates. Retries and error logging are designed in from the start, not bolted on after it has already failed in production.

04

Cost is a design constraint

Narrowing retrieval before the model call isn't an elegance: on a system with dozens of agents, sending full context on every call compounds into real money. That's why I operate clients at between $0 and $15 a month.

How I charge. Fixed price agreed before I start, never hourly — you shouldn't pay more because I was slow. Half up front and half on delivery, so neither of us is exposed. Anything a third party bills, like Meta's message fees or telephony minutes, is passed through at cost with no hidden markup.

One line I don't cross. I don't build software that issues tax invoices in Venezuela. SENIAT's Providencia 121 regulates whoever builds the system, not just whoever uses it, and putting a client there without certification makes it their problem later.

Contact

What does your team still do by hand every day?

Tell me and I'll say whether it's worth automating. If it isn't, I'll say that too — I'd rather do that than sell you something you don't need.