Case study / Team

Recapito: business conversations on WhatsApp, in real time

A shared inbox for customer conversations, updated in real time and open to integration with other products.

Role
Head of Product, shared foundations, integration into UnigestPro
Team
The team built the core; I worked on the shared foundations
Status
In development
Stack
  • React
  • TypeScript
  • Laravel
  • Node.js
  • WebSocket
  • Redis
  • AWS S3 · SQS

The problem

Many small and medium-sized businesses talk to their customers on WhatsApp, often from a single phone. As conversations grow, they need several people on the same number, clear rules on who replies, a shared history and a way to connect conversations to their other business tools.

Recapito grew out of the chat that used to live inside UnigestPro: we turned it into a standalone product, with a stable API so it can also be integrated into third-party systems.

Context and team

Recapito is a product of the company I work for, still being built, and I’m its Head of Product. On the technical side, the core (channels, shared inbox, campaigns, automations) was built by other members of the team. I worked on the foundations Recapito shares with the other products, and on its integration into UnigestPro.

My contribution

  • Adopting the shared file standard: direct uploads to S3 and previews generated by the common worker.
  • Separate queues and storage per environment.
  • The common design system and the shared frontend utilities.
  • The common password rule: at least 12 characters, rejecting leaked passwords and the user’s personal data.
  • The integration into UnigestPro, where Recapito appears as a service with native pages and the API token never reaches the browser.

Design choices

The database decides, the socket notifies

Real time is a separate Node.js service, because holding many WebSocket connections open is a different job from answering HTTP requests. But the socket is not the source of data: it tells the client that something has changed, and every screen can always be rebuilt from the API. Multiple instances of the service share Redis, with no need for sessions tied to one server.

No event gets lost

The state change and the event to publish are written in the same transaction; a separate process then delivers them to the real-time service and the webhooks. Messages, upload confirmations and webhook deliveries are idempotent: arriving twice doesn’t produce double effects.

A modular monolith

The backend is a single Laravel application split into modules by domain. Starting with many microservices would have multiplied the operational work without a real benefit at this stage. Calls to Meta go through dedicated queues and don’t slow down the interface.

Measuring conversions

WhatsApp Flow forms built in Recapito can send conversions to GA4, server-side Google Tag Manager and Google Ads: a conversation becomes a measurable result.

Outcome and status

Recapito is in development. Today it handles WhatsApp Business and Telegram with a shared inbox, roles, templates, consent-based campaigns, automations and real-time statistics. It exposes a documented API and signed webhooks, and it is integrated into UnigestPro as a service.

Other projects

Contact

Got a product
to build?

Tell me about the problem, the context and where you want to go. I’ll reply with precise questions and a concrete proposal.

Tell me about your projectConnect on LinkedInGitHub

ciao@giovannibevacqua.com