HomeWorkLaboratoryCertificationsBlogLet's Talk

© 2026 Juan Villegas. All rights reserved.

Solutions Architect

    Back

    Let's go CRM — API

    API — asynchronous processing

    NestJS backend of the Vamos CRM: hexagonal architecture that isolates the domain from external sources (Meta, Vamos APIs, the AI model), and an in-memory queue serialized by phone number to respond to the WhatsApp webhook instantly without losing or reordering messages.

    Infrastructure & Backend

    The Challenge

    WhatsApp support depended on external sources the company does not control, such as the Meta API, the driver and trip APIs, and the AI model. Mixing business logic with the formats of those sources meant any external change could break the system, and it also had to respond in real time without losing messages under load.

    The Solution

    Business logic (Conversation, Message, Contact) lives isolated from external sources the company does not control, behind a hexagonal architecture. The webhook responds 200 OK immediately and queues each message behind its own port that serializes by phone number, so no conversation is processed out of order or a message lost under load. On that same foundation run deduplication of Meta retries and contact classification against an external integration configurable from the panel, each behind its own port, replaceable without touching the domain.

    Related project

    Vamos CRM

    Role in the project

    Solutions Architect and Full Stack Dev.

    Tech Stack

    Backend

    NestJS

    Database

    MySQL

    Infrastructure

    Socket.io
    ShareLinkedIn

    Need something similar?

    Let's talk about your project.

    Let's talk