Engineering blog

Notes from the trenches.

Architecture decisions, real numbers and lessons. No generic thought leadership.

Why TRUJO exists (and why now).

Colombian enterprise software built by engineers who understand real operations. No slides. No empty promises. No fabricated tenure.

2026-05-094 min· Juan José Trujillo Cardozo

How to invoice DIAN natively in Colombia with FastAPI + MATIAS API (complete guide 2026)

Real Colombian e-invoicing integration: DIAN OAuth2, 1,122 municipalities synced, retefuente and CUFE handling. Real code from our production stack.

2026-05-1012 min· Juan José Trujillo Cardozo

WhatsApp AI bot for restaurants: complete architecture with Claude + Evolution API

How we built a WhatsApp ordering bot for restaurant clients using Evolution API (Baileys), Claude Haiku, and Redis as conversation state. Real architecture with real numbers.

2026-05-1011 min· Juan José Trujillo Cardozo

Offline biometric control in Colombia: why C# WinForms + DigitalPersona U.are.U is still the right choice in 2026

Over 200 weekly heartbeats from active institutional client locations. Why we chose WinForms over Electron or a webapp, and what we learned deploying in environments with intermittent connectivity.

2026-05-1010 min· Juan José Trujillo Cardozo

PostgreSQL 16 RLS for multi-tenant Colombian SaaS: real isolation, not by-convention

How we implemented Row Level Security in PostgreSQL 16 to isolate tenants at the database level. 29 policies, zero leaks in audit. Real numbers and decisions from the TRUJO stack.

2026-05-109 min· Juan José Trujillo Cardozo

Wompi vs Bold vs Mercado Pago comparison for Colombian SMBs (2026)

Real commission numbers, technical integration, and use cases. Which payment gateway to choose based on your average ticket, volume, and whether you have a Bancolombia account or not.

2026-05-108 min· Juan José Trujillo Cardozo

60+ Docker containers on one server: the architecture that runs TRUJO

No Kubernetes, no rebranded AWS. One VPS in Germany, autonomous AI monitoring every 60 seconds, daily offsite backups, and 2-hour recovery. The real infrastructure, no fluff.

2026-05-168 min· Juan José Trujillo Cardozo

From losing 3 of every 10 orders to zero: digitizing a restaurant that sold over WhatsApp

A restaurant with plenty of demand kept losing orders to a broken process: one phone, paper notes, duplicate deliveries. What changed when we connected WhatsApp, an AI bot, and a POS into one dashboard.

2026-05-217 min· Juan José Trujillo Cardozo

A real restaurant POS: automatic inventory, 2-minute cash close, and multi-site in one panel

A walkthrough of the features that actually move the needle in a restaurant: catalog and orders (counter + WhatsApp), inventory deducted on every sale, cash close without a notebook, and real-time multi-site reports.

2026-05-288 min· Juan José Trujillo Cardozo

Your WhatsApp is not a CRM (but your customers do not know that)

Handling sales from your personal phone, between dinner and Netflix, does not scale. The five things a business should have on WhatsApp and almost none do.

2026-06-046 min· Juan José Trujillo Cardozo

The question is not what automation costs, it is what NOT automating costs you

Four real SMB automations — WhatsApp, reminders, invoice OCR, and cash close — with the hours and money they recover. None of them is science fiction.

2026-06-117 min· Juan José Trujillo Cardozo

Software that works without internet: the offline-first architecture Colombia needs

In Colombia, the internet goes down. If your software depends 100% on connectivity, you have a problem. The four components of an offline-first architecture: encrypted local store, sync queue, conflict resolution, and verified updates.

2026-06-188 min· Juan José Trujillo Cardozo

Why we publish our prices (and why almost no one in software does)

Most software companies hide prices because they want to negotiate based on how big you are and how urgent your need is. We put ours on the web. Here is why.

2026-06-265 min· Juan José Trujillo Cardozo