Case study · B2B SaaS

Your business’s pulse, always answering.

Pulso connects a service business’s WhatsApp and an AI bot books appointments, re-engages customers and handles conversations — on autopilot.

  • RoleDesign, architecture and full-stack development
  • StackGo · Next.js · PostgreSQL · AI
  • StatusWork in progress
Pulso inbox: the bot books an appointment over WhatsApp

The problem

Local businesses lose appointments because nobody can answer every message in time.

A salon, a barbershop or a clinic get dozens of messages a day while they’re busy serving customers. Every message left unanswered in time is an appointment — and a customer — lost to a competitor.

The solution

An employee that never sleeps

Books appointments 24/7

An AI bot chats with the customer, figures out which service they want and books the appointment — at 3am, on holidays, whenever — without anyone at the business lifting a finger.

Re-engages customers

It spots recurring customers who have gone quiet for a while and brings them back with a message at the right moment, before they drift away.

Speaks like your brand

The bot takes on each business’s name, tone and personality. The owner can take over any conversation with a single click.

The product

Built for the owner, not for a techie

Mobile-first, warm language and an inbox that feels like WhatsApp. A custom design system on top of Pulso’s coral brand.

Pulso dashboard with business KPIs
Dashboard — the business at a glance: appointments, customers, re-engagement and bot success rate.
Pulso inbox with the bot chatting
Inbox — the bot chats and books; the owner can take over any conversation whenever they want.

Under the hood

Architecture built to scale

A monorepo with independent backend and panel that talk over REST and WebSocket.

BackendGo 1.25 · Echo · API REST + Worker
Jobs / colasAsynq sobre Redis 7
DatosPostgreSQL 16
FrontendNext.js 15 · Tailwind · shadcn/ui
WhatsAppMeta Cloud API / 360dialog (BSP)
IALLM intercambiable (Gemini · GPT-4o · Deepseek)
AuthClerk
InfraDigitalOcean · Cloudflare Pages

Engineering decisions

No overbooking, enforced by the database

Appointments can’t overlap thanks to a PostgreSQL exclusion constraint: the rule lives in the engine, not in application code, so it’s impossible to book two appointments at the same time even if they arrive at once.

Decoupled messaging channels (ports & adapters)

WhatsApp today, but the bot logic knows nothing about WhatsApp. A channel abstraction lets me plug in Instagram or Telegram tomorrow without touching the core.

Credentials encrypted at rest

Each business’s WhatsApp tokens are stored encrypted, never in plain text. Authentication stays protected even against a misconfiguration.

Swappable LLM by configuration

The AI provider changes with a single environment variable. No lock-in to one vendor: I tune cost and quality without rewriting anything.

Current status

Work in progress — and honest about it

✓ Already built

  • REST API and job worker in Go
  • Multi-tenant authentication with Clerk
  • WhatsApp Business connection (onboarding)
  • Overbooking prevention at the DB level
  • Credentials encrypted at rest
  • Web panel with the full design system

→ On the way

  • AI conversational engine for the bot
  • Automatic customer re-engagement
  • Real-time inbox (WebSocket)
  • Business metrics and reports

One of the projects I’m building right now.

If you’re into what I do or want to talk about a project, let’s chat.

Get in touch →